OPA の Gatekeeper と Kyverno は、CNCF の 2 つの主要なポリシー管理プロジェクトです。 2つの製品にはそれぞれ利点があります。 Gatekeeperについてはすでに学習しました。次に、Kyverno の使い方を学びましょう。 Kyverno は Nirmata のオープンソース プロジェクトであり、後に CNCF に寄贈されました。 Gatekeeper と同様に、Kyverno も検証および変更機能を備えた Kubernetes ポリシー エンジンですが、リソースを生成する機能や API オブジェクトをクエリする機能も備えています。 Gatekeeper とは異なり、Kyverno はもともと Kubernetes 用に作成されました。 Gatekeeper と比較すると、Kyverno はオブジェクト生成機能に加えて、専用言語なしでポリシーを記述することもできます。実装言語の観点から見ると、Kyverno のモデルはより簡潔です。結局のところ、Gatekeeper の Rego 言語には一定の閾値があります。 同様に、Kyverno は Kubernetes クラスター内で動的アドミッション コントローラーとして実行されます。 Kyverno は、kube-apiserver から検証および変更のアドミッション Webhook HTTP コールバックを受信し、一致するポリシーを適用して、アドミッション ポリシーの適用またはリクエストの拒否の結果を返します。 Kyverno ポリシーは、リソースの種類、名前、ラベル セレクターを使用してリソースを照合し、名前にワイルドカードをサポートします。 ポリシーの適用は Kubernetes イベントを通じてキャプチャされ、Kyverno は既存のリソースに対するポリシー違反も報告します。次の図は、Kyverno の全体的なアーキテクチャを示しています。 キベルノアーキテクチャ Kyverno の高可用性インストールは複数のレプリカを実行することで実現でき、Kyverno の各レプリカには異なる機能を実行する複数のコントローラーが含まれます。 Webhook は Kubernetes APIServer からの AdmissionReview リクエストを処理し、その Monitor コンポーネントは必要な構成を作成および管理します。 PolicyController はポリシー リソースを監視し、構成されたスキャン間隔に基づいてバックグラウンド スキャンを開始し、GenerateController は生成されたリソースのライフサイクルを管理します。 対比Gatekeeper と Kyverno はどちらもポリシー管理プロジェクトなので、当然、これら 2 つのプロジェクトの長所と短所を比較する必要があります。 ゲートキーパーの利点
ゲートキーパーの欠点
Kyvernoの利点
Kyvernoの欠点
上記の比較から、Gatekeeper の最大の弱点は、ポリシー ロジックを実装するために Rego 言語が必要であり、この言語は他の場所では使用できないため、敷居が大幅に高くなることがわかります。もちろん、プログラミング言語は非常に強力なロジックを実装できるため、これも利点です。 Gatekeeper と比較すると、Kyverno の第一印象は、Kubernetes 専用に構築されており、ポリシーを表現するために宣言的なアプローチを使用しているため、そのモデルが Kubernetes オブジェクトの記述と調整と同じであるため、それほど複雑な技術要件がないということです。このモデルにより、ポリシーの記述方法が大幅に簡素化され、ポリシー エンジンの使用の難しさが総合的に軽減されます。さらに、Kyverno のコンパイルおよび生成機能により、Kyverno は単純なアドミッション コントローラーから真の自動化ツールへと進化します。これら 3 つの機能と、最近追加された API クエリ機能を組み合わせることで、Kyverno は Gatekeeper では実行できないタスクを実行できるようになります。このシンプルさと自動化機能、および他のツールとの統合を組み合わせることで、新規ユーザーだけでなく経験豊富なユーザーやオペレーターにも大きな価値をもたらします。 もちろん、選択する特定のツールはニーズと制約に基づいて評価する必要がありますが、すべての本番環境ユーザーは、クラスターのセキュリティを保護し、Kubernetes の管理を簡素化するために、ポリシー エンジンの使用を計画する必要があります。 インストール最新バージョンのリソース リストから Kyverno を直接インストールすることもできます。次のコマンドを実行するだけです。 ➜ kubectl create -f https://raw.githubusercontent.com/kyverno/kyverno/main/config/install.yaml さらに、ワンクリック インストールに Helm を使用することもできます。 ➜ Helm リポジトリにkyverno を追加https://kyverno.github.io/kyverno/ インストールが完了すると、kyverno 名前空間が作成され、関連する CRD もいくつか含まれます。 ➜ kubectl ポッドを取得- n 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 上記のポリシー ファイルに、validationFailureAction=[audit, enforce] 属性が追加されます。
次に、rules 属性を使用して定義されたルール セットがあります。 Match は一致するリソースを示すために使用され、validate は検証方法を示します。ここでは、kyverno: "?*" などのラベルを定義して、そのようなラベル キーが存在する必要があることを示します。 上記のポリシー オブジェクトを適用するだけです。 ➜ kubectl apply -f kyverno -require -label .yaml ここで、ラベル kyverno のない Pod を追加します。 ➜ kubectl run busybox --image = busybox : 1.28 .4 --restart = Never --sleep 1000000 kyverno タグが必要であることを示すプロンプトが表示されます。イベント イベントを表示することで、戦略の適用を理解することもできます。 ➜ kubectl イベントを取得- A - w 作成された Pod に kyverno ラベルが付いている場合は、通常どおり作成できます。 ➜ kubectl run busybox --image = busybox : 1.28 .4 --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 nginx Pod が正常に作成されると、kyverno=nginx ラベルが含まれていることがわかります。 kyverno ラベルのため、上記の検証ポリシーも通過し、正常に作成できます。 リソースを生成する生成ルールは、新しいリソースが作成されたとき、または名前空間の新しい RoleBinding または Secrets を作成するなど、ソースが更新されたときに追加のリソースを作成するために使用できます。 たとえば、シークレットを他の名前空間(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 は柔軟性、パワー、使いやすさのバランスが取れています。学習にそれほど時間をかける必要はなく、非常に便利な機能を提供できます。公式サイトでは、さまざまなシナリオのサンプルが多数提供されており、非常に活用する価値があります。 |
>>: 中義科技:サービス拡大と製品強化、二輪駆動でITインフラ管理レベル向上
Baidu は今再び人気を博しています。Baidu は以前 360 と競争しようとしましたが、失敗し...
Baiduアプリケーション検索を表示するいくつかの方法さまざまなキーワードで Baidu アプリを検...
私はウェブサイトの構築を6~7年、SEOを4~5年研究してきましたが、インターネット技術や検索エンジ...
1. Sina Weibo: ユーザーエクスペリエンスの悪化と商業化の学習能力の欠如Sina Wei...
2013年9月10日は教師の日です。午前中、私は習慣的にウェブサイトのランキングをチェックしていまし...
アプリケーション センターは、その名前が示すように、アプリケーションのコレクションであり、さまざまな...
ソーシャル メディアの人気により、ウェブマスターは多忙になり、より多くのソーシャル メディア マーケ...
cmivps の 618 プロモーション: 香港 CMI ラインの VPS、年間支払いで 30% オ...
[51CTO.com からのオリジナル記事] 2017 年は中国におけるクラウド コンピューティング...
ブラックハット SEO 担当者の中には、検索エンジンのランキング アルゴリズムを深く理解し、非常に熟...
1. ウェブサイトの外部リンクを確認する方法ウェブサイトの外部リンクを検索する方法はたくさんあります...
NetEaseの減算戦略は継続中。 NetEase Community は、業務調整のため、NetE...
私は1年以上もSEOの道を黙々と歩んできました。最初の驚きと新鮮さから、その後の退屈と倦怠感、そして...
dotblock.com は HostRocket.com (1999 年設立、仮想ホスティング、リ...
最近、私はウェディング フォトグラフィーの Web サイトを最適化しており、インターネット上で友好的...