|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
|
これは未公開の文書です Admission Controller 1.34-dev. |
CELの概要
共通式言語(CEL)は、高速でポータブル、安全に実行できるように設計された汎用の式言語です。CELは、メモリ安全で、副作用がなく、終了する(プログラムが無限ループしない)、強く動的に型付けされた言語です。CELについての詳細は、https://cel.dev[cel.dev]で学ぶことができ、https://playcel.undistro.io[CELプレイグラウンド]で実践できます。
KubernetesにおけるCEL
CELは、Kubernetesの検証ルールのための言語として選ばれました。CEL式はCRDスキーマに簡単にインライン化でき、"事前に"(CRDが作成および更新されるとき)コンパイルおよび型チェックが可能です。これらの理由とその一般的な特性から、Kubernetes APIを拡張するための完璧な候補です。
Kubernetes 1.30で安定版としてマークされ、https://kubernetes.io/docs/reference/access-authn-authz/validating-admission-policy[ValidatingAdmissionPolicies]やその他の検証ルールでCELを使用できます。詳細については、Kubernetesのドキュメントをhttps://kubernetes.io/docs/reference/using-api/cel[こちら]でご覧ください。
Kubernetes関数ライブラリ
Kubernetes CEL検証ルールは、いくつかの関数ライブラリにアクセスできます:
-
Kubernetes CEL拡張ライブラリ、リスト、正規表現、URL、認可者、数量、オプション型、数値比較などの補助関数を含みます。
SUSE Security Admission ControllerにおけるCEL:cel-policy
Admission Controllerはhttps://github.com/kubewarden/cel-policy[cel-policy]を提供します。
これは、アップストリームのhttps://pkg.go.dev/github.com/google/cel-go[cel-go]インタープリターを構築しバンドルするポリシーであり、KubernetesのCEL用に上記のさまざまなライブラリも含まれています。 apiextensions-apiserver
さらに、`cel-policy`は*Admission ControllerCEL拡張ライブラリ*をバンドルしており、Admission Controllerのhttps://github.com/kubewarden/cel-policy?tab=readme-ov-file#host-capabilities[ホスト機能をネイティブCELとして公開します]。
-
Sigstore検証
-
OCIインタラクション
-
暗号機能
-
ネットワーク操作
-
Kubernetesリソースへのアクセス
これは、`cel-policy`がKubernetes CELのスーパーセットであり、後方互換性があることを意味します。バニラKubernetes用に書かれたCELを再利用したり、Admission Controllerによって追加された機能を利用したりできます。
`cel-policy`はコンパイル済みで出荷され、CELインタープリタとして動作します。ポリシーのユーザーは、(Cluster)AdmissionPolicyの`spec.settings`に希望するCEL式を渡し、CEL機能のおかげで、式は作成または更新時にコンパイルされ、型チェックによって正しさが検証されます。これは、`cel-policy`のカスタムビルドが必要ないことを意味します。
ValidatingAdmissionPoliciesと比較した場合のAdmission Controllerの`cel-policy`の利点
Admission Controller cel-policy:
-
そのCELコードはValidatingAdmissionPoliciesと後方互換性があります。
-
ValidatingAdmissionPoliciesとは異なり、ValidatingAdmissionPolicyBindingのようなバインディングは不要です。これは、Admission Controllerの(Cluster)AdmissionPolicy定義に含まれているためです。
-
ValidatingAdmissionPoliciesのサポートがないクラスターにデプロイできます。
-
コンテキストを認識し、Admission Controllerの細かい権限をコンテキスト認識に利用します。
-
(Cluster)AdmissionPolicyとしてデプロイされます。
-
ポリシーに関するAdmission Controllerのトレースおよびテレメトリの恩恵を受けます。
-
監査スキャナーによって考慮されます。
-
kwctlのおかげで、クラスター外で開発およびテストが可能です。