LoginSignup
0
0

Google App Engineのデプロイに必要なサービスアカウントを用意する

Last updated at Posted at 2023-12-30

概要

掲題の通りです。いつも忘れるんで、備忘として記述してます。

想定

Github Actions (みたいなCI)でGoogle App Engineにデプロイするためのサービスアカウントを作ります。

結論

以下で作成する。

# 変数
EXPORT PROJECT_ID=[プロジェクトID]
EXPORT SERVICE_ACCOUNT_ID=[サービスアカウント名] #例: ci-deploy とか

# サービスアカウントの作成
$ gcloud iam service-accounts create ${SERVICE_ACCOUNT_ID} \
  --description="Use to CI Deploy" \
  --display-name="CI Deploy" \
  --project ${PROJECT_ID}

# 必要なロールの設定
$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \
   --member="serviceAccount:${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com" \
   --role="roles/appengine.deployer"

$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \
   --member="serviceAccount:${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com" \
   --role="roles/appengine.serviceAdmin"

$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \
   --member="serviceAccount:${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com" \
   --role="roles/iam.serviceAccountUser"

$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \
   --member="serviceAccount:${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com" \
   --role="roles/compute.storageAdmin"

$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \
   --member="serviceAccount:${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com" \
   --role="roles/cloudbuild.builds.builder"

# Optional: サーバーレスVPCを利用する場合
$ gcloud projects add-iam-policy-binding ${PROJECT_ID} \
   --member="serviceAccount:${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com" \
   --role="roles/vpcaccess.user"

ダウンロード

$ gcloud iam service-accounts keys create [任意の名前].json \
--iam-account=${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com

created key [xxxx] of type [json] as [xxx.json] for [xx@xxxx.iam.gserviceaccount.com]

ちなみに

GitHubは一昨年くらいにOIDCトークンを導入したからWorkload Identity 連携でGoogle Cloudに認証するというのもできるらしいです。

参考

0
0
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
0
0