Slide 1

Slide 1 text

© 2023 Bitkey Inc. リリース速度10倍を実現したビットキー流DevOps - Argo CD との付き合い方 - 株式会社ビットキー 大高 浩太郎 2023/12/12

Slide 2

Slide 2 text

2 Copyright © 2023 Bitkey Inc. All right reserved. Outline 1. 自己紹介 2. ビットキー 3. 開発組織とアーキテクチャ 4. bitkey platform:BKP 5. ビットキー流 DevOps 6. ゼロから構築し破棄する Argo CD 環境 7. 今後の展望・まとめ

Slide 3

Slide 3 text

3 Copyright © 2023 Bitkey Inc. All right reserved. 1. 自己紹介

Slide 4

Slide 4 text

4 Copyright © 2023 Bitkey Inc. All right reserved. 自己紹介 大高 浩太郎  Kotaro Otaka 2020.04 2022.11 新卒社会人として Web業界にてエンジニア人生開幕 AWS Lambda など Serverless による開発を経験 株式会社ビットキーへジョイン Google Cloud を活用した デジタルキーを管理するプラットフォーム開発 認証認可なども実装 2023.12 Platform & Subsystems BKP & HubCoreModule 2023年 ベストバイアイテム Dygma Raise Dygma Raise 2 が発売されるとか... @otakakot
 @otakakot


Slide 5

Slide 5 text

5 Copyright © 2023 Bitkey Inc. All right reserved. 2. ビットキー

Slide 6

Slide 6 text

6 Copyright © 2023 Bitkey Inc. All right reserved.

Slide 7

Slide 7 text

7 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー 創業  :2018年8月  従業員数:約230名 開発者数:約80名 事業  :デジタルコネクトプラットフォームの      企画・設計・開発

Slide 8

Slide 8 text

8 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー 根底にあるのは Connect Everything という思想

Slide 9

Slide 9 text

9 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー “人々の生活すべてを対象に” 3つの事業を推進 暮らし 働く 非日常 ※ 企画構想中

Slide 10

Slide 10 text

10 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー ソフトウェアの領域を超えてリアルとデジタルの「分断」を解消

Slide 11

Slide 11 text

11 Copyright © 2023 Bitkey Inc. All right reserved. 3. 開発組織とアーキテクチャ

Slide 12

Slide 12 text

12 Copyright © 2023 Bitkey Inc. All right reserved. 開発組織とアーキテクチャ 組織 プロダクト ビジネス 横断的プロダクト開発 経営チーム / 横断機能組織 事業組織 プロダクト プラットフォーム開発 ビジネス 横断的リレーションシップ構築 コーポレート機能 ファームウェア開発 SRE‧CRE ハードウェア開発 UI / UXデザイン サプライチェーン コーポレートブランディング PR クリエイティブ デザイン 財務‧経理 / 法務‧知財 ⼈事‧総務 / 情報システム リクルーティング カルチャー Board Member プロジェクトマネジメント カスタマーサクセス アライアンス ビジネスマーケティング セールス WEBアプリ開発 モバイルアプリ開発 プロダクトマネジメント QA‧テスティング プロダクトブランディング プロジェクトマネジメント カスタマーサクセス アライアンス ビジネスマーケティング セールス WEBアプリ開発 モバイルアプリ開発 プロダクトマネジメント プロダクトブランディング Home Workspace

Slide 13

Slide 13 text

13 Copyright © 2023 Bitkey Inc. All right reserved. 開発組織とアーキテクチャ アーキテクチャ

Slide 14

Slide 14 text

14 Copyright © 2023 Bitkey Inc. All right reserved. 開発組織とアーキテクチャ ビットキーのアーキテクチャ

Slide 15

Slide 15 text

15 Copyright © 2023 Bitkey Inc. All right reserved. 4. bitkey platform:BKP

Slide 16

Slide 16 text

16 Copyright © 2023 Bitkey Inc. All right reserved. bitkey platform:BKP bitkey platform:BKP ▪ビットキーに関わる ヒト・モノ・コト を管理するシステム ▪ヒト … ビットキーアカウントや組織管理 認証認可を独自で作成 OIDC や SAML 連携も可能 ▪モノ … ビットキーデバイスや仮想的に作りだす鍵穴、そしてデジタルキー ▪コト … モノの取引 ▪ ほかにも … ▪ 顔情報の管理 … 顔認証に利用する特徴量抽出やその管理 ▪ メッセージ配信 … 認証や組織への招待で利用 ▪開発者は私を含め3名体制

