NetworkPolicy do Kubernetes que
restringem quais tráfegos podem alcançar o pod do controller manager — o próprio
processo do operator, não o servidor ClickHouse nem os pods do Keeper. Eles ficam
desabilitados por padrão, então você só precisa ativá-los quando quiser isolar o tráfego de entrada do operator.
As políticas abrangem as duas portas que o operator expõe a outros clientes: o endpoint de métricas
e o admission webhook.
Uma
NetworkPolicy só é aplicada quando o plugin de CNI do cluster a implementa
(por exemplo, Calico ou Cilium). Em uma CNI sem suporte à aplicação de NetworkPolicy, os
recursos são criados, mas não têm efeito, sem qualquer aviso — o Kubernetes não retorna
erro. Confirme que sua CNI aplica políticas antes de depender delas.O que o chart do Helm cria
Ambas as políticas declaram apenas
policyTypes: [Ingress]. Elas não restringem o tráfego de saída
do operator e não afetam os pods do servidor ClickHouse nem do Keeper.
Comportamento de bloqueio por padrão
NetworkPolicy de entrada, esse pod do Kubernetes passa a ter bloqueio
por padrão para tráfego de entrada: assim que qualquer uma das políticas se aplica, todo tráfego de entrada para o
pod do Kubernetes do controller manager que não seja explicitamente permitido é descartado. Depois de habilitadas,
o único tráfego de entrada que chega ao operator é:
- uma coleta de métricas de um espaço de nomes com o rótulo
metrics: enabled, e - uma chamada de admission webhook de um espaço de nomes com o rótulo
webhook: enabled.
Habilitando as políticas
allow-webhook-traffic também requer webhook.enabled: true (o
valor padrão), então desabilitar o webhook também remove a política dele.
Com os manifests brutos do kubectl, descomente a seção [NETWORK POLICY] conforme
descrito no guia de instalação do kubectl.
Os manifests brutos incluem as mesmas duas políticas.
Rotulando espaços de nomes de cliente
namespaceSelector, todo espaço de nomes
que precisa se comunicar com o operator deve ter o rótulo correspondente. Uma coleta ou
uma chamada de webhook de um espaço de nomes sem rótulo é descartado.
NetworkPolicy controla o alcance, enquanto a vinculação da Função de cluster controla
a autorização. Ambos precisam estar em vigor para que uma coleta protegida funcione.
Verificação
- O Prometheus ainda coleta o endpoint de métricas (seu espaço de nomes está rotulado com
metrics: enablede associado à Função de cluster metrics-reader). - Criar ou atualizar um
ClickHouseClusterainda passa pela admissão (o webhook está acessível).
- Monitorando o operator — o endpoint de métricas, seu RBAC e como proteger a coleta.
- Instalar com kubectl — onde descomentar a seção de política de rede.
- Instalar com Helm — os values do chart relevantes para o operator.