K8S-ConfigMap

作ります

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のディレクトリを、ディレクトリ設定ファイル、含まれていredismysql、次のように、接続情報を:

$ 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-demo1ConfigMapオブジェクトを、次にあなたが使用することができ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つが見ることができるkeytestcm対応する、ファイル名の次のリスト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_HOSTDB_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、対応するサービスを。

おすすめ

転載: www.cnblogs.com/fuyuteng/p/10936309.html