Secret の使用

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

サービスの一般的なユースケースとして、ユーザー名とパスワードを提供するサードパーティ アプリケーションへアクセスする場合があります。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 を利用できるようにする

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

Console

  1. Cloud Run for Anthos on Google Cloud に移動

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

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

    画像

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

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

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

コマンドライン

次のいずれかの gcloud kuberun コマンドを使用して、新しいサービスに Secret を設定するか、既存のサービスを更新します。

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

    例:

    gcloud kuberun core 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 kuberun core services create コマンドを実行し、Secret を設定します。

    gcloud kuberun core services create 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"