Slide 17

Slide 17 text

17 Copyright © 2023 Bitkey Inc. All right reserved. bitkey platform:BKP 技術

Slide 18

Slide 18 text

18 Copyright © 2023 Bitkey Inc. All right reserved. bitkey platform:BKP アーキテクチャ 今日話すところ

Slide 19

Slide 19 text

19 Copyright © 2023 Bitkey Inc. All right reserved. 5. ビットキー流 DevOps

Slide 20

Slide 20 text

20 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps Argo CD ▪ アルゴプロジェクトのひとつ ▪ Argo CD ▪ Argo Workflow ▪ Argo Rollouts ▪ Argo Events ref: https://argo-cd.readthedocs.io/en/stable/ ▪ Argo CD ▪ Kubernetes のための GitOps に則った CD (Continuous Delivery) ツール  -> デプロイ自動化ツール

Slide 21

Slide 21 text

21 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps GitOps ▪ Git リポジトリを信頼できる唯一の情報源として使用 ▪ インフラとアプリケーションを管理する手法 ▪ Argo CD を使うと Git で管理している Kubernetes マニフェストの状態となるように  (自動で)環境に適応が可能 ref: https://www.weave.works/technologies/gitops/

Slide 22

Slide 22 text

22 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps ブランチ戦略 ▪ GitHub Flow に近い形 を目指す ▪ 利用するブランチは main と feature/xxxx main feature/xxx Pull Request

Slide 23

Slide 23 text

23 Copyright © 2023 Bitkey Inc. All right reserved. ▪ 方法 全てがスクリプトで完結するわけではなく手作業も必要 ▪ 時間 ▪ だいたい2時間程度 ビットキー流 DevOps Before Argo CD

Slide 24

Slide 24 text

24 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps After Argo CD ▪ 方法 GitOps による自動リリース ▪ 時間 ▪ 開発環境 0 分 ▪ ステージング・本番環境 約 5 分

Slide 25

Slide 25 text

25 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps なぜ Argo CD ??? ▪ 移行が決断できた大きなきっかけは StatefulSet の廃止 ▪ そのまま Jenkins × Helm でもよかったが Argo CD にチャレンジ ▪ StatefulSet の廃止で GitOps の恩恵を受けることができそう ▪ Kubernetes 初心者だった私としてもGUIはユーザーフレンドリーで好感触

Slide 26

Slide 26 text

26 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps Argo CD との付き合い方 ▪ How it Works ▪ kustomize applications ▪ helm charts ▪ jsonnet files ▪ Prain directory of YAML/json manifests ▪ Any custom config management tool configured as a config management plugin ref: https://argo-cd.readthedocs.io/en/stable/#how-it-works

Slide 27

Slide 27 text

27 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps Helm charts ▪ Kubernetes 用のパッケージマネージャー ▪ 公開されているチャートの利用 ▪ Argo CD ▪ Datadog Agent ▪ 独自構築のチャート利用 ▪ BKPのアプリケーション構築 ▪ テンプレートを利用した環境ごとの値管理 ref: https://helm.sh/

Slide 28

Slide 28 text

28 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps ディレクトリ構成 ▪ manifest を管理するリポジトリ ▪ argocd/apps ... Argo CD で アプリケーションを管理するための manifest ▪ 監視対象のアプリケーションをどうやってデプロイするか(ex:helm)を記載 ▪ charts ... helm charts でアプリケーションを管理するための manifest ▪ アプリケーションがどのようにオーケストレーションされるかを記載 ▪ scripts ... Argo CD への apply と login のスクリプト ▪ argocd command を使いやすくするように記述 ▪ 誤って別環境へのデプロイを防止

Slide 29

Slide 29 text

29 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps BKPの環境 ▪ 開発環境 ▪ BKPチームの開発環境 ▪ アプリケーションリポジトリ main マージで即デプロイ ▪ デイリーでE2Eテストを実行 ▪ ステージング環境(社内開発者への開発およびステージング環境) ▪ ビットキー社内向け環境 ▪ デイリーでデプロイ ただし、E2Eが失敗していた場合はスキップ ▪ 本番ミラー環境 ▪ ウィークリーで構築 ▪ 本番リリース前の最終動作確認に使用 ▪ 本番環境

