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
デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、そのサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
[詳細設定] で [変数] をクリックします。
[ConfigMap を参照] で、プルダウン メニューから目的の ConfigMap を選択します。
- [参照の方法] プルダウン メニューで、ConfigMap の使用方法を選択するか、ボリュームとしてマウントするか、環境変数として公開します。
- ボリュームとしてマウントをする場合は、パスを指定して [完了] をクリックします。
- 環境変数として公開する場合は、次の手順を行います。
- 変数の [名前] を指定し、[キー] プルダウン メニューから対応する ConfigMap 値を選択します。
- [追加] をクリックして、別の ConfigMap 値を追加します。
- 変数の [名前] を指定し、[キー] プルダウン メニューから対応する ConfigMap 値を選択します。
- [完了] をクリックします。
[作成] または [デプロイ] をクリックします。
コマンドライン
新しいサービスに 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"
- IMAGE_URL は、コンテナ イメージへの参照(