Open4

CloudBuildからCloudSQLへの接続

Daisuke KONISHIDaisuke KONISHI

上の記事では、 gcr.io/google-appengine/exec-wrapper というのを使っていた。

https://github.com/GoogleCloudPlatform/ruby-docker/tree/master/app-engine-exec-wrapper

さっきの記事の場合、 entrypointbash とし、 args-c /buildstep/execute.sh としている。

これで実行した場合、後に続くイメージの指定や環境変数の指定なんかが /buildstep/execute.sh のオプション指定扱いではなく bash のオプション指定扱いになるような動きになった。
そのためイメージが無いというエラーが起きた。

この辺を直して最終的に以下のようになっている。

  - id: "apply-migrations"
    name: "gcr.io/google-appengine/exec-wrapper"
    args:
      - "-i"
      - "${_ARTIFACT_REPOSITORY_MIGRATE_IMAGE_NAME}:latest"
      - "-e"
      - "DATABASE_URL=$$DATABASE_URL"
      - "-s"
      - "${_CLOUDSQL_INSTANCE_FULL_NAME} -- npm run migrate:deploy"
    secretEnv: ["DATABASE_URL"]


availableSecrets:
  secretManager:
    - versionName: "projects/$PROJECT_ID/secrets/database_url/versions/latest"
      env: "DATABASE_URL"

前の記事を参考に、SecretManagerから値を取りつつ、 gcr.io/google-appengine/exec-wrapper で使うようにしている。

諸事情によりSecretManagerに入れている DATABSE_URL が小文字になっているので env に渡す際に直している。