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インフラ管理レベル向上
QuickWeb の価格は常に同じです。市場は急速に変化しており、サービスは改善されていないのに価格...
Spartanhost のブラック フライデーは少し遅れましたが、それでもかなり素晴らしいです。KV...
コンテナとマイクロサービスはセキュリティ保護が困難です。機械学習が解決策になるかもしれません。 [[...
2018年には、工業情報化部による「企業のクラウド移行促進実施ガイドライン(2018~2020年)」...
10月14日、海外メディアの報道によると、Google Cloudは最近、クラウドコンピューティング...
クラウド時代において、開発者は反復的な開発の手間を軽減するために、より便利で「軽量」なツールを緊急に...
vpsdime に新しいデータセンターが追加されました。今回は、英国のデータセンターが追加されました...
近年、デジタル変革の波を受けて、わが国のクラウドコンピューティングの発展は、爆発的な需要の時代を迎え...
電子商取引ウェブサイトは、今後の発展の必然的なトレンドです。そのため、電子商取引ウェブサイトは絶え間...
SEO は魔法のようで習得が非常に難しく、多くのお金、時間、労力が必要だと言う人もいます。また、SE...
「たとえ小さなことであっても、善行は報われずにはおかない」とは、劉備が死ぬ前に息子の劉禅に言った言葉...
みなさんこんにちは、ドリームチャットです。今日はここで初めてソフトな記事を投稿します。主に自分のウェ...
Hostdare は、2009 年にインド人によって設立されたアメリカの VPS ブランドです。サー...
長年 SEO に取り組んできた初心者にとって、ランキングは最も難しいことではありません。最も難しいの...
ネットワーク関係者というのは、私が今自分につけている肩書きです。インターネットマーケティングプランナ...