This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第23章 Downward API
23.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
Downward API は、OpenShift Container Platform に結合せずにコンテナーが API オブジェクトについての情報を使用できるメカニズムです。この情報には、Pod の名前、namespace およびリソース値が含まれます。コンテナーは、環境変数またはボリュームプラグインを使用して Downward API から情報を使用できます。
23.2. フィールドの選択 リンクのコピーリンクがクリップボードにコピーされました!
Pod 内のフィールドは、FieldRef
API タイプを使用して選択されます。FieldRef
には 2 つのフィールドが含まれます。
フィールド | 説明 |
---|---|
|
Pod に関連して選択するフィールドのパスです。 |
|
|
現時点で v1 API の有効なセレクターには以下が含まれます。
セレクター | 説明 |
---|---|
|
Pod の名前です。これは環境変数およびボリュームでサポートされています。 |
|
Pod の namespace です。これは環境変数およびボリュームでサポートされています。 |
|
Pod のラベルです。これはボリュームでのみサポートされ、環境変数ではサポートされていません。 |
|
Pod のアノテーションです。これはボリュームでのみサポートされ、環境変数ではサポートされていません。 |
|
Pod の IP です。これは環境変数でのみサポートされ、ボリュームではサポートされていません。 |
apiVersion
フィールドです。指定されていない場合は、対象の Pod テンプレートの API バージョンにデフォルト設定されます。
23.3. Downward API を使用したコンテナー値の使用 リンクのコピーリンクがクリップボードにコピーされました!
23.3.1. 環境変数の使用 リンクのコピーリンクがクリップボードにコピーされました!
Downward API を使用するための 1 つのメカニズムとして、コンテナーの環境変数を使用することができます。EnvVar
タイプの valueFrom
フィールド (タイプは EnvVarSource
)は、変数の値が value
フィールドで指定されるリテラル値ではなく、FieldRef
ソースからの値になるように指定するために使用されます。今後は追加のソースがサポートされる可能性があります。現時点では、ソースの fieldRef
フィールドは Downward API からフィールドを選択するために使用されます。
この方法で使用できるのは Pod の定数属性のみです。変数の値の変更についてプロセスに通知する方法でプロセスを起動すると、環境変数を更新できなくなるためです。環境変数を使用してサポートされるフィールドには、以下が含まれます。
- Pod の名前
Pod の namespace
pod.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod.yaml
ファイルから Pod を作成します。oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログで
MY_POD_NAME
およびMY_POD_NAMESPACE
の値を確認します。oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.3.2. ボリュームプラグインの使用 リンクのコピーリンクがクリップボードにコピーされました!
Downward API を使用するもう 1 つのメカニズムとしてボリュームプラグインを使用することができます。Downward API ボリュームプラグインは、ファイルに展開される設定済みのフィールドを使ってボリュームを作成します。VolumeSource
API オブジェクトの metadata
フィールドはこのボリュームを設定するために使用されます。プラグインは以下のフィールドをサポートします。
- Pod の名前
- Pod の namespace
- Pod のアノテーション
- Pod のラベル
例23.1 Downward API ボリュームプラグイン設定
以下に例を示します。
volume-pod.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow volume-pod.yaml
ファイルから Pod を作成します。oc create -f volume-pod.yaml
$ oc create -f volume-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログを確認し、設定されたフィールドの有無を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.4. Downward API を使用したコンテナーリソースの使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod の作成時に、Downward API を使用してコンピューティングリソースの要求および制限についての情報を挿入し、イメージおよびアプリケーションの作成者が特定の環境用のイメージを適切に作成できるようにします。
これは、環境変数およびボリュームプラグインのいずれの方法で実行できます。
23.4.1. 環境変数の使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod 設定の作成時に、
spec.container
フィールド内のresources
フィールドの内容に対応する環境変数を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソース制限がコンテナー設定に含まれていない場合、Downward API はデフォルトでノードの CPU およびメモリーの割り当て可能な値に設定されます。
pod.yaml
ファイルから Pod を作成します。oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.4.2. ボリュームプラグインの使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod 設定の作成時に、
spec.volumes.downwardAPI.items
フィールドを使用してspec.resources
フィールドに対応する必要なリソースを記述します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソース制限がコンテナー設定に含まれていない場合、Downward API はデフォルトでノードの CPU およびメモリーの割り当て可能な値に設定されます。
volume-pod.yaml
ファイルから Pod を作成します。oc create -f volume-pod.yaml
$ oc create -f volume-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5. Downward API を使用したシークレットの使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod の作成時に、Downward API を使用してシークレットを挿入し、イメージおよびアプリケーションの作成者が特定の環境用のイメージを作成できるようにできます。
23.5.1. 環境変数の使用 リンクのコピーリンクがクリップボードにコピーされました!
secret.yaml ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow secret.yaml ファイルから
Secret
を作成します。oc create -f secret.yaml
oc create -f secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の
Secret
からusername
フィールドを参照するpod.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod.yaml
ファイルから Pod を作成します。oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログで
MY_SECRET_USERNAME
の値を確認します。oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.6. Downward API を使用した ConfigMap の使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod の作成時に、Downward API を使用して ConfigMap 値を挿入し、イメージおよびアプリケーションの作成者が特定の環境用のイメージを作成することができます。
23.6.1. 環境変数の使用 リンクのコピーリンクがクリップボードにコピーされました!
configmap.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow configmap.yaml
ファイルからConfigMap
を作成します。oc create -f configmap.yaml
oc create -f configmap.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の
ConfigMap
を参照するpod.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod.yaml
ファイルから Pod を作成します。oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログで
MY_CONFIGMAP_VALUE
の値を確認します。oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.7. 環境変数の参照 リンクのコピーリンクがクリップボードにコピーされました!
Pod の作成時に、$()
構文を使用して事前に定義された環境変数の値を参照できます。環境変数の参照が解決されない場合、値は提供された文字列のままになります。
23.7.1. 環境変数の参照の使用 リンクのコピーリンクがクリップボードにコピーされました!
既存の
environment variable
を参照するpod.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod.yaml
ファイルから Pod を作成します。oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログで
MY_ENV_VAR_REF_ENV
値を確認します。oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.7.2. 環境変数の参照のエスケープ リンクのコピーリンクがクリップボードにコピーされました!
Pod の作成時に、二重ドル記号を使用して環境変数の参照をエスケープできます。次に値は指定された値の単一ドル記号のバージョンに設定されます。
既存の
environment variable
を参照するpod.yaml
ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod.yaml
ファイルから Pod を作成します。oc create -f pod.yaml
$ oc create -f pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログで
MY_NEW_ENV
値を確認します。oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow