📘
Cloud Runでservice-accountのkeyを設置する方法
背景
vertexのapiを使う際に、ローカル環境では、GOOGLE_APPLICATION_CREDENTIALSの環境変数に、サービスアカウントのjsonファイルのパスを設定していた。
cloud runでデプロイするときに、これはどうするのだろう?と気になったので、調査して実装してみました。
結論
Secret Managerにjsonファイルを登録し、cloud runのボリュームマウントをする。
詳しい設定のやり方
1. まず、Secrete Managerにjsonファイルを登録します。
「シークレットを作成」-> ファイルをアップロードでjsonファイルをアップロードする
2. cloud runにて、ボリュームマウントする。
「ボリューム」タブを開く->「ボリュームタイプ」で"シークレット"を選択。
シークレットを1で登録したものを選択。
3. 環境変数でマウントしたパスを設定
「コンテナ」タブの中の「ボリュームマウント」タブを開き、2のボリュームをマウントする。その際、パスを設定する。
例)/secret/xxxxxxx
4. 環境変数でパスを指定。
「コンテナ」タブの中の「変数とシークレット」タブを開く。以下のkey:valueを設定する。
例)
GOOGLE_APPLICATION_CREDENTIALS: /secret/xxxxxxx
注意点
設定するときに、cloud runを実行しているサービスアカウントに、[Secret Manager Secret Accessor]の権限をつけるように言われたので、こちらの設定もすると、コンテナからシークレットへアクセスできるようになります。
Discussion