Slide 30

Slide 30 text

30 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps 環境ごとの設定 ▪ velues.yaml + values-${env}.yaml ▪ Argo CD の application manifest  apply するときに該当の環境を指定

Slide 31

Slide 31 text

31 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps Argo CD への適応 ▪ Argo CD でアプリケーションを管理する manifest はプレーンに近い管理 ▪ 動的に変更したい値は envsubst を用いて環境やブランチ名を切り替えて対応 ▪ 初回デプロイやブランチ変更を実施したい場合に下記のようなコマンドを実行

Slide 32

Slide 32 text

32 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps 開発環境

Slide 33

Slide 33 text

33 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps ステージング環境

Slide 34

Slide 34 text

34 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps 本番ミラー環境 「ゼロから構築し破棄する Argo CD 環境」 にて解説します!

Slide 35

Slide 35 text

35 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps 本番環境

Slide 36

Slide 36 text

36 Copyright © 2023 Bitkey Inc. All right reserved. ビットキー流 DevOps ビットキー流 DevOps のいいところ ▪ 開発環境は勝手に自動でデプロイ ▪ ステージング環境もGUIで簡単にデプロイ可能 ▪ 本番環境もステージング環境と同様の作業で完了 ▪ ロールバックもGUIで簡単に

Slide 37

Slide 37 text

37 Copyright © 2023 Bitkey Inc. All right reserved. 6. ゼロから構築し破棄する Argo CD 環境

Slide 38

Slide 38 text

38 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 週次リリースで必要となるミラー環境 ▪ なぜ必要になったのか インフラ維持費が高い ▪ 以前は起動しっぱなし ウィークリーでしか使わないのに ▪ 開発環境やステージング環境は性能が低いインスタンスや安価なpreemptibleを活用 ▪ 本番ミラー環境は本番環境同等のインスタンスを利用 無駄!!!

Slide 39

Slide 39 text

39 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 前提:リポジトリ管理 大きく 3種類 のリポジトリが存在 ▪ manifest リポジトリ ▪ Kubernetes 管理 ▪ application リポジトリ ▪ 複数存在します。ほんとうはモノレポにしたい ▪ terraform リポジトリ ▪ Google Cloud のインフラ管理

Slide 40

Slide 40 text

40 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 2つの流れ 1. リリース用のPRを作成 2. 最終検証用の本番ミラー環境を構築。そして破棄。

Slide 41

Slide 41 text

41 Copyright © 2023 Bitkey Inc. All right reserved. ステップ1:特定の時刻 に application リポジトリにてジョブを起動 ステップ2:application リポジトリ に対してタグを作成 ステップ3:application リポジトリにてタグ作成をトリガーにジョブが起動 ゼロから構築し破棄する Argo CD 環境 流れ1:リリース用のPRを作成

Slide 42

Slide 42 text

42 Copyright © 2023 Bitkey Inc. All right reserved. 1. repository-dispatch にて manifest リポジトリのジョブを起動 2. リリース用のブランチおよびPRを作成 ゼロから構築し破棄する Argo CD 環境 ステップ1:特定の時刻 に application リポジトリにてジョブが起動

Slide 43

Slide 43 text

43 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 ステップ2:application リポジトリ に対してタグを作成 1. 各アプリケーションリポジトリに対して release-yyyy-mm-dd-x タグを作成

Slide 44

Slide 44 text

44 Copyright © 2023 Bitkey Inc. All right reserved. 1. コンテナをビルド 2. コンテナをプッシュ 3. 該当のアプリケーションの manifest を repository-dispatch にて更新 ゼロから構築し破棄する Argo CD 環境 ステップ3:application リポジトリにてタグ作成をトリガーにジョブが起動

Slide 45

Slide 45 text

45 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 流れ2:最終検証用の本番ミラー環境を構築。そして破棄。 ステップ1:特定の時刻 に terraform リポジトリにあるミラー環境を構築するジョブを起動 ステップ2:manifest リポジトリにあるミラー環境にアプリケーションをデプロイするジョブを起動 ステップ3:特定の時刻 に terraform リポジトリにあるミラー環境を破棄するジョブを起動 ステップ1 ステップ2 ステップ3

