シークレットの使用

Secret を作成する方法と、その Secret を使用するように Cloud Run for Anthos サービスとリビジョンを構成する方法について説明します。

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

コンテナが Secret にアクセスできるようにするには、各 Secret をボリュームとしてマウントします。これにより、コンテナは Secret 内のエントリをファイルとして利用できるようになります。Secret をマウントすると、Secret の読み取り時の最新バージョンを取得できます。

環境変数を使用して Secret を渡すこともできます。

Secret の作成

以下では、Secret の作成方法を簡単に説明しますが、Secret で説明しているように、Secret を作成する方法はいくつかあります。

Secret は、Cloud Run for Anthos サービスを実行しているクラスタと同じ名前空間に作成します。この例では、default 名前空間を使用します。

クラスタの default 名前空間に Secret を作成するには:

  • ファイルを使用して 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
    
  • kubectl コマンドのみを使用して Secret を作成します。

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

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

新しいサービスをデプロイするとき、または既存のサービスを更新してリビジョンをデプロイするときに、Google Cloud コンソールまたは Google Cloud CLI コマンドライン ツールを使用して Secret を設定できます。

Console

  1. Google Cloud コンソールで Cloud Run for Anthos に移動します。

    Cloud Run for Anthos に移動

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

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

    画像

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

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

  5. [次へ] をクリックして、次のセクションに進みます。

  6. [このサービスをトリガーする方法の構成] セクションで、サービスを呼び出すために使用する接続を選択します。

  7. [作成] をクリックしてイメージを Cloud Run for Anthos にデプロイし、デプロイの完了を待ちます。

コマンドライン

Google Cloud CLI を使用して、新しいサービスの Secret を設定できます。または、既存のサービスを更新することもできます。

  • 既存のサービスの場合は、次のいずれかのパラメータを指定して gcloud run services update コマンドを実行し、Secret を更新します。

    例:

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

    以下のように置き換えます。

    • SERVICE は、実際のサービスの名前に置き換えます。
    • KEY1=VALUE1,KEY2=VALUE2 は、各 Secret の名前と値のペアのカンマ区切りのリストに置き換えます。各 KEY のパスを指定します。先頭にスラッシュ / を付けて、Secret をファイルとしてマウントします。Secret を環境変数としてマウントする場合は、スラッシュを除外することもできます。各 VALUE に Secret 名を指定します。複数のパラメータを指定する方法
    • コマンド パラメータ オプション

      複数の Key-Value ペアを指定するには、読みやすくするために複数のパラメータを指定します。例:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"
  • 新しいサービスの場合は、--set-secrets パラメータを指定して gcloud run deploy コマンドを実行し、Secret を設定します。

    gcloud run deploy SERVICE --image=IMAGE_URL --set-secrets KEY1=VALUE1,KEY2=VALUE2

    以下のように置き換えます。

    • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
    • SERVICE は、実際のサービスの名前に置き換えます。
    • KEY1=VALUE1,KEY2=VALUE2 は、各 Secret の名前と値のペアのカンマ区切りのリストに置き換えます。各 KEY のパスを指定します。先頭にスラッシュ / を付けて、Secret をファイルとしてマウントします。Secret を環境変数としてマウントする場合は、スラッシュを除外することもできます。各 VALUE に Secret 名を指定します。複数のパラメータを指定する方法
    • コマンド パラメータ オプション

      複数の Key-Value ペアを指定するには、読みやすくするために複数のパラメータを指定します。例:
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"