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:

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.