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

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

サービスの一般的なユースケースは、ConfigMap を使用してアプリケーション コードを構成から分離することです。ConfigMap は Secret に似ています。ただし、Secret は機密情報の保存に使用されますが、ConfigMap は一般公開の認証情報、ホスト名、URL など、機密性の低いデータの保存に使用されます。ConfigMap の詳しい使用方法については、Google Kubernetes Engine のドキュメントをご覧ください。

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

  • ConfigMap をボリュームとしてマウントします。このとき、ConfigMap エントリは、マウントされたボリューム内のファイルとして使用可能になります。この方法は、ConfigMap を読み取るときに最新バージョンを確実に取得できるのでおすすめです。
  • ConfigMap の引き渡しには、環境変数を使用してください。

ConfigMap の作成

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

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

コマンドラインから ConfigMap を作成できます。

kubectl create configmap name data

ここで

  • name は、ConfigMap オブジェクトの名前です。
  • data は次のいずれかです。

    • --from-file フラグを使用して指定された、1 つ以上の構成ファイルを含むディレクトリへのパス
    • それぞれが --from-literal フラグを使用して指定された Key-Value ペア

例:

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

ConfigMap は、default 名前空間のクラスタで使用できる場所で作成およびアップロードされます。

サービスで ConfigMap を使用できるようにする

ConfigMap を作成したら、新しいサービスを作成するとき、または既存のサービスを更新してリビジョンをデプロイするときに、Cloud Console または gcloud コマンドラインを使用して、ボリュームまたは環境変数として Cloud Run for Anthos サービスで ConfigMap を使用できるようにします。

Console

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

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

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

    画像

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

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

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

コマンドライン

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

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

    例:

    gcloud kuberun core services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2
    

    次のように置き換えます。

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

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

    gcloud kuberun core services create SERVICE --image=IMAGE_URL --set-config-maps KEY1=VALUE1,KEY2=VALUE2
    

    次のように置き換えます。

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

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