NetworkPolicy opcionales de Kubernetes que
restringen qué tráfico puede llegar al pod de Kubernetes del controller manager; es decir, al proceso
del propio operador, no al servidor de ClickHouse ni a los pods de Kubernetes de Keeper. Están desactivados
de forma predeterminada, por lo que solo debes habilitarlos cuando quieras aislar el ingreso al operador.
Las políticas cubren los dos puertos que el operador expone a otros clientes: el endpoint de métricas
y el admission webhook.
Una
NetworkPolicy solo se aplica cuando el plugin de CNI del cluster la implementa
(por ejemplo, Calico o Cilium). En un CNI sin compatibilidad con NetworkPolicy, los
recursos se crean pero no surten efecto, sin mostrar ningún aviso; Kubernetes no devuelve
ningún error. Confirma que tu CNI aplique estas políticas antes de depender de ellas.Lo que crea el gráfico de Helm
Ambas políticas declaran únicamente
policyTypes: [Ingress]. No restringen la salida
del operador ni afectan a los pods de Kubernetes de ClickHouse server o Keeper.
Comportamiento de denegación por defecto
NetworkPolicy de ingreso hace que ese pod de Kubernetes pase a denegar por defecto el ingreso: una vez que se aplica cualquiera de estas políticas, se descarta todo el tráfico entrante al pod de Kubernetes del controller manager que no esté permitido explícitamente. Después de habilitarlas,
el único ingreso que llega al operador es:
- un scrape de métricas desde un espacio de nombres etiquetado con
metrics: enabled, y - una llamada al admission webhook desde un espacio de nombres etiquetado con
webhook: enabled.
Habilitar las políticas
allow-webhook-traffic también requiere webhook.enabled: true (el
valor predeterminado), por lo que deshabilitar el webhook también elimina su política.
Con los manifiestos sin procesar de kubectl, descomente la sección [NETWORK POLICY] como se
describe en la guía de instalación de kubectl.
Los manifiestos sin procesar incluyen las mismas dos políticas.
Etiquetado de los espacios de nombres del client
namespaceSelector, todo espacio de nombres
que necesite llegar al operador debe llevar la etiqueta correspondiente. Un scrape o
una llamada de webhook desde un espacio de nombres sin etiquetar se descarta.
NetworkPolicy controla el acceso, mientras que la vinculación del Rol de clúster controla
la autorización. Ambos deben estar configurados para que un scrape seguro funcione correctamente.
Verificación
- Prometheus siga recopilando métricas desde el endpoint de métricas (su espacio de nombres está etiquetado
con
metrics: enabledy asociado al Rol de clúster metrics-reader). - Crear o actualizar un
ClickHouseClustersiga pasando la validación de admisión (el webhook es accesible).
- Monitorización del operador — el endpoint de métricas, su RBAC y cómo proteger el scraping.
- Instalar con kubectl — dónde descomentar la sección de la política de red.
- Instalar con Helm — los values del chart relevantes para el operador.