|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
|
Esta é uma documentação não divulgada para Admission Controller 1.34-dev. |
Introdução ao CEL
A Common Expression Language (CEL) é uma linguagem de expressão de propósito geral projetada para ser rápida, portátil e segura para execução. CEL, como linguagem, é segura em termos de memória, livre de efeitos colaterais, terminante (os programas não podem entrar em loop infinito) e tipada de forma forte e dinâmica. Você pode aprender mais sobre CEL em cel.dev e praticá-la no playground do CEL.
CEL no Kubernetes
CEL foi escolhida como a linguagem para regras de validação do Kubernetes, pois expressões CEL podem ser facilmente incorporadas em esquemas de CRD e compiladas e verificadas quanto ao tipo "antes do tempo" (quando CRDs são criadas e atualizadas). Por essas razões e suas características gerais, é um candidato perfeito para estender a API do Kubernetes.
Marcada como estável com o Kubernetes 1.30, pode-se usar CEL em ValidatingAdmissionPolicies e outras regras de validação. Para mais informações, veja a documentação do Kubernetes aqui.
Bibliotecas de funções do Kubernetes
As regras de validação do Kubernetes CEL têm acesso a várias bibliotecas de funções:
-
Bibliotecas de extensão do Kubernetes CEL, com funções suplementares para listas, regex, URLs, autorizadores, quantidades, tipos opcionais, comparações numéricas, etc.
CEL em SUSE Security Admission Controller: cel-policy
Admission Controller fornece cel-policy.
Esta é uma política que constrói e empacota o interpretador upstream cel-go, e também as diferentes bibliotecas listadas acima e disponíveis para CEL no Kubernetes a partir de apiextensions-apiserver.
Além disso, cel-policy empacota uma Admission Controllerbiblioteca de extensão do CEL que expõe as Admission Controller capacidades do host como recursos nativos do CEL host capabilities as native CEL:
-
Verificação do Sigstore
-
Interação OCI
-
Funções criptográficas
-
Operações de rede
-
Acesso aos recursos do Kubernetes
Isso significa que cel-policy é um superconjunto do Kubernetes CEL, e compatível com versões anteriores. É possível reutilizar CEL escrito para Kubernetes vanilla, e/ou fazer uso dos recursos adicionados por Admission Controller.
O cel-policy é enviado compilado e se comporta como um interpretador CEL. Os usuários da política passam as expressões CEL desejadas no spec.settings da (Cluster)AdmissionPolicy, e graças aos recursos do CEL, a expressão é compilada e verificada quanto à correção ao criar ou atualizar a (Cluster)AdmissionPolicy. Isso significa que não há necessidade de compilações personalizadas do cel-policy.
Benefícios do Admission Controller do cel-policy em comparação com ValidatingAdmissionPolicies
O Admission Controller do cel-policy:
-
Seu código CEL é compatível com versões anteriores das ValidatingAdmissionPolicies.
-
Ao contrário das ValidatingAdmissionPolicies, não precisa de um vínculo como ValidatingAdmissionPolicyBinding, pois isso está incluído nas definições de (Cluster)Admissionpolicies do Admission Controller.
-
Pode ser implantado em clusters que não têm suporte a ValidatingAdmissionPolicies.
-
É consciente do contexto e faz uso das permissões granulares de Admission Controller para consciência de contexto.
-
É implantado como (Cluster)AdmissionPolicy.
-
Se beneficia do rastreamento e telemetria de Admission Controller sobre políticas.
-
Será levado em consideração pelo Scanner de Auditoria.
-
Pode ser desenvolvido e testado fora do cluster graças ao kwctl.