|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
|
Esta es documentación inédita para Admission Controller 1.34-dev. |
Introducción a CEL
El Lenguaje de Expresión Común (CEL) es un lenguaje de expresión de propósito general diseñado para ser rápido, portátil y seguro de ejecutar. CEL como lenguaje es seguro en memoria, libre de efectos secundarios, con terminación garantizada (los programas no pueden ejecutarse indefinidamente) y fuertemente y dinámicamente tipado. Puedes aprender más sobre CEL en cel.dev y practicarlo en el playground de CEL.
CEL en Kubernetes
CEL fue elegido como el lenguaje para las reglas de validación de Kubernetes ya que las expresiones CEL pueden ser fácilmente integradas en los esquemas de CRD, y compiladas y verificadas por tipo "por adelantado" (cuando se crean y actualizan los CRD). Por estas razones y sus características generales, es un candidato perfecto para extender la API de Kubernetes.
Marcado como estable con Kubernetes 1.30, se puede usar CEL en ValidatingAdmissionPolicies y otras reglas de validación. Para más información, consulta la documentación de Kubernetes aquí.
Bibliotecas de funciones de Kubernetes
Las reglas de validación de Kubernetes CEL tienen acceso a varias bibliotecas de funciones:
-
Bibliotecas de extensión de Kubernetes CEL, con funciones suplementarias para listas, regex, URLs, autorizadores, cantidades, tipos opcionales, comparaciones numéricas, etc.
CEL en SUSE Security Admission Controller: cel-policy
Admission Controller proporciona cel-policy.
Esta es una política que construye y empaqueta el intérprete cel-go de sentido ascendente, y también las diferentes bibliotecas listadas arriba y disponibles para CEL en Kubernetes desde apiextensions-apiserver.
Además, cel-policy incluye una biblioteca de extensión de CEL Admission Controller que expone las capacidades del host de Admission Controller como CEL nativas:
-
Verificación de Sigstore
-
Interacción OCI
-
Funciones criptográficas
-
Operaciones de red
-
Acceso a recursos de Kubernetes
Esto significa que cel-policy es un superconjunto de Kubernetes CEL, y es compatible hacia atrás. Se puede reutilizar CEL escrito para Kubernetes estándar, y/o hacer uso de las características añadidas por Admission Controller.
El cel-policy se envía compilado y se comporta como un intérprete de CEL. Los usuarios de la política pasan las expresiones CEL deseadas en el spec.settings de la (Cluster)AdmissionPolicy, y gracias a las características de CEL, la expresión se compila y se verifica su tipo para corrección al crear o actualizar la (Cluster)AdmissionPolicy. Esto significa que no hay necesidad de compilaciones personalizadas del cel-policy.
Beneficios del cel-policy de Admission Controller en comparación con ValidatingAdmissionPolicies
El Admission Controller cel-policy:
-
Su código CEL es compatible hacia atrás con ValidatingAdmissionPolicies.
-
A diferencia de ValidatingAdmissionPolicies, no necesita un enlace como ValidatingAdmissionPolicyBinding, ya que esto está incluido en las definiciones de (Cluster)Admissionpolicies de Admission Controller.
-
Se puede desplegar en clústeres que carecen de soporte para ValidatingAdmissionPolicies.
-
Es consciente del contexto y hace uso de los permisos granulares de Admission Controller para conciencia del contexto.
-
Se despliega como (Cluster)AdmissionPolicy.
-
Se beneficia del rastreo y la telemetría de Admission Controller sobre políticas.
-
Se tendrá en cuenta por el Escáner de Auditoría.
-
Se puede desarrollar y probar fuera del clúster gracias a kwctl.