ConfigMapsを使用すると、構成ファイルを画像から分離できます。 これにより、コンテナアプリケーションの移植性が向上します。 このトピックでは、ポッドでConfigMapを使用する方法について説明します。
シナリオ
次のシナリオでは、ポッドでConfigMapを使用できます。
詳細については、「ConfigMapを使用するポッドの設定」をご参照ください。
使用上の注意
ポッドでConfigMapを使用する場合、ポッドとConfigMapは同じクラスターおよび名前空間に存在する必要があります。
ConfigMapの作成
この例では、SPECIAL_LEVEL: very
とSPECIAL_TYPE: charm
のキーと値のペアを含むSpecial_Configという名前のConfigMapが作成されます。
次のYAMLテンプレートを使用してConfigMapを作成します。
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
SPECIAL_LEVEL: very
SPECIAL_TYPE: charm
ConfigMapを使用して、ポッドの環境変数を定義します。
ConfigMapのキーと値のペアを使用してポッドの環境変数を定義する
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[デプロイメント] ページで、右上隅の [YAMLから作成] をクリックします。
サンプルテンプレートを選択するか、カスタムテンプレートを入力して、[作成] をクリックします。
ポッドの環境変数を定義するには、
valueFrom
パラメーターを使用してSPECIAL_LEVELの値を参照します。 次のサンプルコードに例を示します。apiVersion: v1 kind: Pod metadata: name: config-pod-1 spec: containers: - name: test-container image: busybox command: [ "/bin/sh", "-c", "env" ] env: - name: SPECIAL_LEVEL_KEY valueFrom: ##Use the valueFrom parameter to denote that env references the value of the ConfigMap. configMapKeyRef: name: special-config ##The name of the referenced ConfigMap. key: SPECIAL_LEVEL ##The key of the referenced key-value pair. restartPolicy: Never
ConfigMapのすべてのキーと値のペアを使用して、ポッドの複数の環境変数を定義する
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[デプロイメント] ページで、右上隅の [YAMLから作成] をクリックします。
サンプルテンプレートを選択するか、カスタムテンプレートを入力して、[作成] をクリックします。
ConfigMapのすべてのキーと値のペアを使用してポッドの複数の環境変数を定義する場合は、envFromパラメーターを使用できます。 ConfigMapのキーは、ポッド内の環境変数の名前として使用されます。 次のサンプルコードに例を示します。
apiVersion: v1 kind: Pod metadata: name: config-pod-2 spec: containers: - name: test-container image: busybox command: [ "/bin/sh", "-c", "env" ] envFrom: ##Reference all key-value pairs in the special-config configuration file. - configMapRef: name: special-config restartPolicy: Never
ConfigMapを使用したコマンドラインパラメーターの設定
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[デプロイメント] ページで、右上隅の [YAMLから作成] をクリックします。
サンプルテンプレートを選択するか、カスタムテンプレートを入力して、[作成] をクリックします。
ConfigMapを使用して、環境変数の置き換えに
$(VAR_NAME)
構文を使用して、コンテナのコマンドまたはパラメータ値を設定できます。 次のサンプルコードに例を示します。apiVersion: v1 kind: Pod metadata: name: config-pod-3 spec: containers: - name: test-container image: busybox command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ] env: - name: SPECIAL_LEVEL_KEY valueFrom: configMapKeyRef: name: special-config key: SPECIAL_LEVEL - name: SPECIAL_TYPE_KEY valueFrom: configMapKeyRef: name: special-config key: SPECIAL_TYPE restartPolicy: Never
ボリュームでConfigMapを使用します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
On theデプロイメントページをクリックします。YAMLから作成する右上隅にあります。
サンプルテンプレートを選択するか、テンプレートをカスタマイズし、作成.
ボリュームでConfigMapを使用し、ボリュームセクションでConfigMap名を指定できます。 これにより、ConfigMapのキーと値のペアが、mountPathフィールドで指定されたディレクトリに保存されます。 この例では、ディレクトリは /etc/configです。ConfigMapのキーにちなんで名付けられた構成ファイルが生成されます。 ConfigMapの値は、関連ファイルに格納されます。 次のサンプルコードに例を示します。
apiVersion: v1 kind: Pod metadata: name: config-pod-4 spec: containers: - name: test-container image: busybox command: [ "/bin/sh", "-c", "ls /etc/config/" ] ##List the names of the files in the directory. volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: special-config restartPolicy: Never
ポッドの実行後、ConfigMapのキーが返されます。
SPECIAL_TYPE SPECIAL_LEVEL