アプリケーションに関係なく、基本的に設定ファイルが存在します。企業では、ほとんどが apollo、nacos などの構成センターを使用します。一部の企業では、主に Kubernetes に付属する構成管理を直接使用しています。
秘密設定情報が Secret に保存されている場合は、暗号化されて Etcd に保存されます。 Pod は次の 2 つの方法で使用できます。
一般的に、Secret に保存される構成情報は、データベース アカウントのパスワード、認証サービス アカウントのパスワードなどの機密情報であり、大きな Secret を使用すると API サーバーと kubelet のメモリを大量に占有するため、Secret は大きすぎないようにしてください。 シークレットを作成するシークレットを作成するには、主に 2 つの方法があります。
YAMLファイルを使用して作成するYAML ファイルを使用して Secret を作成するには、kubectl explain secret で表示できる Secret 構成の詳細を理解している必要があります。主なフィールドは、apiVersion、data、kind、metadata、type です。 たとえば、次のように単純な Secret を作成します。 APIバージョン: v1 このうち、apiVersion、kind、metadata はよく使用されるフィールドですが、ここでは説明しません。タイプはシークレットのタイプを示し、主に次のものが含まれます。
Secret の作成時にタイプが指定されていない場合は、デフォルトで Qpaque タイプが使用されます。さらに、データの値は base64 でエンコードされている必要があります。 kubectlコマンドを使用して作成するkubectl を使用して作成するときに、サブコマンドの情報がわからない場合は、kubectl explain secret を使用して表示できます。 次のコマンドを使用して Secret を作成します。 $ kubectl シークレットを作成します。 汎用シークレット- auth - test --from - literal = ユーザー名= joker --from - literal = パスワード= 123 作成が完了すると、次のようにユーザー名とパスワードの値が自動的に暗号化されていることがわかります。 $ kubectl シークレットを取得しますsecret - auth - test - oyaml コマンドラインでデータを直接入力するだけでなく、次のようにファイルからデータを作成することもできます。 $ echo -n ' admin ' > ./ユーザー名.txt 次に、次のように --from-file を使用してファイルをインポートします。 $ kubectl シークレットジェネリックDB を作成- ユーザー- パス\ 作成されたシークレット値はすべて暗号化されます。プレーンテキスト情報を取得する場合は、次のコマンドを使用します。 $ kubectl get secret db - user - pass - o jsonpath = '{.data.password}' | base64 -- デコード デフォルトでは、シークレットは base64 を使用して暗号化されるため、base64 復号化を使用して直接復号化を行うことができます。 シークレットの使用Secret は単なる静的リソースです。最終的にはそれを使いたいのです。実際には、主に次の方法で使用されます。
上記で secret-auth-test の Secret を作成し、それぞれ以下の 3 つの方法で使用します。 環境変数経由でシークレットを使用するPod オブジェクトには spec.containers.env.valueFrom.secretKeyRef フィールドがあり、次のように Secret フィールドを参照するために使用できます。 APIバージョン: v1 これにより、Secret 内の情報がコンテナの環境変数に挿入され、アプリケーションは環境変数を読み取ってそれを直接使用できるようになります。 マウントによるシークレットの使用次のように、マウント メソッドを使用して、Secret をファイルとしてコンテナーにマウントできます。 APIバージョン: v1 これにより、次のようにデータが /etc/foo ディレクトリにマウントされます。 $ kubectl exec -it mypod -- / bin / sh Secret に複数のキー値がある場合は、次のように 1 つのデータのみをマウントすることもできます。 APIバージョン: v1 上記で指定した volumes.secret.items.path は、次のようにユーザー名のサブディレクトリを指定するために使用されます。 $ kubectl exec -it mypod -password -- / bin / bash さらに、次のように権限を指定することもできます。 APIバージョン: v1 すると、マウントされた Secret の権限が次のように表示されます。 $ kubectl exec -it mypod -permision -- / bin / bash 注: /etc/foo ディレクトリに入り、ls -l を使用して権限を確認すると、権限が 777 であることがわかります。ただし、注意深い人であれば、それが実際にはリンク ファイルであることに気付くでしょう。本当に確認したい権限は、リンクされたファイル、つまり上記の ..data/password の権限です。 イメージを取得するときにSecretを使用する上記では多くの YAML ファイルをリストしましたが、そのいずれも imagePullSecret を設定していません。これは主に、これらのイメージが公式の Dockerhub イメージであり、一般に公開されているためです。 しかし、実際の制作においては、会社のイメージが公開されることはなく、非常に不安です。イメージリポジトリが暗号化されている場合は、イメージをダウンロードするときに docker login が必要です。この操作はKubernetesでも避けられません。 このため、Kubernetes は、イメージをプルするための Secret を指定するために使用される imagePullSecret フィールドを提供します。このシークレットは、イメージ リポジトリの認証情報を保存します。 (1)まず、画像認証情報のSecretを作成します。 kubectl シークレットを作成\ (2)ポッドで使用される。 APIバージョン: v1 この方法で、プライベートウェアハウス内のイメージをプルできます。 要約する要約すると、Secret を使用して他のシステムの機密情報 (データベースのユーザー名やパスワードなど) を保存し、Secret をマウント モードでコンテナーにマウントし、ディレクトリ内のファイルにアクセスして機密情報を取得することができます。 API サーバーによってポッドが作成されると、API サーバーはポッドによって参照されるシークレットが存在するかどうかを確認しません。 Pod がスケジュールされると、kubelet は Secret の値を取得しようとします。 Secret が存在しないか、一時的に API サーバーに接続できない場合、kubelet は定期的に Secret の取得を再試行し、Pod が起動しなかった理由を説明するイベントを送信します。 Pod が Secret を取得すると、kubelet は Secret を含むボリュームを作成してマウントします。すべてのボリュームが正常にマウントされた場合にのみ、ポッド内のコンテナが起動します。 kubelet がポッド内のコンテナを起動した後、Secret 自体が変更されても、コンテナ内の Secret に関連付けられたボリュームは変更されません。更新された Secret を使用するには、古い Pod を削除して新しい Pod を作成する必要があります。 構成マップConfigMap は Secret と似ていますが、一部のアプリケーションの構成情報など、ConfigMap に保存されるデータ情報は暗号化する必要がない点が異なります。その他の使用方法は Secret と同じです。 ConfigMapを作成する同様に、ConfigMap を作成するには 2 つの方法を使用できます。
コマンドでConfigMapを作成するConfigMap オブジェクトのフィールドについて詳しくない場合は、kubectl explain configmap を使用して表示できます。 configmap の作成例を確認したい場合は、次のように kubectl create configmap -h で表示できます。 例: 上記のように、ConfigMap は指定されたディレクトリから作成できます。たとえば、次の構成ファイルを定義します。 $ mkdir configmap -demo 次に、次のコマンドを使用して作成します。 $ kubectl create configmap my - configmap --from - file = ../configmap-demo/ を実行します。 次に、次のコマンドを使用して、作成された configmap を表示します。 $ kubectl 取得cm 2 つのキーはファイルの名前に対応し、値はファイルの内容に対応していることがわかります。キー値を表示する場合は、次のコマンドを使用して表示できます。 $ kubectl get configmap my - configmap - o yaml もちろん、ファイルを通じて configmap を作成することもできます。たとえば、次のように構成ファイルを定義します。 $ cat nginx.conf 次に、次のコマンドで nginx の configmap を作成します。 $ kubectl create configmap nginx - configmap --from - file = nginx 。 会議 作成された情報を表示します。 $ kubectl get configmap nginx - configmap - o yaml 注: --from-file は 1 つのコマンドで複数回指定できます。 さらに、ヘルプ ドキュメントを見ると、--from-literal パラメータを介して構成情報を渡し、文字列を使用して直接作成することもできることがわかります。同様に、このパラメータは複数回使用できます。形式は次のとおりです。 $ kubectl create configmap my - cm - daemo --from - literal = db 。 ホスト= localhost -- from - リテラル= db 。 ポート= 3306 YAML による ConfigMap の作成YAML ファイルを使用して作成するのは比較的簡単です。上記の yaml 情報出力を参照して、次のように YAML ファイルを定義することができます。 APIバージョン: v1 それでは作成しましょう。 ConfigMapの使用ConfigMap の構成データは、次の方法で使用できます。
環境変数経由でConfigMapを使用する次のように、pod.spec.containers.env.valueFrom.configMapKeyRef で ConfigMap を参照するだけです。 APIバージョン: v1 作成後、次のようにログを通じて環境変数の出力を表示できます。 $ kubectl logs env - configmap | grep DB データボリュームでのConfigMapの使用基本的な原理は Secret と同じです。 ここでは、pod.spec.volumes.configMap.name を指定して ConfigMap を指定し、次のようにコンテナにマウントします。 APIバージョン: v1 ログを通じて ConfigMap がマウントされているかどうかを確認できます。 $ kubectl ログボリューム- configmap - テスト 次のように、ConfigMap 値がマップされるデータ ボリューム内のパスを制御することもできます。 APIバージョン: v1 また、ConfigMap がデータボリュームとして Pod にマウントされている場合、ConfigMap が更新されると (または ConfigMap が削除されて再構築されると)、Pod にマウントされている構成情報がホットに更新されます。構成情報が更新されても、アプリケーションが使用できるかどうかは、主にアプリケーションがホットアップデートできるかどうかによって決まります。 要約するConfigMap は実際にはまだ広く使用されており、主に Nginx 構成ファイルや MySQL 構成ファイルなど、一部のアプリケーションの構成ファイルに使用されています。このような構成ファイルをプライベート構成センターに配置する場合は、追加の労力を費やす必要があります。 ConfigMap に配置する方がはるかに便利で、そのほとんどはマウントされた形式でコンテナに配置されます。 |
成功したいなら、心、スキル、身体の3つの段階を経なければなりません。上から下へ心(認知)、スキル(専...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です現在、SEO のあらゆる細部、さ...
今日のインターネット時代は変化の時代です。1 秒に起こったことは次の 1 秒で変化します。もちろん、...
私は、自家用車に乗った経験を共有するかどうかで悩んでいます。私は約 200 回の乗車割引を受けたため...
yyyhostは毎年恒例のダブルイレブン特別プロモーションを開始しました。香港VPS(CN2 GIA...
現在、データセンターの相互接続技術とサービスではクラウド コンピューティング技術が採用されています。...
ハリウッドのヌード写真スキャンダルに関与した有名人数名の代理人を務める弁護士マーティ・シンガー氏は、...
クラウド コンピューティング リソースを導入する企業は、コストをさらに節約する方法に重点を置く必要が...
EuroCloud は、CN2 + BGP 回線に接続された新しい香港データセンターを追加し、香港 ...
米国のメモリアル デー期間中、dedipath はすべての VPS (1Gbps 帯域幅、無制限トラ...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスブログが誕生した当初は、...
gotechperu は比較的新しいホスティング会社で、3 年の歴史があると主張しています。公式 W...
組織のクラウド インフラストラクチャから最大限の価値を引き出すことは困難な作業です。しかし、重要な考...
よくSEOってどんな感じかと聞いてくる友人がいます。彼らはSEOはとても簡単で面白い仕事だと思ってい...
アメリカのクラウドサーバーブランド iON (krypt 傘下) は現在、米国のサンノゼ、ロサンゼル...