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クラウドネイティブデータ開発およびガバナンスプラットフォームの実践
Sharktech、10Gbps 帯域幅サーバー、無制限トラフィックサーバー、スーパープロモーション...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービステキスト/悟空ノートBa...
IoT 技術の成熟と普及により、今日の世界はすでに Internet of Everything の...
Shuhost Technology (shuhost) は、8 月に香港データセンターの独立サーバ...
12月14日、百度マーケティング大学が正式に設立されました。国内検索エンジン業界の「兄貴分」として、...
Sina が立ち上げたクラウド プラットフォームは、WordPress ブログを作成したい人にとって...
企業ウェブサイトは、企業がインターネット上にウェブサイトを構築することで、自社のブランドイメージを宣...
バイラル記事には非常に良い格言があります。それは、「製品、アイデア、行動をウイルスのようにユーザーの...
inceptionhosting は評判が良く、VPS 品質が保証されているサービス プロバイダーで...
Ultravps に新しいニュースがあります。米国 (ダラス、ロサンゼルス)、ドイツ (デュッセルド...
インターネット経由で音声メッセージ、ビデオ、画像、テキストをすばやく送信でき、複数人でのグループチャ...
新型コロナウイルス感染症の流行により、多くの企業が業務を一時停止していますが、ビジネスの俊敏性を高め...
ehvps は 2016 年に VPS 事業を開始しました。サーバーはカリフォルニア州フリーモントの...
コンテナはここ数年で大きく進歩し、ニッチなテクノロジーから、最新のクラウドネイティブ アプリケーショ...
もし彼が荀雷を創設していなかったら、鄒聖龍は今頃どうなっていただろうか?ダウンロード市場で絶対的な独...