Slide 46

Slide 46 text

46 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 ステップ1 ▪ 特定の時刻 に terraform リポジトリにあるミラー環境を構築するジョブを起動 ▪ terraform apply するだけ

Slide 47

Slide 47 text

47 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 ステップ2 ▪ manifest リポジトリにあるミラー環境にアプリケーションをデプロイするジョブを起動 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 48

Slide 48 text

48 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd Command Reference ▪ Argo CD サーバーへのコマンドドキュメント ▪ ブックマーク必須 ▪ 各種コマンドを丁寧に解説 ref: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd/

Slide 49

Slide 49 text

49 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd install ▪ Argo CDをインストール ▪ GUIなどが存在しないコアコンポーネントだけをインストールすることも可能 ref: https://argo-cd.readthedocs.io/en/stable/getting_started/ 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 50

Slide 50 text

50 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd login ▪ Argo CD へとログインするためのコマンド ▪ Argo CD へとコマンド実行するために必須 ▪ [SERVER] は kubectl port-forward でポートを解放し接続 ref: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_login/ 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 51

Slide 51 text

51 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd proj create ▪ Argo CD で管理するためのプロジェクトを作成するコマンド ▪ プロジェクトはアプリケーションの論理的なグループを管理 ▪ BKPはとくにグループわけしていないのでひとつだけ作成 ref: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_proj_create/ 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 52

Slide 52 text

52 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd proj add-destination ▪ Argo CD プロジェクトへ Kubernetes の destination (宛先:namespace) apply を許可するコマンド ref: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_proj_add-destination/ 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 53

Slide 53 text

53 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd proj allow-cluster-resource ▪ Argo CD プロジェクトへ Kubernetes リソースへのアクセスを許可するコマンド ref:https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_proj_allow-cluster-resource/ 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 54

Slide 54 text

54 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd proj add-source ▪ Argo CD プロジェクトへ特定のGitリポジトリへのアクセスを許可するコマンド ref: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_proj_add-source/ 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 55

Slide 55 text

55 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd repo add ssh-private-key ▪ Argo CD プロジェクトへ追加した Git リポジトリへの接続情報を設定するコマンド ▪ 事前にキーペアを準備し GitHub に保存 ref: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_repo_add/ 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 56

Slide 56 text

56 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 kubectl apply ▪ Argo CD へ application の管理 manifest を適用する 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 57

Slide 57 text

57 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd app sync ▪ Argo CD へとアプリケーションを同期するように指示するコマンド ▪ 個別にアプリケーション名を指定したり argocd app list で一覧取得して for で回して実行 ref: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_sync/ 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 58

Slide 58 text

58 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 argocd app list ▪ Argo CD で管理されているアプリケーションの一覧を取得するコマンド ▪ Sync や Healthy といった状態も取得できる ▪ -o json オプションにて json 形式で出力し jq にて加工して使う ref: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_list/ 1. Argo CD を Kubernetes にインストール 2. Argo CD に login する 3. Argo CD の project を作成する 4. Argo CD の project に add-destination する 5. Argo CD の project に allow-cluster-resource する 6. Argo CD の project に add-source する 7. Argo CD の project に add ssh-private-key する 8. Argo CD の project に監視対象ブランチを release-yyyy-mm-dd-x に設定して apply する 9. Argo CD の application を sync する

Slide 59

Slide 59 text

59 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 ステップ3 ▪ 特定の時刻 に terraform リポジトリにあるミラー環境を破棄するジョブを起動 ▪ 破棄したいリソースを指定して terraform destroy を実行

Slide 60

Slide 60 text

60 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 Argo CD のいいところ ▪ GUIによる操作 ▪ インフラの状態が可視化される ▪ Kubernetes キャッチアップ中の  私にとって大きなメリット ▪ CUIによる自動化 ▪ Argo CD 環境構築に使える(再現性) ▪ (重要) ドキュメントがイケてて読みやすい ref: https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd/ ▪ 他ツールとの比較などは未実施 ▪ Flux ▪ PipeCD

Slide 61

Slide 61 text

