この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

これは未公開の文書です 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検証ルールは、いくつかの関数ライブラリにアクセスできます:

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のおかげで、クラスター外で開発およびテストが可能です。