6.5. コンテナーによる API オブジェクト使用の許可
Downward API は、OpenShift Container Platform に結合せずにコンテナーが API オブジェクトについての情報を使用できるメカニズムです。この情報には、Pod の名前、namespace およびリソース値が含まれます。コンテナーは、環境変数やボリュームプラグインを使用して Downward API からの情報を使用できます。
6.5.1. Downward API の使用によるコンテナーへの Pod 情報の公開 リンクのコピーリンクがクリップボードにコピーされました!
Downward API には、Pod の名前、プロジェクト、リソースの値などの情報が含まれます。コンテナーは、環境変数やボリュームプラグインを使用して Downward API からの情報を使用できます。
Pod 内のフィールドは、FieldRef API タイプを使用して選択されます。FieldRef には 2 つのフィールドがあります。
| フィールド | 説明 |
|---|---|
|
| Pod に関連して選択するフィールドのパスです。 |
|
|
|
現時点で v1 API の有効なセレクターには以下が含まれます。
| セレクター | 説明 |
|---|---|
|
| Pod の名前です。これは環境変数およびボリュームでサポートされています。 |
|
| Pod の namespace です。 これは環境変数およびボリュームでサポートされています。 |
|
| Pod のラベルです。これはボリュームでのみサポートされ、環境変数ではサポートされていません。 |
|
| Pod のアノテーションです。これはボリュームでのみサポートされ、環境変数ではサポートされていません。 |
|
| Pod の IP です。これは環境変数でのみサポートされ、ボリュームではサポートされていません。 |
apiVersion フィールドは、指定されていない場合は、対象の Pod テンプレートの API バージョンにデフォルト設定されます。
6.5.2. Downward API を使用してコンテナーの値を使用する方法について リンクのコピーリンクがクリップボードにコピーされました!
コンテナーは、環境変数やボリュームプラグインを使用して API の値を使用することができます。選択する方法により、コンテナーは以下を使用できます。
- Pod の名前
- Pod プロジェクト/namespace
- Pod のアノテーション
- Pod のラベル
アノテーションとラベルは、ボリュームプラグインのみを使用して利用できます。
6.5.2.1. 環境変数の使用によるコンテナー値の使用 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーの環境変数を設定する際に、EnvVar タイプの valueFrom フィールド (タイプは EnvVarSource) を使用して、変数の値が value フィールドで指定されるリテラル値ではなく、FieldRef ソースからの値になるように指定します。
この方法で使用できるのは 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.yamlCopy 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-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5.2.2. ボリュームプラグインを使用したコンテナー値の使用 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーは、ボリュームプラグイン使用して API 値を使用できます。
コンテナーは、以下を使用できます。
- Pod の名前
- Pod プロジェクト/namespace
- Pod のアノテーション
- Pod のラベル
手順
ボリュームプラグインを使用するには、以下の手順を実行します。
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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログを確認し、設定されたフィールドの有無を確認します。
oc logs -p dapi-volume-test-pod
$ oc logs -p dapi-volume-test-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5.3. Downward API を使用してコンテナーリソースを使用する方法について リンクのコピーリンクがクリップボードにコピーされました!
Pod の作成時に、Downward API を使用してコンピューティングリソースの要求および制限についての情報を挿入し、イメージおよびアプリケーションの作成者が特定の環境用のイメージを適切に作成できるようにします。
環境変数またはボリュームプラグインを使用してこれを実行できます。
6.5.3.1. 環境変数を使用したコンテナーリソースの使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod を作成するときは、Downward API を使用し、環境変数を使ってコンピューティングリソースの要求と制限に関する情報を挿入できます。
手順
環境変数を使用するには、以下の手順を実行します。
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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5.3.2. ボリュームプラグインを使用したコンテナーリソースの使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod を作成するときは、Downward API を使用し、ボリュームプラグインを使ってコンピューティングリソースの要求と制限に関する情報を挿入できます。
手順
ボリュームプラグインを使用するには、以下の手順を実行します。
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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5.4. Downward API を使用したシークレットの使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod の作成時に、Downward API を使用してシークレットを挿入し、イメージおよびアプリケーションの作成者が特定の環境用のイメージを作成できるようにできます。
手順
secret.yamlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow secret.yamlファイルからSecretオブジェクトを作成します。oc create -f secret.yaml
$ oc create -f secret.yamlCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログで
MY_SECRET_USERNAMEの値を確認します。oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5.5. Downward API を使用した設定マップの使用 リンクのコピーリンクがクリップボードにコピーされました!
Pod の作成時に、Downward API を使用して設定マップの値を挿入し、イメージおよびアプリケーションの作成者が特定の環境用のイメージを作成することができるようにすることができます。
手順
configmap.yamlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow configmap.yamlファイルからConfigMapオブジェクトを作成します。oc create -f configmap.yaml
$ oc create -f configmap.yamlCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログで
MY_CONFIGMAP_VALUEの値を確認します。oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5.6. 環境変数の参照 リンクのコピーリンクがクリップボードにコピーされました!
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.yamlCopy 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-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5.7. 環境変数の参照のエスケープ リンクのコピーリンクがクリップボードにコピーされました!
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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのログで
MY_NEW_ENV値を確認します。oc logs -p dapi-env-test-pod
$ oc logs -p dapi-env-test-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow