7.5.2. Downward API を使用してコンテナーの値を使用する方法について
コンテナーは、環境変数またはボリュームプラグインを使用して API 値を利用できます。
選択する方法により、コンテナーは以下を使用できます。
- Pod の名前
- Pod プロジェクト/namespace
- Pod のアノテーション
- Pod のラベル
アノテーションとラベルは、ボリュームプラグインのみを使用して利用できます。
7.5.2.1. 環境変数の使用によるコンテナー値の使用 リンクのコピーリンクがクリップボードにコピーされました!
コンテナー内で環境変数を使用する場合、変数の値が指定されたリテラル値ではなく、FieldRef ソースから取得されるように指定できます。
この方法で利用できるのは、Pod の定数属性のみです。なぜなら、環境変数は、プロセスが開始された後に、変数の値が変更されたことをプロセスに通知できるような方法で更新することはできないからです。環境変数で使用できるフィールドは以下のとおりです。
- Pod の名前
- Pod プロジェクト/namespace
手順
コンテナーで使用する環境変数を含む新しい Pod 仕様を作成します。
次のような
pod.yamlファイルを作成します。apiVersion: v1 kind: Pod metadata: name: dapi-env-test-pod spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault containers: - name: env-test-container image: gcr.io/google_containers/busybox command: [ "/bin/sh", "-c", "env" ] env: - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: MY_POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL] restartPolicy: Never # ...各項目の説明:
spec.containers.env.valueFrom.fieldRef.fieldPath-
環境変数が、
値フィールドで指定されたリテラル値ではなく、指定された Pod 値 (Pod 名の場合はmetadata.name、Pod 名前空間の場合はmetadata.namespace)から値を取得することを指定します。
以下のコマンドを使用して、
pod.yamlファイルから Pod を作成します。$ oc create -f pod.yaml
検証
コンテナーログで
MY_POD_NAMEとMY_POD_NAMESPACE の値を確認してください。$ oc logs -p dapi-env-test-pod