ConfigMap の使用

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

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

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

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

ConfigMap の作成

GKE ドキュメントの ConfigMaps ページで説明されているように、ConfigMap を作成する方法は複数あります。ConfigMap を簡単に作成する手順は、次のとおりです。

ConfigMap を作成するときは、Knative serving サービスを実行しているクラスタと同じ名前空間で作成してください。この手順では、default 名前空間を使用します。

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

kubectl create configmap NAME DATA

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

  • NAME は、ConfigMap オブジェクトの名前です。
  • DATA は、以下のいずれかです。

    • 1 つ以上の構成ファイルを含む各ディレクトリの --from-file フラグとパス。
    • ConfigMap に追加するそれぞれに対する --from-literal フラグと Key-Value ペア。

例:

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

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

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

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

コンソール

  1. Google Cloud コンソールで Knative serving に移動します。

    Knative serving に移動

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

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

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

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

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

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

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

コマンドライン

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

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

    例:

    gcloud run 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 run deploy コマンドを実行し、ConfigMap を設定します。

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

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

    • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/cloudrun/hello など)に置き換えます。
    • 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"