Cloud Run for Anthos on Google Cloud クラスタでの Secret の使用

サービスの一般的なユースケースとして、ユーザー名とパスワードを提供するサードパーティ アプリケーションへアクセスする場合があります。Kubernetes の場合、このタイプの機密情報を Kubernetes の Secret オブジェクトに格納することをおすすめします。Kubernetes Secret のドキュメントでは Secret の使い方を学ぶことができます。

コンテナが Secret にアクセスできるようにするには、次のいずれかのオプションを選択します。

  • Secret を Volume としてマウントする。Secret エントリは、マウントされた Volume 内のファイルとして使用できます。Secret を読み取るときに最新バージョンを確実に取得できるため、こちらをおすすめします。
  • 環境変数を使用して Secret を渡す。

このページでは、Secret を作成する方法と、Cloud Run for Anthos on Google Cloud が Secret を使用するように構成する方法を説明します。

Secret を作成する

Secret に関する Kubernetes ドキュメントで説明されているように、Secret を作成する方法はいくつかあります。Secret を簡単に作成する手順は、次のとおりです。

Secret を作成するときは、Cloud Run サービスを実行しているクラスタと同じ Namespace で作成してください。この手順では、default Namespace を使用します。

Secret は次のファイルを使用して作成できます。

echo -n 'devuser' > ./username.txt
echo -n 'S!B\*d$zDsb' > ./password.txt
kubectl create secret generic user-creds --from-file=./username.txt --from-file=./password.txt

または、ファイルを使用せずに 1 つのコマンドラインで情報を直接提供することもできます。

kubectl create secret generic user-creds --from-literal=username=devuser --from-literal=password='S!B\*d$zDsb'

Secret は、default Namespace 内のクラスタで利用できる場所で、作成およびアップロードされます。

サービスで Secret を利用できるようにする

Secret を作成したら、新しいサービスを作成するまたは新しいリビジョンをデプロイするときに、Cloud Console または gcloud コマンドラインを使用して、Volume または環境変数として Cloud Run サービスに対して使用するように指定できます。

Console

  1. Cloud Run に移動します

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. [詳細設定] で [変数] をクリックします。

    画像

  4. [Secret の参照] プルダウン メニューから目的の Secret を選択します。

    • [参照の方法] プルダウン メニューで、Secret の使用方法について、Volume としてマウントするか、環境変数として公開するかを選択します。
    • Volume としてマウントをする場合は、パスを指定して [完了] をクリックします。
    • 環境変数として公開する場合は、次の手順を行います。
      1. 変数の [名前] を指定し、[キー] プルダウン メニューから対応する Secret 値を選択します。
      2. 他の Secret 値を追加するには [追加] をクリックします。
      3. 変数の [名前] を指定し、[キー] プルダウン メニューから対応する Secret 値を選択します。
      4. [完了] をクリックします。

  5. [作成] または [デプロイ] をクリックします。

コマンドライン

新しいサービスの Secret を設定、更新、クリア、削除するには、gcloud run deploy コマンドを使用します。必要に応じて、次のフラグを使用できます。

たとえば、Secret を追加または更新して Cloud Run サービスで使用できるようにするには、マウントする Secret を指定するか、環境変数として指定します。

gcloud run deploy SERVICE --update-secrets KEY1=VALUE1,KEY2=VALUE2
  • SERVICE は、実際のサービス名に置き換えます。
  • KEY1=VALUE1,KEY2=VALUE2 は、希望する Secret キーの名前と値のカンマ区切りのリストに置き換えます。スラッシュ(/)で始まるキーはマウントパスです。その他のキーは、すべて環境変数に対応しています。

gcloud beta run services update コマンドを使用して、既存のサービスに対して Secret を設定、更新、クリア、削除することもできます。必要に応じて、次のフラグを使用できます。

gcloud beta run services update SERVICE --image IMAGE_URL --update-secrets KEY1=VALUE1,KEY2=VALUE2

置換

  • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
  • KEY1=VALUE1,KEY2=VALUE2 は、希望する Secret キーの名前と値のカンマ区切りのリストに置き換えます。スラッシュ(/)で始まるキーはマウントパスです。その他のキーは、すべて環境変数に対応しています。