ConfigMap

このページでは、Kubernetes の ConfigMap オブジェクトと、Google Kubernetes Engine でのその使い方について説明します。

ConfigMap とは何か

ConfigMap は、実行時に構成ファイル、コマンドライン引数、環境変数、ポート番号、およびその他の構成成果物をポッドのコンテナやシステム コンポーネントにバインドします。ConfigMap を使用すると、構成をポッドやコンポーネントから分離できます。これにより、ワークロードの移植性が維持され、構成の変更や管理が容易になり、構成データがポッド仕様に制約されなくなります。

ConfigMap は、機密性が低く、暗号化されていない構成情報を保存して共有するのに便利です。クラスタで機密情報を使用するには、シークレットを使用する必要があります。

ConfigMap の作成

次のコマンドを使用して ConfigMap を作成します。

kubectl create configmap [NAME] [DATA]

[DATA] は次のいずれかです。

  • --from-file フラグを使用して指定された 1 つ以上の構成ファイルを含むディレクトリへのパス
  • それぞれが --from-literal フラグを使用して指定された Key-Value ペア

kubectl create の詳細については、リファレンス ドキュメントをご覧ください。

YAML マニフェスト ファイルで ConfigMap オブジェクトを定義し、kubectl create -f [FILE] を使用してそのオブジェクトをデプロイする方法でも ConfigMap を作成できます。

ファイルから

1 つ以上のファイルから ConfigMap を作成するには、--from-file を使用します。ファイルに Key-Value のペアが含まれている限り、.properties.txt.env などの平文形式のファイルを指定できます。

単一のファイルまたは複数のファイルを渡すことができます。

kubectl create configmap [NAME] --from-file [/PATH/TO/FILE.PROPERTIES] --from-file [/PATH/TO/FILE2.PROPERTIES]

複数のファイルを含むディレクトリを渡すこともできます。

kubectl create configmap [NAME] --from-file [/PATH/TO/DIRECTORY]

ConfigMap をファイルに基づいて作成する場合は、キーがデフォルトでファイルのベース名に設定され、値がデフォルトでファイルの内容に設定されます。代替キーを指定することもできます。

ディレクトリに基づく ConfigMap の場合は、ディレクトリ内の有効なキーがベース名になっている各ファイルが ConfigMap にパッケージ化されます。シンボリック リンク、デバイス、パイプなどの非正規ファイルは、kubectl によって無視されます。サブディレクトリも無視されます。kubectl create configmap はサブディレクトリに再帰しません。

たとえば、次のコマンドは、game-configs ディレクトリから game-data という名前の ConfigMap を作成します。このディレクトリには、2 つの properties ファイル(game.propertiesui.properties)が含まれています。

kubectl create configmap game-data --from-file game-configs/

kubectl get configmap game-data -o yaml を実行すると、次の出力が返されます。

apiVersion: v1
data:
  game.properties: |
    enemies=aliens
    lives=3
    ...
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    ...
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: game-data
  namespace: default
  resourceVersion: ...
  selfLink: /api/v1/namespaces/default/configmaps/game-data
  uid: ...

リテラル値から

ConfigMap をリテラル値から作成するには、--from-literal を使用します。

たとえば、次のコマンドは、2 つの Key-Value ペアを含む literal-data という名前の ConfigMap を作成します。

kubectl create configmap literal-data --from-literal key1=value1 --from-literal key2=value2

各キーと値のペアに対して --from-literal を指定します。

kubectl get configmap literal-data -o yaml を実行すると、次の出力が返されます。

apiVersion: v1
data:
  key1: value1
  key2: value2
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: literal-data
  namespace: default
  resourceVersion: ....
  selfLink: /api/v1/namespaces/default/configmaps/literal-data
  uid: ...

ConfigMap の使用

ワークロードで ConfigMap を使用するには、ConfigMap の値を参照する環境変数を指定するか、ConfigMap を含むボリュームをマウントします。

ConfigMap の使用方法については、ConfigMap を使用するようにポッドを構成するをご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント