K8S configMap原則導入

:パラメータは、コンテナアプリケーションの実装に渡された
  設定ファイル1.直接ミラーパッケージに、しかし十分な柔軟性ではない設定を変更するため、このアプローチは、推奨されません。
  2.ポッドのリストを定義することにより、カスタムコマンドラインパラメータ、すなわちセット引数を指定します。また、[「オーダーパラメータ」]、
      ポッドで開始することができるが、パラメータは、ポッドのアプリケーションの構成ファイルを変更する通過
  3。ポッド内の設定パラメータを変更するためにアプリケーションを渡すために、環境変数を使用して
     いますが、この方法を使用するには、次のいずれかの条件を満たしている必要があります。
      1)アプリケーションは、設定環境変数をロードするために直接サポートポッドクラウドネイティブアプリケーションである必要があります情報。
      2)エントリポイントの変数は、これらのスクリプトは、エントリポイントあらかじめ定義されたスクリプトによってアプリケーションポッド用の設定ファイルを変更するために
       はgrepツールなどを変更することなく、これらのツールでコンテナことを保証するために、sedは、設定することができます。
  4.ストレージ・ボリューム:我々は、PVとして、ストレージ・ボリュームに直接情報を構成、ポッドは、開始時刻、自動ローディングプロファイルディレクトリストレージボリューム、
      異なる構成でポッドアプリケーションを達成します。
  5. configMapや秘密
    

configMapの主な役割:
  configMapが実際にコンフィギュレーション情報のシリーズのコレクションですので、ミラーの移植性と再利用性を達成するために、将来はコンテナポッドの用途に直接注入することができ、イメージおよびコンフィギュレーションファイルは、デカップリングできるようにすることです、configMap configMapKeyRefがENVを介して容器に注入されるようconfigMapストレージボリュームに二つの方法、いずれかを注入しながら、configMap KeyValve形態は、例えば、データを保存することである:名前= zhangsan又はnginx.conf = 「HTTPサーバー{{...}} 」 値configMapの長さは、それが全体のプロファイル情報とすることができ、限定されるものではありません。
configMap:ポッドパス設定パラメータを達成するための2つの方法がありK8S、標準コンポーネントであり、
  ポッドを開始するときA.直接configMap環境変数で定義され、configMap環境ENVに定義された変数への参照。
  B. Aは、その後、完全なプロファイルconfigMapにパッケージパラメータを渡すために、アプリケーションを実現するために、体積で共有ポッドに取り付けられています。
秘密:そのデータを直接configMapにプレーンテキストで保存されていないので、それは、base64エンコードによって作らconfigMapので、それは比較的安全configMapが、あるとき、保護効果を果たしたが、専門家のための抗Base64エンコードどんな困難もなく、それだけで比較的安全です。

最初にconfigMapのために、ポッドの道configMap環境変数が参照してみましょう:
  pods.spec.containers.envの#ENVも直接覚えておくことがポイント容器内にポッドに渡される環境変数を定義EXPLAIN kubectl。
    env.valueFrom
       configMapKeyRef:定義ポッドはconfigMapKeyを起動したとき、それは参考のために使用することができますがこれは。
       するFieldRef:のような、参照フィールド、容器ポッド値内の各アプリケーションの環境変数であってもよい
       metadata.name:ポッド参照名
       metadata.namespace:名前空間名ポッド位置を指す
       metadata.labels:ポッドを参照タグ
       status.hostIP:参照ポッドからIPノード
       status.podIPは:IPポッド参照
       resourceFieldRefを:リソースまたはリソース要求への言及は、限定
       secretKeyRef:参照パラメータ受け渡しに秘密鍵がポッドで

configMapを定義する場合、典型的にのみそのデータを定義する必要がありますまたはbinaryData(バイナリデータ)、タリアマップ[ストリング]、型で
はない直接キー値に関連するそれらの値は、ハッシュリストに格納されているように、すなわち、ハッシュコードキーです。

configmapの作成例:
  #コマンドが作成されます
  kubectl作成configmapのnginx-config設定リテラルを= nginx_port --from --from-リテラル= 80 = SERVER_NAME = myapp.test.com

  kubectl GET configmap

  CM&LT nginxの設定-DESCRIBE kubectlの

  ファイルキー値の内容でください#を
  Vimのw3c.confの
    サーバー{
        サーバー名bbs.test.com;
        80聞くが、
     ルート/データ/ nginxの/ BBS /
   }

#メモ:名前がconfigmapにアンダースコアをサポートしていません。 !
  #このWWWと呼ばれるキーの定義である、の内容はwww.confある。
  Kubectl作成ConfigMapのnginxの-WWW---from WWWファイル= =。/ Www.conf 

  これはwww.confと呼ばれるキーの定義で#、の内容はwww.confある
  kubectl ConfigMap nginxのファイル・WWWを作成--- =から。/ Www.conf 

  kubectl GET WWW -o-CM&LT nginxのYAMLは
  センチDESCRIBE&LT nginxのkubectl -www

ポッドのコンテナで定義されている例#configMap伝送変数:
VimのPOD - configmap.yaml 
apiVersion:V1 
種類:ポッド
メタデータ:
  名前:POD -CM- 1つの。
  名前空間デフォルト
  ラベル:
     アプリケーション:のMyApp 
     ティア:フロントエンド
  注釈:
     テスト。 COM / created- によって: "クラスタADMIN" 
仕様:
  コンテナ:
   -   名前:myappの
     画像:ikubernetes / myappの:v1の
     ポート:
      -    名前:HTTP 
         containerPort:80 
     ENV:
      - 名前:NGINX_SERVER_PORT
       valueFromおよび:
         configMapKeyRef:
            名前:nginxの - 設定
            キー:nginx_port
      -   名前:NGINX_SERVER_NAME 
        valueFromおよび:
          configMapKeyRef:
            名前:nginxの - 設定
            キー:SERVER_NAME

#このアプリケーションの使用configMapポッド

  POD-configmap.yaml -f kubectl適用

#ポッドビューconfigMapの着信変数を入力するには、
  Execの-it POD-CM-1 kubectl - / binに/ SH
  。/##は私たちが渡された変数のない定義を持っていないは、printenvを参照してください

#その後、我々 configmapはあなたがすぐにポッドに発効することができるかどうか、値を変更できます
  。kubectl編集センチのnginx-config設定#nginxの-configがこのconfigmapの外観の値を変更します
  センチのnginx-config設定#確認の編集がキーconfigmapに変更されたDESCRIBE kubectl値。

#次に着陸ポッド-CM-1ポッドでは、可変コンテナの値が変化するかどうかを確認します。
ポッドを作成し、データがconfigmapにロードされたときに変更されません値を見ることができます#は、それだけになります。

#Configmapは、共有するようにしてボリュームをマウントするには:
VimのPOD -configmap- 2 .yamlの
apiVersion:V1 
種類:ポッド
メタデータ:
  名前:POD -CM- 2 
  名前空間デフォルト
  ラベル:
    アプリケーション:のMyApp 
    ティア:フロントエンド
  注釈:
    test.com / created- によって: "クラスタADMIN" 
仕様:
 コンテナ:
  - 名前:myappの
   画像:ikubernetes / myappの:v1の
   ポート:
    - 名前:HTTP 
     containerPort:80 
   volumeMounts:
    - 名前:nginxconf 
     MOUNTPATH:/etc/nginx/config.d/    #マウントポイントは、ポッドが自動的に作成され、存在しません。
     読み取り専用:trueに       #コンテナ設定の内容を変更させることができません。
ボリューム:
 -   名前:名#ストレージ・ボリュームを定義nginxconfがnginxconfある
   configMap:
     名前:nginxの -config#nginxの-config設定このconfigMapをマウントします

   #は、ポッドが作成
  -f-POD-ConfigMapは2.yaml適用kubectl

  &kubectl POD-CM LT Execは、IT-2を迅速化- / binに/ SH
  / LS#-l /etc/nginx/config.d/
    合計0
    。ルートlrwxrwxrwxルート1. 17 13:48 nginx_port 7月21日- > ..data / nginx_port
    lrwxrwxrwx 1つのルートルート7月18日21 13:48 SERVER_NAME - > ..data /サーバー名

注:あなたは、接続config.dは、以下の2つのファイルを作成します見ることができます彼らnginxの-config設定configMapファイルを指す変数の値は、キー名という名前の接続ファイル、接続ファイルを定義し、この上のコンテンツは、つまり、configmapファイルが変更されたとき、それは同期に変更されます実際にconfigmapファイルの新しいバージョンですAPIサーバー、誰が、あなたは動的更新設定ファイルを達成できるように、また、コンテンツの新バージョンとなります参考文献の内容の後にそれらへのすべての参照を変更するには、通知でAPIServer。

#テスト動的更新は、変数の値をconfigmap
  kubectl編集センチのnginx-config設定   
     #ビューポッドを変更するには8888にnginxの-設定SERVER_PORTを変更します。
      しかし、それはのAPIServer通知を完了するまでに時間がかかるので、我慢して。

一般的に敏感でないデータは、プレーンテキストconfigMapに保存することができれば、それは、パスワードに来る場合は、秘密鍵と他のデータ型は、秘密を使用する必要があります。

秘密の3つのタイプがあります。

  ジェネリック:通常の暗号化データを格納するために使用される一般的なタイプ。
  TLS:このタイプは、唯一の秘密鍵と証明書を格納するために使用されます。
  ドッキングウィンドウ-レジストリ:認証情報]ドッキングウィンドウの倉庫を保存するには、それが作成するには、このタイプを使用する必要があります。


#MySQLのルートパスワードの秘密を作成します。
  kubectl秘密の一般的なMySQLのルートパスワードを作成します[email protected]*9
    注:これは秘密のジェネリック型を定義し、名前はmysqlのです-root-パスワード、キー値が[email protected]*9で、パスワードで

  kubectl GETシークレット
  kubectlシークレットMySQLのルートパスワードをDESCRIBE
  YAML -oシークレットMySQLのルートパスワードの#をGET kubectlこのキーの値は、パスワードで見ることができます暗号化された

#が、暗号化は、それがで作られたデータをエンコードのみbase64であり、擬似秘密の暗号化である。
  エコー  パスワードキー値  |#1 -d -dをbase64で:デコードされ、あなたはbase64では太りすぎ見ることができるようにプレーンテキストのパスワード。

#参考文献の秘密のリストを作成しますポッド:
vimのPOD -secret- 1 .yamlの
apiVersion:v1の
種類:ポッド
メタデータ:
  名前:POD -secret- 1 
  名前空間デフォルト
  ラベル:
     アプリケーション:myappという
     ティア:フロントエンド
 注釈:
     test.com /作成されました- によって: "クラスタADMIN" 
仕様:
  コンテナ:
   -   名前:myappの
     画像:ikubernetes / myappに:V1 
     :ポート
      -   名前:HTTP 
        containerPort:80 
     ENV:
      -  名前:MYSQL_ROOT_PASSWORD#ポッド容器にそれが成功した後、起動環境変数名ポッド。
        valueFromおよび:
          secretKeyRef:
            名前:MySQLの -root- パスワード#これはオブジェクト名秘密です
            キー:パスワード#それはでキー名の秘密です

  :インポートコンテンツ#秘密ポッドを作成すると、
  -f POD-secret.yaml適用kubectl
  。。| -容器に注入グレップ「MYSQL_ROOT_PASSWORD」#は秘密がクリアテキストで保存されていることが分かるprintenvのkubectl Execの秘密-POD 1

:拡張
  CoreOSを:
    組織は、より複雑なタスクを完了するために私たちを助けることができるので、運用・保守エンジニアがオペレータにカプセル化され、より複雑なロジック、オペレータのいくつかに対処しますことができます演算子(運用および保守エンジニア)と呼ばれるK8Sコンポーネントを、開発しました。

おすすめ

転載: www.cnblogs.com/wn1m/p/11288860.html