NetworkPolicy de Kubernetes en dos niveles, ambos
desactivados de forma predeterminada:
- Políticas de clúster: políticas por clúster que cubren el tráfico interno de
los recursos
ClickHouseClusteryKeeperCluster, habilitadas mediantespec.networkPolicyen cada recurso personalizado. - Políticas del pod de Kubernetes del operador: políticas incluidas en el gráfico de Helm que restringen el ingreso al propio pod de Kubernetes del controller manager para los endpoints de métricas y webhook.
Una
NetworkPolicy solo se aplica cuando el plugin de CNI del clúster 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.NetworkPolicies del clúster
Un keeper admite clústeres de ClickHouse según su
keeperClusterRef: añadir
o eliminar una referencia actualiza automáticamente la política del keeper, incluidas
las referencias de otros espacios de nombres.
Permitir conexiones de clientes y monitorización
9000/8123 o las variantes
TLS) ni al puerto de métricas hasta que lo permitas. Las NetworkPolicies son aditivas,
así que concede acceso con tu propia política junto a la administrada:
9363 en ClickHouse,
9090 en Keeper): permita explícitamente el espacio de nombres de monitorización.
Configurar networkPolicy.policy: Disabled (el valor predeterminado) elimina la política
gestionada; el operador nunca modifica las políticas definidas por el usuario, salvo que
incluyan la etiqueta app del clúster.
Exclusión a nivel de todo el clúster
ENABLE_NETWORK_POLICY del operador. Con ENABLE_NETWORK_POLICY=false,
el operador omite el paso de reconciliación de NetworkPolicy para todos los
ClickHouseCluster y KeeperCluster, independientemente de su spec.networkPolicy.policy,
y no supervisa ningún recurso NetworkPolicy. Por lo tanto, el
ServiceAccount del operador no necesita permisos RBAC sobre
networkpolicies.networking.k8s.io, lo que resulta útil al ejecutar el operador
con un ServiceAccount restringido que deliberadamente no incluye esos permisos.
Políticas de pods de Kubernetes del operador
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.