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 サービスを実行しているクラスタと同じ Namespace で作成してください。この手順では、default
Namespace を使用します。
コマンドラインから ConfigMap を作成できます。
kubectl create configmap NAME DATA
次のように置き換えます。
- NAME は、ConfigMap オブジェクトの名前です。
DATA は、以下のいずれかです。
- 1 つ以上の構成ファイルを含む各ディレクトリの
--from-file
フラグとパス。 - ConfigMap に追加する各データの
--from-literal
フラグと Key-Value ペア。
- 1 つ以上の構成ファイルを含む各ディレクトリの
例:
kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
ConfigMap は、default
名前空間のクラスタで使用できる場所で作成およびアップロードされます。
サービスで ConfigMap を使用できるようにする
ConfigMap を作成したら、新しいサービスを作成するとき、または既存のサービスを更新してリビジョンをデプロイするときに、Google Cloud コンソールまたは Google Cloud CLI を使用して、ボリュームまたは環境変数として Knative serving サービスで ConfigMap を使用できるようにします。
コンソール
Google Cloud コンソールで Knative serving に移動します。
デプロイ先の新しいサービスを構成する場合は、[サービスを作成] をクリックします。既存のサービスを構成する場合は、そのサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
[詳細設定] で [変数とシークレット] をクリックします。
[ConfigMap を参照] で、プルダウン メニューから目的の ConfigMap を選択します。
- [参照の方法] プルダウン メニューで、ConfigMap の使用方法を選択するか、ボリュームとしてマウントするか、環境変数として公開します。
- ボリュームとしてマウントをする場合は、パスを指定して [完了] をクリックします。
- 環境変数として公開する場合は、次の手順を行います。
- 変数の [名前] を指定し、[キー] プルダウン メニューから対応する ConfigMap 値を選択します。
- [追加] をクリックして、別の ConfigMap 値を追加します。
- 変数の [名前] を指定し、[キー] プルダウン メニューから対応する ConfigMap 値を選択します。
- [完了] をクリックします。
[次へ] をクリックして、次のセクションに進みます。
[このサービスをトリガーする方法の構成] セクションで、サービスを呼び出すために使用する接続を選択します。
[作成] をクリックしてイメージを 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"
- IMAGE_URL は、コンテナ イメージへの参照(