やりたいこと
GCP上でGCRは環境毎にProjectを分けている(project-stgとproject-pro)とする。
生成するDockerImageはSTG/PRO共通のためどちらのGCRにもPUSHしたい。またはproject-proのImageを作成するときにproject-stgのImageをPullしてきたいとする。
要は、Container Builder上でProject跨ぎでGCRからpull / pushしたい時にどうすれば解決できるか。ということ。
また、Projectは同一組織配下にあるとする。
対応策
1.IAMの確認
Container Builderの設定をしているProject(今回はproject-proとする)で、Cloud Container BuilderのCloud COntainer Builder権限(ビルドを実行できる権限)のIAMがあることを確認する。
Cloud Builder を使用していれば。RoleがCloud Container Builderのサービスアカウントがあるはず。
[ID]@cloudbuild.gserviceaccount.comというIAMがあるはずなのでコピーしておく。
なければ Cloud Container Builderの権限を持っているサービスアカウントを使えばOKなはず(未検証)
2. project-stgでIAM追加
1で確認したIAMをproject-stgのIAMに追加する。
GCRの権限は以下を参考にする。
https://cloud.google.com/container-registry/docs/access-control?hl=ja
pushが必要であれば storage.adminが必要なのでストレージ管理者をIAMに割り振っておく。
pullだけで良ければオブジェクト閲覧者をつけておけば良さそう。
上記でContainre Builder上から別ProjectのImageをPull/Push出来るようになる。
各環境で共通のイメージの場合は1回で出来るようになるので便利