アドミッション コントローラー (プラグイン) とアドミッション Webhook は、表面上は非常によく似ています。実際の機能的な違いは何ですか?
1 に答える
アドミッション コントローラは、専門家や公式ドキュメントによってアドミッション プラグインとアドミッション Webhook の両方を意味するように混同されています。混乱を避けるために、これらをアドミッション プラグインとアドミッション Webhook と呼びます。
アドミッション プラグインはAPI リソースではありません。クラスター管理者が作成することはできません。これらは、Kubernetes ソース コードにハードコーディングされています。
具体的には、アドミッション プラグインは無限の力を備えたツールです。に組み込まれkube-apiserver
ているため、認証なしでリソースを簡単に要求できます。彼らはこの力を利用して、アドミッション プラグインを実装します。DefaultStorageClass
アドミッション プラグインは、すべての es をチェックStorageClass
して、デフォルトのアノテーションが適用されたものを見つけます。
一方、アドミッション Webhook は、実際にはアドミッション プラグインの実装であり、余分な機能が取り除かれています。は、その時点で検証されている正確なオブジェクト以外のWebhook.Validator
リソースにアクセスできないことに注意してください。アドミッション Webhookは API リソースであり、通常、Kubernetes オペレーターまたは CRD 全般のバリデーターを実装するときに最初に推奨されるものです。それにもかかわらず、 署名された証明書が必要であり、アイデア全体を放棄する可能性があります.
これは平均的な開発者にとって何を意味するのでしょうか?
クラスター内の既存のオブジェクトのチェックに依存するバリデーターを作成するには、Kubernetes Golang Client APIを使用して追加の手順を実行する必要があります。これは、正しい RBAC が適用されたサービス アカウント トークンに依存しています。
代わりに Status を使用してオブジェクトを更新し、検証が失敗した理由を説明することもできます。Kubernetes Operator を作成している場合は、調整ループで作成できます。
カスタム リソースの洗練された UI を作成した場合は、これらのステータスを読み取って、より適切な方法でユーザーに公開できるはずです。残念ながら、OpenShift 4.X のユーザーは、派手な UI を OpenShift Web コンソールに追加することはできませんRoute
。