Compartilhar via


Valide controladores de admissão

Este artigo faz parte de uma série. Comece com essa visão geral.

Os controladores de admissão raramente causam problemas, mas é crucial garantir sua funcionalidade adequada. Este artigo descreve como os controladores de admissão podem afetar outros componentes quando eles não funcionam corretamente. Ele também descreve comandos que você pode usar para validar o desempenho do controlador de admissão.

Controlador de admissão

Um controlador de admissão é uma parte do código que intercepta solicitações para um servidor de API Kubernetes antes da persistência de um objeto, mas depois que uma solicitação é autenticada e autorizada.

Os controladores de admissão podem estar validação, mutação ou uma combinação de ambos. mutação de controladores podem modificar objetos relacionados antes de admitir uma solicitação. A validação de controladores garante apenas que as solicitações atendam a critérios predefinidos específicos.

Uma das principais funções dos controladores de admissão é regular as solicitações de criação, exclusão e modificação de objetos. Além disso, os controladores de admissão podem restringir verbos personalizados, como solicitar uma conexão com um pod por meio de um proxy de servidor de API. No entanto, os controladores de admissão não podem bloquear solicitações para ler objetos, incluindo operações como get, watchou list.

Alguns componentes podem afetar os controladores de admissão, como webhooks de mutação e validação. Quando você incorpora webhooks de mutação e validação em seu cluster do Kubernetes, é imperativo garantir alta disponibilidade. Os nós não íntegros não devem bloquear solicitações do servidor de API. É vital monitorar o pipeline de controle de admissão para que as solicitações ao servidor de API não sejam bloqueadas. Controladores de admissão não íntegros podem afetar os webhooks de mutação e validação. Os controladores de admissão baseados em webhook que você deve monitorar incluem:

Como alternativa, os controladores de admissão que não estão funcionando corretamente podem afetar vários componentes, como malhas de serviço. As malhas de serviço, como Istio e As Linkerd, usam controladores de admissão para automatizar a injeção de contêineres sidecar dentro de um pod, entre outras funcionalidades. É importante avaliar e verificar se os controladores de admissão funcionam corretamente para garantir o funcionamento perfeito de uma malha de serviço.

Verificar o status do complemento Política do Azure para clusters AKS

Se você instalar o complemento Política do Azure para AKS, poderá usar os seguintes comandos kubectl para validar a instalação e a funcionalidade dos controladores de admissão da Política do Azure em seu cluster:

# Verify that Azure Policy pods are running.
kubectl get pod -n gatekeeper-system

# Sample output
...
NAME                                     READY   STATUS    RESTARTS   AGE
gatekeeper-audit-65844778cb-rkflg        1/1     Running   0          163m
gatekeeper-controller-78797d4687-4pf6w   1/1     Running   0          163m
gatekeeper-controller-78797d4687-splzh   1/1     Running   0          163m
...

Execute o comando anterior para verificar a disponibilidade dos pods do agente de Política do Azure no namespace gatekeeper-system. Se a saída não for a esperada, ela pode indicar um problema com um controlador de admissão, serviço de API ou CRD (definição de recurso personalizada).

# Check that all API resources are working correctly. Use the following command to list all API resources.
kubectl api-resources

# Sample output
...
NAME                                     SHORTNAMES    APIGROUP                       NAMESPACED   KIND
bindings                                                                              true         Binding
componentstatuses                        cs                                           false        ComponentStatus
configmaps                               cm                                           true         ConfigMap
...

O comando anterior ajuda a verificar se todos os recursos da API funcionam corretamente. Certifique-se de que a saída inclua os recursos esperados sem erros ou componentes ausentes. Use os comandos kubectl get pod e kubectl api-resources para verificar o status do complemento Política do Azure para AKS e validar a funcionalidade dos controladores de admissão em seu cluster do Kubernetes. Monitore regularmente os controladores de admissão para garantir que eles funcionem corretamente para que você possa manter a integridade geral e a estabilidade do cluster.

Use o comando kubectl get a seguir para confirmar se atribuições de política são aplicadas ao cluster:

kubectl get constrainttemplates

Observação

As atribuições de política podem levar até 20 minutos para serem sincronizadas com cada cluster.

Sua saída deve ser semelhante ao exemplo a seguir:

NAME                                     AGE
k8sazureallowedcapabilities              23m
k8sazureallowedusersgroups               23m
k8sazureblockhostnamespace               23m
k8sazurecontainerallowedimages           23m
k8sazurecontainerallowedports            23m
k8sazurecontainerlimits                  23m
k8sazurecontainernoprivilege             23m
k8sazurecontainernoprivilegeescalation   23m
k8sazureenforceapparmor                  23m
k8sazurehostfilesystem                   23m
k8sazurehostnetworkingports              23m
k8sazurereadonlyrootfilesystem           23m
k8sazureserviceallowedports              23m

Para saber mais, consulte os recursos a seguir:

Validar webhooks

Para garantir que os webhooks de validação e mutação funcionem conforme o esperado no cluster do Kubernetes, siga estas etapas.

  1. Execute o seguinte comando para listar os webhooks de validação no cluster:

    kubectl get ValidatingWebhookConfiguration -o wide
    

    Sua saída deve ser semelhante ao exemplo a seguir:

    NAME                         WEBHOOKS   AGE
    aks-node-validating-webhook   1          249d
    azure-policy-validating-webhook-configuration   1          249d
    gatekeeper-validating-webhook-configuration     1          249d
    

    Revise a saída para verificar se os webhooks de validação estão presentes e suas configurações estão conforme o esperado. A saída inclui o nome de cada webhook de validação, o número de webhooks e a idade de cada webhook.

  2. Execute o seguinte comando para listar os webhooks de mutação no cluster:

    kubectl get MutatingWebhookConfiguration -o wide
    

    Sua saída deve ser semelhante ao exemplo a seguir:

    NAME                         WEBHOOKS   AGE
    aks-node-mutating-webhook    1          249d
    azure-policy-mutating-webhook-configuration    1          249d
    gatekeeper-mutating-webhook-configuration      1          249d
    

    Verifique a saída para garantir que os webhooks de mutação estejam listados corretamente e suas configurações estejam conforme desejado. A saída inclui o nome de cada webhook de mutação, o número de webhooks e a idade de cada webhook.

  3. Execute o seguinte comando para recuperar detalhes específicos de um controlador de admissão específico:

    kubectl get MutatingWebhookConfiguration <mutating-webhook-name> -o yaml
    

    Substitua <mutating-webhook-name> pelo nome do webhook de mutação para o qual você deseja recuperar detalhes. A saída desse comando exibe a representação YAML da configuração de webhook de mutação especificada.

Execute os comandos nesta seção e revise a saída para que você possa confirmar se os webhooks de validação e mutação no cluster do Kubernetes estão presentes e configurados conforme o esperado. Essa validação é essencial para garantir o bom funcionamento. Também é importante garantir que os webhooks sigam as políticas para validar e modificar recursos no cluster.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

Outros colaboradores:

Para ver perfis não públicos do LinkedIn, entre no LinkedIn.