2.7. 設定マップの作成および使用
以下のセクションでは、設定マップおよびそれらを作成し、使用する方法を定義します。
2.7.1. 設定マップについて リンクのコピーリンクがクリップボードにコピーされました!
多くのアプリケーションには、設定ファイル、コマンドライン引数、および環境変数の組み合わせを使用した設定が必要です。OpenShift Container Platform では、これらの設定アーティファクトは、コンテナー化されたアプリケーションを移植可能な状態に保つためにイメージコンテンツから切り離されます。
ConfigMap
オブジェクトは、コンテナーを OpenShift Container Platform に依存させないようにする一方で、コンテナーに設定データを挿入するメカニズムを提供します。設定マップは、個々のプロパティーなどの粒度の細かい情報や、設定ファイル全体または JSON Blob などの粒度の荒い情報を保存するために使用できます。
ConfigMap
オブジェクトは、Pod で使用したり、コントローラーなどのシステムコンポーネントの設定データを保存するために使用できる設定データのキーと値のペアを保持します。以下に例を示します。
ConfigMap
オブジェクト定義
イメージなどのバイナリーファイルから設定マップを作成する場合に、binaryData
フィールドを使用できます。
設定データはさまざまな方法で Pod 内で使用できます。設定マップは以下を実行するために使用できます。
- コンテナーへの環境変数値の設定
- コンテナーのコマンドライン引数の設定
- ボリュームの設定ファイルの設定
ユーザーとシステムコンポーネントの両方が設定データを設定マップに保存できます。
設定マップはシークレットに似ていますが、機密情報を含まない文字列の使用をより効果的にサポートするように設計されています。
設定マップの制限
設定マップは、コンテンツを Pod で使用される前に作成する必要があります。
コントローラーは、設定データが不足していても、その状況を許容して作成できます。ケースごとに設定マップを使用して設定される個々のコンポーネントを参照してください。
ConfigMap
オブジェクトはプロジェクト内にあります。
それらは同じプロジェクトの Pod によってのみ参照されます。
Kubelet は、API サーバーから取得する Pod の設定マップの使用のみをサポートします。
これには、CLI を使用して作成された Pod、またはレプリケーションコントローラーから間接的に作成された Pod が含まれます。これには、OpenShift Container Platform ノードの --manifest-url
フラグ、その --config
フラグ、またはその REST API を使用して作成された Pod は含まれません (これらは Pod を作成する一般的な方法ではありません)。
2.7.2. OpenShift Container Platform Web コンソールでの設定マップの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールで設定マップを作成できます。
手順
クラスター管理者として設定マップを作成するには、以下を実行します。
-
Administrator パースペクティブで
Workloads
Config Maps
を選択します。 - ページの右上にある Create Config Map を選択します。
- 設定マップの内容を入力します。
- Create を選択します。
-
Administrator パースペクティブで
開発者として設定マップを作成するには、以下を実行します。
-
開発者パースペクティブで、
Config Maps
を選択します。 - ページの右上にある Create Config Map を選択します。
- 設定マップの内容を入力します。
- Create を選択します。
-
開発者パースペクティブで、
2.7.3. CLI を使用して設定マップを作成する リンクのコピーリンクがクリップボードにコピーされました!
以下のコマンドを使用して、ディレクトリー、特定のファイルまたはリテラル値から設定マップを作成できます。
手順
設定マップの作成
oc create configmap <configmap_name> [options]
$ oc create configmap <configmap_name> [options]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.3.1. ディレクトリーからの設定マップの作成 リンクのコピーリンクがクリップボードにコピーされました!
--from-file
フラグを使用すると、ディレクトリーから config map を作成できます。この方法では、ディレクトリー内の複数のファイルを使用して設定マップを作成できます。
ディレクトリー内の各ファイルは、config map にキーを設定するために使用されます。キーの名前はファイル名で、キーの値はファイルの内容です。
たとえば、次のコマンドは、example-files
ディレクトリーの内容を使用して config map を作成します。
oc create configmap game-config --from-file=example-files/
$ oc create configmap game-config --from-file=example-files/
config map 内のキーを表示します。
oc describe configmaps game-config
$ oc describe configmaps game-config
出力例
マップにある 2 つのキーが、コマンドで指定されたディレクトリーのファイル名に基づいて作成されていることに気づかれることでしょう。これらのキーの内容は大きい可能性があるため、oc describe
の出力にはキーの名前とそのサイズのみが表示されます。
前提条件
config map に追加するデータを含むファイルを含むディレクトリーが必要です。
次の手順では、サンプルファイル
game.properties
およびui.properties
を使用します。cat example-files/game.properties
$ cat example-files/game.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat example-files/ui.properties
$ cat example-files/ui.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
次のコマンドを入力して、このディレクトリー内の各ファイルの内容を保持する設定マップを作成します。
oc create configmap game-config \ --from-file=example-files/
$ oc create configmap game-config \ --from-file=example-files/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-o
オプションを使用してオブジェクトのoc get
コマンドを入力し、キーの値を表示します。oc get configmaps game-config -o yaml
$ oc get configmaps game-config -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.3.2. ファイルから設定マップを作成する リンクのコピーリンクがクリップボードにコピーされました!
--from-file
フラグを使用すると、ファイルから config map を作成できます。--from-file
オプションを CLI に複数回渡すことができます。
key=value
式を --from-file
オプションに渡すことで、ファイルからインポートされたコンテンツの config map に設定するキーを指定することもできます。以下に例を示します。
oc create configmap game-config-3 --from-file=game-special-key=example-files/game.properties
$ oc create configmap game-config-3 --from-file=game-special-key=example-files/game.properties
ファイルから設定マップを作成する場合、UTF8 以外のデータを破損することなく、UTF8 以外のデータを含むファイルをこの新規フィールドに配置できます。OpenShift Container Platform はバイナリーファイルを検出し、ファイルを MIME
として透過的にエンコーディングします。サーバーでは、データを破損することなく MIME
ペイロードがデコーディングされ、保存されます。
前提条件
config map に追加するデータを含むファイルを含むディレクトリーが必要です。
次の手順では、サンプルファイル
game.properties
およびui.properties
を使用します。cat example-files/game.properties
$ cat example-files/game.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat example-files/ui.properties
$ cat example-files/ui.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
color.good=purple color.bad=yellow allow.textmode=true how.nice.to.look=fairlyNice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
特定のファイルを指定して設定マップを作成します。
oc create configmap game-config-2 \ --from-file=example-files/game.properties \ --from-file=example-files/ui.properties
$ oc create configmap game-config-2 \ --from-file=example-files/game.properties \ --from-file=example-files/ui.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow キーと値のペアを指定して、設定マップを作成します。
oc create configmap game-config-3 \ --from-file=game-special-key=example-files/game.properties
$ oc create configmap game-config-3 \ --from-file=game-special-key=example-files/game.properties
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-o
オプションを使用してオブジェクトのoc get
コマンドを入力し、ファイルからキーの値を表示します。oc get configmaps game-config-2 -o yaml
$ oc get configmaps game-config-2 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -o
オプションを使用してオブジェクトのoc get
コマンドを入力し、key-value (キー/値) ペアからキーの値を表示します。oc get configmaps game-config-3 -o yaml
$ oc get configmaps game-config-3 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- これは、先の手順で設定したキーです。
2.7.3.3. リテラル値からの設定マップの作成 リンクのコピーリンクがクリップボードにコピーされました!
設定マップにリテラル値を指定することができます。
--from-literal
オプションは、リテラル値をコマンドラインに直接指定できる key=value
構文を取ります。
手順
リテラル値を指定して設定マップを作成します。
oc create configmap special-config \ --from-literal=special.how=very \ --from-literal=special.type=charm
$ oc create configmap special-config \ --from-literal=special.how=very \ --from-literal=special.type=charm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-o
オプションを使用してオブジェクトのoc get
コマンドを入力し、キーの値を表示します。oc get configmaps special-config -o yaml
$ oc get configmaps special-config -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.4. ユースケース: Pod で設定マップを使用する リンクのコピーリンクがクリップボードにコピーされました!
以下のセクションでは、Pod で ConfigMap
オブジェクトを使用する際のいくつかのユースケースを説明します。
2.7.4.1. 設定マップの使用によるコンテナーでの環境変数の設定 リンクのコピーリンクがクリップボードにコピーされました!
config map を使用して、コンテナーで個別の環境変数を設定するために使用したり、有効な環境変数名を生成するすべてのキーを使用してコンテナーで環境変数を設定するために使用したりすることができます。
例として、以下の設定マップを見てみましょう。
2 つの環境変数を含む ConfigMap
1 つの環境変数を含む ConfigMap
手順
configMapKeyRef
セクションを使用して、Pod のこのConfigMap
のキーを使用できます。特定の環境変数を挿入するように設定されている
Pod
仕様のサンプルCopy to Clipboard Copied! Toggle word wrap Toggle overflow この Pod が実行されると、Pod のログには以下の出力が含まれます。
SPECIAL_LEVEL_KEY=very log_level=INFO
SPECIAL_LEVEL_KEY=very log_level=INFO
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
SPECIAL_TYPE_KEY=charm
は出力例にリスト表示されません。optional: true
が設定されているためです。
2.7.4.2. 設定マップを使用したコンテナーコマンドのコマンドライン引数の設定 リンクのコピーリンクがクリップボードにコピーされました!
config map を使用すると、Kubernetes 置換構文 $(VAR_NAME)
を使用してコンテナー内のコマンドまたは引数の値を設定できます。
例として、以下の設定マップを見てみましょう。
手順
コンテナー内のコマンドに値を挿入するには、環境変数として使用するキーを使用する必要があります。次に、
$(VAR_NAME)
構文を使用してコンテナーのコマンドでそれらを参照することができます。特定の環境変数を挿入するように設定されている Pod 仕様のサンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 環境変数として使用するキーを使用して、コンテナーのコマンドに値を挿入します。
この Pod が実行されると、test-container コンテナーで実行される echo コマンドの出力は以下のようになります。
very charm
very charm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.4.3. 設定マップの使用によるボリュームへのコンテンツの挿入 リンクのコピーリンクがクリップボードにコピーされました!
設定マップを使用して、コンテンツをボリュームに挿入することができます。
ConfigMap
カスタムリソース (CR) の例
手順
設定マップを使用してコンテンツをボリュームに挿入するには、2 つの異なるオプションを使用できます。
設定マップを使用してコンテンツをボリュームに挿入するための最も基本的な方法は、キーがファイル名であり、ファイルの内容がキーの値になっているファイルでボリュームを設定する方法です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- キーを含むファイル。
この Pod が実行されると、cat コマンドの出力は以下のようになります。
very
very
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定マップキーが投影されるボリューム内のパスを制御することもできます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 設定マップキーへのパス。
この Pod が実行されると、cat コマンドの出力は以下のようになります。
very
very
Copy to Clipboard Copied! Toggle word wrap Toggle overflow