クラウドインフラ構築記

現在AWSの構築支援に携わっております。今注視しているのは、GKE、BigQuery、Google Dataflowなどサービスを展開しているGoolge Cloud Platformです。

CloudBuild 事始め

Container Builder 改め、CloudBuildについて、すこし試してみました。

CloudBuildの詳細についてはこちらです。
https://cloud.google.com/cloud-build/

CloudBuild用のコンテナを使って、CI処理を組んでいきます。対応ランタイムは下記となる。

Bazel、Curl、Docker、Dotnet、Gcloud、Git、Go、Gradle、Gsutil、Kubectl、Mvn、Npm、Wget、yarn

cloudbuild.ymlの例。Cloud Functionsのデプロイ例。Cloud Buildとリージョンちがくても問題はない。

 steps:
- name: gcr.io/cloud-builders/gcloud
args:
- "functions"
- "deploy"
- "http"
- "--entry-point=hello_test_http"
- "--region=us-central1"
- "--runtime=python37"
- "--trigger-http" 
 gcloud builds submit --config cloudbuild.yaml . 

権限周りではまったこを一点。

1度下記エラーがでたことがあった。

 Already have image (with digest): gcr.io/cloud-builders/gcloud
ERROR: (gcloud.beta.functions.deploy) ResponseError: status=[403], code=[Forbidden], message=[The caller does not have permission]
ERROR: build step 0 "gcr.io/cloud-builders/gcloud" failed: exit status 1

IAMの権限エラーによるものとなりますので、cloudbuildのserviceaccountに付与してやる必要がある

 gcloud iam service-accounts add-iam-policy-binding ${PROJECT}@appspot.gserviceaccount.com \
--member=serviceAccount:${NUM}@cloudbuild.gserviceaccount.com \
--role=roles/iam.serviceAccountUser --project=${PROJECT}

GCEインスタンスから、GCP APIを叩く場合も、同じく失敗することがあります。以前は大丈夫だったが、仕様が変更になったのか。

コメントは受け付けていません。