61 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 GitHub Actions で調整してて思ったツラミや雑感 ツラミ ▪ 調整・動作確認が超めんどくさい ▪ 環境構築して破棄しての連続 ▪ コンソールからリソース消しても大丈夫かな?挙動変わっちゃうかな? ▪ 30分から1時間は待ちが発生 ▪ 待ち時間に作業はできるけどすぐ確認したい ▪ GitHub Actions に関しては別のGitHubリポジトリにて簡易的に検証 ▪ ミラー環境構築が安定しなかったときにはミラー環境が構築できずリリースをスキップ

Slide 62

Slide 62 text

62 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 GitHub Actions で調整してて思ったツラミや雑感 雑感 ▪ GitHub Actions でフローを作っているときは楽しいけど忘れる ▪ フロー図とかがないとなにをしているかわからなくなる ▪ ドキュメントほんと大事 ▪ 社内勉強会でリリースについて共有する機会があったのでそのとき作成 ▪ 無理やりでもそういう機会を作ってドキュメントを作成 ▪ この資料もある種のドキュメント! ▪ このフローに至るまでも紆余曲折が... ▪ このあと 株式会社ビットキー Developer Advent Calendar 2023 公開予定!

Slide 63

Slide 63 text

63 Copyright © 2023 Bitkey Inc. All right reserved. ゼロから構築し破棄する Argo CD 環境 GitHub Actions で調整してて思ったツラミや雑感 雑感 ▪ yaml ファイルを操作する yq コマンドが2種類存在 ▪ kislyuk/yq ▪ mikefarah/yq ▪ オプションだったりの挙動が若干違うので困る ▪ 可能なら yaml じゃなくて json にして jq 使う ▪ どうしても yq を使うなら mikefarah/yq を使う ▪ why? GitHub Actions での runner image にインストールされているから ▪ ref: Ubuntu 22.04 README.md

Slide 64

Slide 64 text

64 Copyright © 2023 Bitkey Inc. All right reserved. 7. 今後の展望・まとめ

Slide 65

Slide 65 text

65 Copyright © 2023 Bitkey Inc. All right reserved. 今後の展望・まとめ 困りごと ▪ マイグレーションジョブの設定 ▪ auto sync がうまく動かせていない ▪ force オプションで実行 ▪ アプリケーション管理が単一のレポジトリではないのでミラー環境構築のフローが複雑 ▪ リポジトリはどうやって管理していますか? ぜひ、議論しませんか!?

Slide 66

Slide 66 text

66 Copyright © 2023 Bitkey Inc. All right reserved. 今後の展望・まとめ 今後の展望 ▪ リリースタイミングを簡単に調整したい ▪ GitHub Actions でクーロンを設定しているが調整しづらい ▪ ミラー環境へのE2Eテストが自動化できていない ▪ 最初は GitHub Actions でトリガー引いてたけどタイミングを失ってやめた ▪ いまは手動実行している ▪ ミラー環境での検証って本当に必要?ほかによいリリース方法ってない? ▪ Blue Green デプロイ ▪ カナリアリリース ▪ 厳密なリリース順番を自動で担保したい ▪ 本番環境は Auto Sync ではないのでそれぞれ Sync ▪ Argo CD には Apps of App パターンがある ref:https://argo-cd.readthedocs.io/en/stable/operator-manual/cluster-bootstrapping/#app-of-apps-pattern

Slide 67

Slide 67 text

67 Copyright © 2023 Bitkey Inc. All right reserved. 今後の展望・まとめ まとめ ビットキー流 DevOps として環境ごとの運用方法を紹介 Argo CD は Argo CD CLI と GitHub Actions を組み合わせることで 簡単に何度でも 構築可能 みなさんも Argo CD と付き合ってみませんか? ♡

Slide 68

Slide 68 text

68 Copyright © 2023 Bitkey Inc. All right reserved. 今後の展望・まとめ We Are Hiring ! 職種の一例としては... 1. PdM 2. EM 3. SE(WEB、モバイル) 4. SRE 5. UI/UXデザイナー … など、様々なポジションで募集中です! ご興味があれば右のQRコードまたは、 X(Twitter): @otakakot までお気軽に Go 連絡ください! わたしたちは、ともに働く仲間を募集しております!

Slide 69

Slide 69 text

69 End of File Copyright © 2023 Bitkey Inc. All right reserved.