LoginSignup
1
1

More than 1 year has passed since last update.

GCPのCloud DeployをCloud Buildから呼び出すときにエラーになる(ACTAS_PERMISSION_DENIED)

Last updated at Posted at 2022-03-18

GCP環境で主にGKEのCI/CDをやろうとしたときに軽くハマったのでメモ的に書きます。

Cloud Deployとは

主にGKE(Google Kubernetes Engine)へのコンテナイメージのデプロイに利用します。
CI/CDで言うとCD(Continuous Delivery)にあたります。

Kubernetesでは良くCIとCDを分けて考えられるのですが、ArgoCDなどをインストールしなくても、コンテナイメージを動作環境に合わせてプロモート出来るのが最大の魅力と考えます。

(参考)
https://cloud.google.com/blog/ja/products/devops-sre/google-cloud-deploy-automates-deploys-to-gke

Cloud Buildとは

GCP上で様々なタスクを実行するためのサービス。Github Actionsのようなもの
コンテナイメージのビルドも出来る。

Cloud Deployを使うなら、Cloud Buildと連携してGCP内でCI/CDを完結させたいというモチベーションは高い。

本題のエラーについて

設定して使ってみたところ、Cloud Buildから以下のような感じで Cloud Deployを実行する際にエラーになる
それぞれの設定はダミーです。

実行内容

  - name: gcr.io/google.com/cloudsdktool/cloud-sdk
    entrypoint: gcloud
    args:
      [
        "deploy", "releases", "create", "rel-${SHORT_SHA}",
        "--delivery-pipeline", "${_PIPELINE_NAME}",
        "--region", "${_COMPUTE_ZONE}",
        "--source", "hoge.yaml",
        "--images", "app=$_IMAGE_NAME:$COMMIT_SHA"
      ] 

エラー

domain: clouddeploy.googleapis.com
metadata:
  serviceAccount: xxxxxxxx-compute@developer.gserviceaccount.com
  reason: ACTAS_PERMISSION_DENIED

解決策

Cloud Buildを実行させるサービスアカウント
xxxxxxxx@cloudbuild.gserviceaccount.com
に権限を追加する。

NGだった

カスタムロールを作成して
iam.serviceAccounts.actAs
を入れておけば良いかなと思ったがNG

OKだった

Editor権限を追加したらうまくいった(調査中)
(IAMで足りていない権限を見ていくと
container.clusters.getCredentials
あたりが怪しいのではないか)

所感

Cloud Deployがすごく便利なので、是非試してみて欲しいです。

(参考文献)
https://medium.com/google-cloud-jp/cloud-deploy-%E5%AE%9F%E8%B7%B5%E7%B7%A8-ci-%E3%81%A8%E3%81%AE%E9%80%A3%E6%90%BA-c22a6bc96286

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1