Kyverno は Nirmata のオープンソース プロジェクトであり、後に CNCF に寄贈されました。 Kyverno は検証と変更の機能を備えた Kubernetes ポリシー エンジンですが、リソースを生成したり、API オブジェクトをクエリする機能を追加したりする機能も備えています。 Kyverno はもともと Kubernetes 用に作成されたもので、オブジェクト作成機能に加えて、専用の言語を必要とせずにポリシーを記述することもできます。 同様に、Kyverno は Kubernetes クラスター内で動的アドミッション コントローラーとして実行されます。 Kyverno は、kube-apiserver から検証および変更のアドミッション Webhook HTTP コールバックを受信し、一致するポリシーを適用して、アドミッション ポリシーの適用またはリクエストの拒否の結果を返します。 Kyverno ポリシーは、リソースの種類、名前、ラベル セレクターを使用してリソースを照合し、名前にワイルドカードをサポートします。 ポリシーの適用は Kubernetes イベントを通じてキャプチャされ、Kyverno は既存のリソースに対するポリシー違反も報告します。次の図は、Kyverno の全体的なアーキテクチャを示しています。 キベルノアーキテクチャ Kyverno の高可用性インストールは複数のレプリカを実行することで実現でき、Kyverno の各レプリカには異なる機能を実行する複数のコントローラーが含まれます。 Webhook は Kubernetes APIServer からの AdmissionReview リクエストを処理し、その Monitor コンポーネントは必要な構成を作成および管理します。 PolicyController はポリシー リソースを監視し、構成されたスキャン間隔に基づいてバックグラウンド スキャンを開始し、GenerateController は生成されたリソースのライフサイクルを管理します。 インストールまず、Kubernetes クラスターのバージョンが v1.14 より上であることを確認する必要があります。インストールするバージョンも Kubernetes のバージョンに関連しています。 互換性のあるバージョン すでにバージョン v1.26.x がインストールされていますので、最新バージョン 1.9.2 をインストールすることを選択してください。 最新バージョンのリソース リストから Kyverno を直接インストールすることもできます。次のコマンドを実行するだけです。 ➜ kubectl create -f https://github.com/kyverno/kyverno/releases/download/v1.9.2/install.yaml さらに、ワンクリック インストールに Helm を使用することもできます。 ➜ Helmリポジトリにkyvernoを追加https://kyverno.github.io/kyverno/ インストールが完了すると、kube-kyverno 名前空間が作成され、関連する CRD もいくつか含まれます。 ➜ kubectl get pods - n kube - kyverno インストールが完了すると、いくつかの validatingwebhookconfiguration オブジェクトと mutatingwebhookconfigurations オブジェクトが作成されることがわかります。 戦略とルールKyverno を使用するということは、実際には戦略とルールを適用することです。 Kyverno 戦略はルールの集合です。各ルールは、match ステートメント、オプションの exclude ステートメント、および validate、mutate、generate、または verifyImages ステートメントのいずれかで構成されます。各ルールには、validate、mutate、generate、または verifyImages サブステートメントを 1 つだけ含めることができます。 キベルノ戦略 ポリシーは、クラスター全体のリソース (ClusterPolicy) または名前空間レベルのリソース (Policy) として定義できます。
ポリシー定義ポリシーを記述するということは、実際には Policy または ClusterPolicy オブジェクトを定義することです。 リソースを確認する検証ルールは、基本的に私たちが使用するルールの中で最も一般的で実用的なタイプです。ユーザーまたはプロセスが新しいリソースを作成すると、Kyverno はそのリソースのプロパティを検証ルールと照合し、検証に合格した場合はリソースの作成を許可します。検証に失敗した場合、作成はブロックされます。たとえば、すべてのポッドに kyverno というラベルを含めることを要求するポリシーを追加してみましょう。 # kyverno - require -ラベル.yaml 上記のポリシー ファイルに、validatinotallow=[Audit, Enforce] 属性が追加されます。
次に、rules 属性を使用して定義されたルール セットがあります。 Match は一致するリソースを示すために使用され、validate は検証方法を示します。ここでは、kyverno: "?*" などのラベルを定義して、そのようなラベル キーが存在する必要があることを示します。 上記のポリシー オブジェクトを適用するだけです。 ➜ kubectl apply -f kyverno -require -label .yaml ここで、ラベル kyverno のない Pod を追加します。 ➜ kubectl run busybox --image = busybox : 1.28 .3 --restart = Never --sleep 1000000 kyverno タグが必要であることを示すプロンプトが表示されます。イベント イベントを表示することで、戦略の適用を理解することもできます。 ➜ kubectlイベントを取得- A - w 作成された Pod に kyverno ラベルが付いている場合は、通常どおり作成できます。 ➜ kubectl run busybox --image = busybox : 1.28 .3 --labels kyverno = demo --restart = Never --sleep 1000000 validationFailureAction の値を Audit に変更すると、作成した Pod は kyverno ラベルがなくても正常に作成されますが、PolicyReport オブジェクトで対応する違反レポートを確認できます。 ➜ kubectlポリシーレポートを取得する 上記のレポート リソースから、ポリシーに違反するリソース オブジェクトを確認できます。 ルールの変更変更ルールを使用すると、ルールに一致するリソースを変更できます (たとえば、ルールによってリソースのメタデータと結合できるメタデータ フィールドが設定されている場合)。つまり、設定したルールに従って対応するリソースを変更します。 たとえば、nginx イメージを含むすべてのポッドにラベル (kyverno=nginx) を追加するには、以下に示すようなポリシーを追加します。 # kyverno -変異-ラベル.yaml 上記の戦略オブジェクトを適用するだけです。 ➜ kubectl apply -f kyverno -mutate -label .yaml ここで、nginx イメージを使用して Pod を直接作成します。 ➜ kubectl run --image = nginx : 1.7 .9 nginx Pod が正常に作成されると、kyverno=nginx ラベルが含まれていることがわかります。 kyverno ラベルのため、上記の検証ポリシーも通過し、正常に作成できます。 リソースを生成する生成ルールは、新しいリソースが作成されたとき、または名前空間の新しい RoleBinding または Secrets を作成するなど、ソースが更新されたときに追加のリソースを作成するために使用できます。 たとえば、現在、私たちの要件の 1 つは、シークレットを他の名前空間 (TLS キー、イメージ リポジトリの認証情報など) と同期することです。これらのシークレットを手動でコピーするのは面倒なので、Kyverno を使用してこれらのシークレットを同期するための戦略を作成できます。たとえば、デフォルトの名前空間に regcred という名前の Secret オブジェクトがあり、これを別の名前空間にコピーする必要があります。ソース シークレットが変更されると、コピーされたシークレットも同期的に更新されます。 # kyverno -生成-シークレット.yaml まず、デフォルトの名前空間に Secret オブジェクトを準備します。 ➜ kubectlシークレットを作成docker -レジストリregcred -- docker - server = DOCKER_REGISTRY_SERVER -- docker - username = DOCKER_USER -- docker - password = DOCKER_PASSWORD -- docker - email = DOCKER_EMAIL 次に、上記の同期秘密戦略を適用します。 ➜ kubectl apply -f kyverno -generate -secret .yaml ここで、新しい名前空間を作成します。 ➜ kubectl作成nsテスト 新しく作成された名前空間に、regcred という名前の追加の Secret オブジェクトがあることがわかります。 Kyverno のポリシーの詳細については、公式 Web サイト (https://kyverno.io/policies) をご覧ください。ポリシーの種類、カテゴリ、テーマなどでフィルタリングできます。Kyverno は柔軟性、パワー、使いやすさのバランスが取れています。学習にそれほど時間をかける必要はなく、非常に便利な機能を提供できます。公式サイトでは、さまざまなシナリオのサンプルが多数提供されており、非常に活用する価値があります。 たとえば、NGINX Ingress のパス値を制限するには、次のようなポリシーを作成します (CVE-2021-25745 セキュリティ問題、NGINX Ingress v1.2.0 で修正済み)。 apiバージョン: kyverno.io/v1 |
<<: Yifupayクラウドネイティブデータ開発およびガバナンスプラットフォームの実践
SEOをやっていたものの、以前の仕事とはどんどん違いが出てきており、小さなサイトしかなく、長い間更新...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboは、インターネ...
現在、raksmart は zhujimao.com 向けに特別にカスタマイズしたクラスター サーバ...
5G、AR、AIoT などのシナリオが次世代クラウド アーキテクチャの進化を推進し、コンテナがクラウ...
1. はじめにガーナーは、2022 年までにすべてのデータベースの 75% がクラウド プラットフォ...
社内アプリケーション開発から利益を得たいと考えている企業は、クラウドで次のレベルに進む必要があります...
第7回中国インターネットウェブマスター年次大会が終了し、A5ウェブマスターの間でも危機感が高まってい...
月給5,000~50,000のこれらのプロジェクトはあなたの将来ですモバイルインターネットの登場以来...
2018 年に別れを告げ、2019 年を迎えましょう。2018 年、クラウド コンピューティングの分...
ipserver.su はロシアの商人です (登録情報は詳しく文書化されています。ここをクリックして...
新浪科技報4月10日午後、A8ミュージックは本日、国家新聞出版広電総局(旧国家新聞出版総局)が発行す...
皆さん、良い週末をお過ごしください。今朝、パソコンの電源を入れた時に、ある情報が目に入りました。マー...
ハンガリーの VPS 販売業者である MikroVPS.hu は、VPS ビジネスに注力しています。...
劉愛林人人代(正式名称「人人代ビジネスコンサルタント(北京)有限公司」)は、10回連続で財務計画を発...
「ハイブリッド」という言葉は、通常は自動車に関連していますが、ほとんどの人はその言葉を知っています。...