6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CloudBuildでCloudKMSのsecretEnvを使おうとして少しハマった

Posted at

前提

CloudBuilddocker buildをするにあたって、gitにはコミットしたくないがbuild時に--build-argで渡したいAPI KEYがあった
そのため、API KEYをCloudKMSに登録し、step内で$$API_KEYで取得して使おうとしていた

CloudKMSについては以下を参照
https://cloud.google.com/cloud-build/docs/securing-builds/use-encrypted-secrets-credentials?hl=ja

ハマった点

- name: 'gcr.io/cloud-builders/docker'
  id: 'build-docker-image'
  args: ['build', '-t', 'asia.gcr.io/$PROJECT_ID/SERVICE_NAME', '--build-arg', API_KEY=$$API_KEY', '.']
  secretEnv: ['API_KEY']

上記のような感じで$$API_KEYを使おうとしても、docker側に渡されずに困った

解決策

- name: 'gcr.io/cloud-builders/docker'
  id: 'build-docker-image'
  entrypoint: 'bash'
  args: ['-c', "docker build -t asia.gcr.io/$PROJECT_ID/SERVICE_NAME --build-arg API_KEY=$$API_KEY ."]
  secretEnv: ['API_KEY']

上記のようにentrypointbashにしてやることで、docker buildの引数として渡すことができた
確かにCloudKMSCloudBuildで使っているexampleを見ると、bashを介していた気がする
修正前はshellを介しておらず、docker buildしているのはshellとは別プロセスになっているため取得できなかったと考えている

最後に

CloudRunNuxtを使う場合など、環境変数周りでハマりそうなので誰かの参考になれば。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?