LoginSignup
0
0

Cloud BuildからSecret Managerの変数がなぜか読み取れない人へ贈るTips

Posted at

この記事を必要とする人

Cloud BuildからSecret Managerを利用しようとしたけどなぜか利用できない人へ
こんなこと起きてませんか?
と言いたいだけの記事です。ちなみに公式ドキュメントを読んだ人は、この記事の気にしてみるポイントの5番だけ読んだらもしかしたら解決するかも。もしこれで解決できない人とか、他の原因見つけたらコメントくれると追記します。

想定しているもの

エラーになっているものはこちらで

steps:
  - name: gcr.io/cloud-builders/docker
    id: Build
    args:
      - build
      - '--no-cache'
      - '-t'
      - '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
      - .
      - '-f'
      - 'Dockerfile'

  - id: 'Migration'
    name: "docker"
    args:
      - "run"
      - "-e"
      - 'DATABASE_URL="$DATABASE_URL"'
      - "-w"
      - "/usr/src/app"
      - '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
      - "sh"
      - "-c"
      - 'npx prisma db push'

で解決したバージョンはこちら

steps:
  - name: gcr.io/cloud-builders/docker
    id: Build
    args:
      - build
      - '--no-cache'
      - '-t'
      - '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
      - .
      - '-f'
      - 'Dockerfile'

  - id: 'Migration'
    name: "gcr.io/cloud-builders/docker"
    entrypoint: 'bash'
    args: [
      "-c",
      "docker run --env DATABASE_URL=$$DATABASE_URL -w /usr/src/app $_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA sh -c 'npx prisma db push'"
    ]
    secretEnv: [ 'DATABASE_URL' ]
availableSecrets:
  secretManager:
    - versionName: "projects/$PROJECT_ID/secrets/DATABASE_URL/versions/latest"
      env: DATABASE_URL

公式ドキュメント

気にしてみるポイント

  1. availableSecretsは設定していますか?

  2. Stepで利用したいsecretEnvは入っていますか?
    そのStepで利用するsecretはstep内でsecretEnvを立てないとうまくいきません。

        secretEnv: [ 'DATABASE_URL' ]
    
  3. secret managerから取る変数は$$を先頭につけていますか?
    $$DATABASE_URLのように利用しましょう。

  4. entrypoint: bashを指定した上でコマンド実行前に-cをいれてますか?
    (ここまではドキュメントに大体書いてあるけど、4に関してはなんで????)

  5. argsなどの列挙型は[]で記載してますか?
    これがめっちゃ罠です。よくあるのは列挙型を-で記載すると思うのですがこれは反応しないらしい。。。なんでやねん。
    https://stackoverflow.com/questions/73176741/google-cloud-build-with-pack-and-secrets-manager-not-accessing-environment-varia

最後に

4と5で一生詰まってました。なんでこんな仕様にしたん、Googleさん。。。(4に関してはドキュメントに書いてあるから私が悪い。)
てことで良いGCPライフを。

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