📘

Cloud Runでservice-accountのkeyを設置する方法

2025/02/13に公開

背景

vertexのapiを使う際に、ローカル環境では、GOOGLE_APPLICATION_CREDENTIALSの環境変数に、サービスアカウントのjsonファイルのパスを設定していた。

cloud runでデプロイするときに、これはどうするのだろう?と気になったので、調査して実装してみました。

結論

Secret Managerにjsonファイルを登録し、cloud runのボリュームマウントをする。

詳しい設定のやり方

1. まず、Secrete Managerにjsonファイルを登録します。

https://cloud.google.com/security/products/secret-manager?hl=ja

「シークレットを作成」-> ファイルをアップロードでjsonファイルをアップロードする

2. cloud runにて、ボリュームマウントする。

「ボリューム」タブを開く->「ボリュームタイプ」で"シークレット"を選択。
シークレットを1で登録したものを選択。

3. 環境変数でマウントしたパスを設定

「コンテナ」タブの中の「ボリュームマウント」タブを開き、2のボリュームをマウントする。その際、パスを設定する。
例)/secret/xxxxxxx

4. 環境変数でパスを指定。

「コンテナ」タブの中の「変数とシークレット」タブを開く。以下のkey:valueを設定する。
例)
GOOGLE_APPLICATION_CREDENTIALS: /secret/xxxxxxx

注意点

設定するときに、cloud runを実行しているサービスアカウントに、[Secret Manager Secret Accessor]の権限をつけるように言われたので、こちらの設定もすると、コンテナからシークレットへアクセスできるようになります。

Discussion