作ります
ConfigMap
リソースオブジェクト使用key-value
できるコンフィギュレーション・データをキーと値のペアの形をPod
、それを使用し、ConfigMap
そして我々は戻って対処したいSecrets
比較的類似し、比較的大きな差があるConfigMap
パスワードなどのいくつかの非機密データを扱うために、より便利にすることができまだ必要なSecrets
管理されます。さんが示す次の例を見てみましょうConfigMap
の使用を:
種類:ConfigMap apiVersion:V1の メタデータ: 名前:センチ - デモ 名前空間:デフォルトの データ: データ。1 :ハロー データ。2 :世界の 設定: | プロパティ。1 =値- 1つの プロパティ。2 =付加価値2 プロパティ。3 =値- 3
コンフィギュレーション・データを前記data
次の設定属性のは、最初の二つは、単一の属性を保持するために使用され、バックには、プロファイルを保持するために使用されます。
もちろん、我々が使用できるのと同じkubectl create -f xx.yaml
上記作成しConfigMap
たオブジェクトを、私たちが作成する方法がわからない場合はConfigMap
忘れてはいけない、それがkubectl
私たちの最良の教師であるが、使用することができますkubectl create configmap -h
作成について確認するためにConfigMap
ヘルプ情報を、
Examples:
# Create a new configmap named my-config based on folder bar
kubectl create configmap my-config --from-file=path/to/bar
# Create a new configmap named my-config with specified keys instead of file basenames on disk
kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt
# Create a new configmap named my-config with key1=config1 and key2=config2
kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
私たちは、それが与えられたからカタログを作成することができます見ることができConfigMap
、我々が持っているような、対象testcm
のディレクトリを、ディレクトリ設定ファイル、含まれていredis
とmysql
、次のように、接続情報を:
$ ls testcm
redis.conf
mysql.conf
$ cat testcm/redis.conf
host=127.0.0.1
port=6379
$ cat testcm/mysql.conf host=127.0.0.1 port=3306
その後、我々は使用することができますfrom-file
ので、設定ファイルを含むディレクトリを作成するには、キーワードをConfigMap
:
$ kubectl create configmap cm-demo1 --from-file=testcm
configmap "cm-demo1" created
どこにfrom-file
次のパラメータ内のすべてのファイルがディレクトリで使用されます指定するConfigMap
キーと値のペアを作成するために、内部に、キー値は、ファイルの内容で、ファイル名の名前です。
作成したら、同じことが、我々は表示するには、次のコマンドを使用することができますConfigMap
リストを:
$ kubectl get configmap
NAME DATA AGE
cm-demo1 2 17s
あなたは既に作成さ見ることができるcm-demo1
のConfigMap
オブジェクトを、次にあなたが使用することができdescribe
、詳細な情報を確認するためのコマンドを:
kubectl describe configmap cm-demo1
Name: cm-demo1
Namespace: default
Labels: <none>
Annotations: <none>
Data
==== mysql.conf: ---- host=127.0.0.1 port=3306 redis.conf: ---- host=127.0.0.1 port=6379 Events: <none>
我々は2つが見ることができるkey
でtestcm
対応する、ファイル名の次のリストvalue
そして、ここでの構成情報内部の大きなファイルならば、ことは注目に値する、値はファイルの内容であるdescribe
時は、キーを表示するために、対応する値が表示されない場合があります次のコマンドを使用できます。
$ kubectl get configmap cm-demo1 -o yaml
apiVersion: v1
data:
mysql.conf: |
host=127.0.0.1
port=3306
redis.conf: |
host=127.0.0.1 port=6379 kind: ConfigMap metadata: creationTimestamp: 2018-06-14T16:24:36Z name: cm-demo1 namespace: default resourceVersion: "3109975" selfLink: /api/v1/namespaces/default/configmaps/cm-demo1 uid: 6e0f4d82-6fef-11e8-a101-525400db4df7
作成されたファイルのディレクトリに加えて、我々はまた、作成され、指定されたファイルを使用することができますConfigMap
例えば、私たちが作成し、上記の設定ファイルと同様に、redis
別々の設定ConfigMap
オブジェクトを:
$ kubectl create configmap cm-demo2 --from-file=testcm/redis.conf
configmap "cm-demo2" created
$ kubectl get configmap cm-demo2 -o yaml
apiVersion: v1
data:
redis.conf: |
host=127.0.0.1
port=6379 kind: ConfigMap metadata: creationTimestamp: 2018-06-14T16:34:29Z name: cm-demo2 namespace: default resourceVersion: "3110758" selfLink: /api/v1/namespaces/default/configmaps/cm-demo2 uid: cf59675d-6ff0-11e8-a101-525400db4df7
私たちは、関連する見ることができるredis.conf
のファイル構成情報ConfigMap
その他のことは注目に値する、オブジェクトが正常に作成され--from-file
、我々は2を指定して、ここで使用など、このパラメータは複数回使用することができますredis.conf
し、mysql.conf
あなたが全体のディレクトリを指定しても同様の効果を直接、ファイル。
また、我々はまたによって作成された直接の文字列を使用することができていることがわかりますヘルプドキュメントを通じて--from-literal
、同じ設定パラメータを渡すには、このパラメータは次の形式で複数回使用することができます。
$ kubectl create configmap cm-demo3 --from-literal=db.host=localhost --from-literal=db.port=3306
configmap "cm-demo3" created
$ kubectl get configmap cm-demo3 -o yaml
apiVersion: v1
data:
db.host: localhost
db.port: "3306"
kind: ConfigMap
metadata:
creationTimestamp: 2018-06-14T16:43:12Z
name: cm-demo3
namespace: default
resourceVersion: "3111447"
selfLink: /api/v1/namespaces/default/configmaps/cm-demo3
uid: 06eeec7e-6ff2-11e8-a101-525400db4df7
使用
ConfigMap
成功の作成、我々はどのようにする必要がありPod
、それを使用しますか?私たちは、と言うConfigMap
これらのデータは、によって、様々な方法で構成することができPod
、主に次のような方法で、年間使用しました:
- 環境変数の設定値
- コンテナに設定されているコマンドライン引数
- ボリューム内のデータのconfigファイルを作成します。
まず、使用しConfigMap
、当社の環境変数を埋めるために:
apiVersion:v1の 種類:ポッドの メタデータ: 名前:testcm1 - ポッド 仕様: コンテナ: - 名前:testcm1 画像:busyboxのの コマンド:[ " / binに/ SH "、" -c "、" ENV " ] ENV : - 名前:DB_HOST valueFromおよび: configMapKeyRef: 名前:センチ - demo3 キー:db.host - 名前:DB_PORT valueFromおよび: configMapKeyRef: 名前:センチ -demo3 キー:db.port envFrom: - configMapRef: 名前:センチ -demo1
ポッドが出力されます、次の行を実行した後:
$ kubectl logs testcm1-pod
......
DB_HOST=localhost
DB_PORT=3306 mysql.conf=host=127.0.0.1 port=3306 redis.conf=host=127.0.0.1 port=6379 ......
私たちは見ることができるDB_HOST
とDB_PORT
私たちはここにいるので、直接通常の出力、他の環境変数を持ってcm-demo1
、それを注入する入って来たので、彼らを出力する全体の鍵を出し、これは期待に沿ったものです。
加えて、我々は、使用できるConfigMap
コマンドラインパラメータを設定するConfigMap
パラメータ値または次のコマンド容器を、設定するために使用されてもよいですPod
。
apiVersion:v1の 種類:ポッドの メタデータ: 名前:testcm2 - ポッド 仕様: コンテナ: - 名前:testcm2 画像:busyboxのの コマンド:[ " / binに/ SH "、" -c "、" $(DB_HOST)$(DB_PORTを)エコー" ] ENV : - 名前:DB_HOST valueFromおよび: configMapKeyRef: 名前:センチ - demo3 キー:db.host - 名前:DB_PORT valueFromおよび: configMapKeyRef: 名前:センチ - demo3 キー:db.port
実行してPod
出力した後、次の情報を:
$ kubectl logs testcm2-pod
localhost 3306
別の用途は非常に一般的であるConfigMap
方法:データボリュームの使用はしたデータ量、使用することによってConfigMap
、ファイルはデータ量に充填されたが、このファイルには、ファイル名がキーで、キーは、ファイルの内容です:
apiVersion:v1の 種類:ポッドの メタデータ: 名前:testcm3 - ポッド 仕様: コンテナ: - 名前:testcm3 画像:busyboxのの コマンド:[ " / binに/ SH "、" -c "、" 猫/etc/config/redis.conf " ] volumeMounts: -名前:CONFIG- ボリューム MOUNTPATH:の/ etc / 設定 ボリューム: -名前:CONFIG- ボリューム configMap: 名前:センチ -demo2
実行Pod
、およびログを表示します。
$ kubectl logs testcm3-pod
host=127.0.0.1
port=6379
もちろん、我々はまた、であってもよく、ConfigMap
以下のボリューム値が行くようにマッピングされているデータの制御パスPod
の定義:
apiVersion:v1の 種類:ポッドの メタデータ: 名前:testcm4 - ポッド 仕様: コンテナ: - 名前:testcm4 画像:busyboxのの コマンド:[ " / binに/ SH "、" -c "、" 猫の/ etc / configに/パス/ /へmsyql.conf " ] volumeMounts: -名前:CONFIG- ボリューム MOUNTPATH:の/ etc / 設定 ボリューム: -名前:CONFIG- ボリューム configMap: 名:CM - DEMO1 アイテム: -キー:mysql.conf パス:パス /to/msyql.conf
実行Pod
、およびログを表示します。
$ kubectl logs testcm4-pod
host=127.0.0.1
port=3306
また場合、注意ConfigMap
ロールの形式へのデータのローディングPod
次に更新した場合、ConfigMap
(または削除再構成ConfigMap
)、Pod
熱負荷の構成情報が更新されます。その後、あなたは、変更された後、スクリプトの設定ファイルを監視の数を増やすことができreload
、対応するサービスを。