Neste artigo vou abordar um componente do kubernetes que precisei entender sua função para avaliar sua real necessidade para uma determinada situação, o objeto em questão é o ValidatingWebhookConfiguration.
O ValidatingWebhookConfiguration é um dos componentes utilizados para acionar validações aos objetos que estão sendo criados, deletados ou atualizados em um cluster Kubernetes. Isso é possível pois este componente realiza chamadas a um serviço que validará por exemplo, se um pod atende ou não a determinadas regras para poder ingressar ou não no cluster.
QUANDO USAR?
Vamos supor que você não quer que sejam criados pods sem a label "ambiente: teste" no seu cluster. Para conseguir validar se este pod atende ou não a sua necessidade e permitir que ele seja criado, você criará um serviço de validação que será acionado por um ValidatingWebhookConfiguration.
Para entender melhor, vamos analisar o manifesto abaixo que especifica a criação de um ValidatingWebhookConfiguration:
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: pod-validator
webhooks:
- name: pod.validator.teste.io
clientConfig:
service:
name: pod-validator
namespace: default
path: "/validate"
rules:
- apiGroups:
- ""
apiVersions:
- "v1"
operations:
- CREATE
- UPDATE
resources:
- pods
failurePolicy: Fail
name é o nome que damos ao webhook.
clientConfig especifica o serviço que fornecerá a validação. Nesse caso o nome do service é pod-validator e está no namespace default, suponhamos que este aponte para um pod que executa um script python, esse script irá conter a lógica de validação, como por exemplo, verificar se o POD que está sendo criado possui a label "ambiente: teste".
rules aqui você descreve a 'quem' essa política se aplica, no caso do exemplo, essa validação será acionada sempre que houver um evento do tipo CREATE e UPDATE para recursos do tipo POD cujo apiVersion seja v1.
failurePolicy o valor Fail faz com que a criação do pod falhe caso a validação feita pelo nosso script python não retorne com sucesso.
O desenho abaixo explica de forma bem macro o fluxo quando o ValidatingWebhookConfiguration está presente:
PONTOS IMPORTANTES:
- Você pode validar qualquer tipo de componente do kubernetes, não só PODs, se você especificar "*" no campo resources por exemplo, o serviço será chamado para qualquer tipo de recurso que estiver sendo criado ou atualizado no cluster.
- Você pode restringir a validação aos recursos que estejam sendo criados em apigroups específicos, para isso, basta especificar na lista de apiGroups do manifesto os grupos no qual deseja realizar a validação, por exemplo o grupo gateway.networking.k8s.io.
RESUMO
O ValidatingWebhookConfiguration é um componente importante para que possamos controlar as operações de CREATE, UPDATE, DELETE e CONNECT de recursos em um cluster, chamando serviços que validam determinadas configurações que precisam ou não estar presentes nos recursos para que sejam 'aceitos'. É possível fazer ajustes precisos para se alcançar qualquer tipo de política de validação.
REFERÊNCIAS:
Valeu e até a próxima! :)
Top comments (0)