アプリケーションに関係なく、基本的に設定ファイルが存在します。企業では、ほとんどが 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 に配置する方がはるかに便利で、そのほとんどはマウントされた形式でコンテナに配置されます。 |
サイト グループを設定する理由については、人それぞれ理由があります。私が説明したい理由は非常に単純で...
2007年に海外で最も利用率の高いSEOツール1 SEO分析ツールのトップ10を挙げる2 バックリン...
衛星通信は、将来、非常に遠隔地や、すべての通信技術が機能しない状況など、さまざまな状況で実行可能にな...
「羊肉を売っているふりをして犬肉を売る」など、オンライン詐欺の手口が後を絶たず、一般消費者が警戒する...
ウェブマスター、特に草の根ウェブマスターであれば、複数のウェブサイトを運営することになります。しかし...
ダブルイレブンとブラックフライデーの期間中、akkocloudは皆様に特別に有益な情報を提供しました...
路上で誰かを迎えに行くと、彼らはわずか3文でB2BO2OP2Pについて話しますこれは、もう少し関心を...
serversub からメールを受け取りました。香港に新しいデータ センターが追加されました。数日前...
1. 周洪一:盗作とバンドルは中国のインターネットに深刻なダメージを与えた4月16日午後、360カン...
今日、企業は急速に変化するテクノロジーに対応するために革新を期待し、クラウド コンピューティング テ...
【概要】同時に、年齢を重ねるにつれて、一部のユーザーは家庭生活を離れ始め、日本の二次元文化に焦点を当...
SEO を始めるのは比較的簡単なので、どのウェブマスターでも自分のウェブサイトで SEO の最適化を...
5 日に、SEO 担当者が取引交渉を経験したいくつかの記事を公開しました。その後、取引交渉の過程で遭...
検索エンジンのランキングの決定的な列に入るにはどうすればよいでしょうか? 多くの人は、外部リンクとコ...
nogics.com 社はインドで設立され、仮想ホスティング、VPS、独立サーバー、ドメイン名登録、...