以下の仕組みを実現します。
- アプリケーションのコードを GitHub にプッシュすると、GCP の Cloud Build が自動で実行されます
- GCP の Cloud Build の処理でアプリケーションの Docker イメージを作成します
- GCP の Cloud Build の処理で GCP の Container Registry に作成した Docker イメージをプッシュします
- GCP の Cloud Build の処理で GitHub のマニフェストリポジトリの Docker イメージタグを更新してプッシュします
- ArgoCD がマニフェストリポジトリの変更を検知して自動で Sync します
準備
アプリケーション用のリポジトリを GitHub に用意しておきます
ArgoCD のマニフェスト用のリポジトリを GitHub に用意しておきます
go-hello/base/kustomization.yaml
1 |
|
go-hello/base/deployment.yaml
1 |
|
go-hello/overlays/develop/deployment.yaml
1 |
|
go-hello/overlays/develop/kustomization.yaml
1 |
|
GKE に ArgoCD をインストールしておきます
https://argoproj.github.io/argo-cd/
admin のパスワードの確認方法
1 |
|
ポートフォワードでアクセスする方法
1 |
|
本題
GitHub と Cloud Build の連携
GitHub マーケットプレイスで Google Cloud Build を有効にします
https://github.com/marketplace/google-cloud-build
GCP のトリガーリストビューでCONNECT REPOSITORY(リポジトリを接続)
をクリックしてトリガーを設定します
https://console.cloud.google.com/cloud-build/triggers
Cloud Build の処理で Docker イメージを作成して ContainerRegistry にプッシュします
1 |
|
Cloud Build の処理でマニフェストリポジトリのイメージタグを更新してプッシュします
まずは CloudBuild 上で GitHub のリポジトリをアクセスできるように設定します
https://cloud.google.com/build/docs/access-private-github-repos#costs
手順の流れは以下の通り
- ローカルで SSH Key を作成する
- 作成した公開鍵を GitHub のマニフェストリポジトリに設定する。このとき書き込み権限を設定すること
- 作成した秘密鍵を GCP の Secret Manager に設定する。シークレット名をメモしておく
- GCP に登録したシークレットの設定を cloudbuild.yaml に追記する
Secret Manager はこちら
https://console.cloud.google.com/security/secret-manager
1 |
|
ArgoCD の自動 Sync
ENABLE AUTO-SYNC
すればよいだけなので省略します
参考にさせてもらったページ
https://qiita.com/hayashiki/items/c7ee780f8b4afde38a53
https://cloud.google.com/build/docs/access-private-github-repos#costs