18.3. ユースケース: Pod での ConfigMap の使用
以下のセクションでは、Pod で ConfigMap オブジェクトを使用する際のいくつかのユースケースについて説明します。
18.3.1. 環境変数での使用 リンクのコピーリンクがクリップボードにコピーされました!
ConfigMaps は個別の環境変数を設定するために使用したり、有効な環境変数名を生成するすべてのキーで環境変数を設定したりできます。例として、以下の ConfigMaps について見てみましょう。
2 つの環境変数を含む ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
1 つの環境変数を含む ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: env-config
namespace: default
data:
log_level: INFO
configMapKeyRef セクションを使用して、Pod の ConfigMap のキーを使用できます。
特定の環境変数を挿入するように設定されている Pod 仕様のサンプル
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: gcr.io/google_containers/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.how
- name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.type
optional: true
envFrom:
- configMapRef:
name: env-config
restartPolicy: Never
この Pod が実行されると、その出力には以下の行が含まれます。
SPECIAL_LEVEL_KEY=very
log_level=INFO
18.3.2. コマンドライン引数の設定 リンクのコピーリンクがクリップボードにコピーされました!
ConfigMap は、コンテナーのコマンドまたは引数の値を設定するために使用することもできます。これは、Kubernetes 置換構文 $(VAR_NAME) を使用して実行できます。以下の ConfigMaps について見てみましょう。
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
値をコマンドラインに挿入するには、「環境変数での使用」のユースケースで説明されているように環境変数として使用する必要のあるキーを使用する必要があります。次に、$(VAR_NAME) 構文を使用してコンテナーのコマンドでそれらを参照することができます。
特定の環境変数を挿入するように設定されている Pod 仕様のサンプル
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: gcr.io/google_containers/busybox
command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.how
- name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.type
restartPolicy: Never
この Pod が実行されると、test-container コンテナーからの出力は以下のようになります。
very charm
18.3.3. ボリュームでの使用 リンクのコピーリンクがクリップボードにコピーされました!
ConfigMap はボリュームで使用することもできます。以下の ConfigMap の例に戻りましょう。
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
special.type: charm
ボリュームでこの ConfigMap を使用する方法として 2 つの異なるオプションがあります。最も基本的な方法は、キーがファイル名であり、ファイルの内容がキーの値になっているファイルでボリュームを設定する方法です。
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: gcr.io/google_containers/busybox
command: [ "/bin/sh", "cat", "/etc/config/special.how" ]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: special-config
restartPolicy: Never
この Pod が実行されると出力は以下のようになります。
very
ConfigMap キーが展開されるボリューム内のパスを制御することもできます。
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: gcr.io/google_containers/busybox
command: [ "/bin/sh", "cat", "/etc/config/path/to/special-key" ]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: special-config
items:
- key: special.how
path: path/to/special-key
restartPolicy: Never
この Pod が実行されると出力は以下のようになります。
very