Skip to main content
Esta guía describe cómo configurar los clústeres de ClickHouse y Keeper mediante el operador.

Configuración de ClickHouseCluster

Configuración básica

Réplicas y segmentos

  • Réplicas: Número de instancias de ClickHouse por segmento (para alta disponibilidad)
  • Segmentos: Número de particiones horizontales (para el escalado)
Un clúster con replicas: 3 y shards: 2 creará 6 pods de ClickHouse en total.

Integración de Keeper

Cada clúster de ClickHouse debe hacer referencia a un KeeperCluster para coordinarse:
Cuando se establece keeperClusterRef.namespace, el operador debe observar ambos espacios de nombres. Si WATCH_NAMESPACE está configurado, incluya los espacios de nombres de ClickHouse y Keeper en esa lista.

Configuración de KeeperCluster

Configuración de almacenamiento

Configure el almacenamiento persistente:
El operador solo puede modificar un PVC existente si la clase de almacenamiento asociada admite la expansión de volúmenes.

Configuración del pod de Kubernetes

Dispersión de topología y afinidad automáticas

Distribuya los pods entre las zonas de disponibilidad:
Asegúrese de que su clúster de Kubernetes tenga suficientes nodos en distintas zonas para cumplir las restricciones de distribución.

Configuración manual

Se pueden especificar reglas arbitrarias de afinidad/antiafinidad de pod de Kubernetes y restricciones de distribución topológica.

Consulta la Referencia de la API para ver todas las opciones compatibles de la plantilla de pod de Kubernetes.

Presupuestos de interrupción de pods

El operador crea un PodDisruptionBudget (PDB) para cada clúster, de modo que las interrupciones voluntarias — drenado de nodos, actualizaciones progresivas y desalojos del autoscaler — no puedan dejar fuera de servicio suficientes pods como para perder el quórum o comprometer la disponibilidad. En los clústeres de ClickHouse con más de un segmento, se crea un PDB por segmento para que una interrupción en un segmento no se impute a otro.

Valores predeterminados

El operador elige valores predeterminados seguros según el tamaño del clúster, de modo que un apply inicial ya proteja frente a una pérdida accidental de quorum. Para un ClickHouseCluster de 3 segmentos con replicas: 3, el operador crea tres PDB, uno por segmento, cada uno con minAvailable: 1.

Sobrescribir los valores predeterminados

Usa spec.podDisruptionBudget para sobrescribir minAvailable o maxUnavailable (exactamente uno):
O bien la forma maxUnavailable, con un porcentaje:
El webhook de validación rechaza configurar a la vez minAvailable y maxUnavailable. Elige uno: Kubernetes tampoco permite ambos.
También puedes pasar el campo unhealthyPodEvictionPolicy al PDB generado, lo que resulta útil cuando necesitas permitir la expulsión de pods que aún siguen en NotReady:

Políticas

spec.podDisruptionBudget.policy te permite elegir con qué nivel de agresividad el operador gestiona los PDB: Ejemplo — deshabilita por completo la gestión de PDB en un clúster de desarrollo:
Ejemplo — mantén tu PDB definido manualmente junto al clúster y evita que el operador lo toque:

Desactivación a nivel de clúster

La gestión de PDB también puede deshabilitarse a nivel de clúster mediante la variable de entorno ENABLE_PDB del operador. Con ENABLE_PDB=false, el operador omite el paso de reconciliación de PDB para todos los ClickHouseCluster y KeeperCluster, independientemente de su spec.podDisruptionBudget.policy, y no observa en absoluto los recursos PodDisruptionBudget. Por lo tanto, el ServiceAccount del operador no necesita permisos de RBAC sobre poddisruptionbudgets.policy/v1, lo cual resulta útil cuando el operador se ejecuta con un ServiceAccount restringido que omite intencionadamente esos permisos.
Esto está pensado para entornos que incorporan sus propias políticas de interrupción (p. ej., mediante Gatekeeper / Kyverno) y quieren que el operador quede completamente fuera del proceso.

Configuración del contenedor

Imagen personalizada

Usa una imagen concreta de ClickHouse:

Recursos de los contenedores

Configure la CPU y la memoria de los contenedores de ClickHouse:

Variables de entorno

Añada variables de entorno personalizadas:

Montajes de volúmenes

Agregue montajes de volúmenes adicionales:
Se permite especificar varios montajes de volúmenes en el mismo mountPath. El operador creará un volumen proyectado con todos los montajes especificados.

Consulta la referencia de la API para ver todas las opciones compatibles de la plantilla de contenedor.

Configuración de TLS/SSL

Configurar endpoints seguros

Pasa una referencia a un Secret de Kubernetes con certificados TLS para habilitar endpoints seguros

Formato del Secret del certificado SSL

Se espera que el Secret contenga las siguientes claves:
  • tls.crt - certificado del server codificado en PEM
  • tls.key - private key codificada en PEM
  • ca.crt - cadena de certificados de la CA codificada en PEM
Este formato es compatible con los certificados generados por cert-manager.

Comunicación de ClickHouse-Keeper mediante TLS

Si KeeperCluster tiene TLS habilitado, ClickHouseCluster usará automáticamente una conexión segura a los nodos de Keeper. ClickHouseCluster debe poder verificar los certificados de los nodos de Keeper. Si ClickHouseCluster tiene TLS habilitado, usa el bundle ca.crt para la verificación. De lo contrario, se usa el bundle de CA predeterminado. El usuario puede proporcionar una referencia a un bundle de CA personalizado:

Configuración de ClickHouse

Contraseña predeterminada del usuario

Configure la contraseña predeterminada del usuario:
No se recomienda usar ConfigMap para almacenar contraseñas en texto plano.
Cree el secret:

Uso de ConfigMap para las contraseñas de los usuarios

También puede usar ConfigMap para contraseñas predeterminadas no confidenciales:

Usuarios personalizados en la configuración

Configure usuarios adicionales en los archivos de configuración. Cree un ConfigMap y un Secret para el usuario:
Añade una configuración personalizada a ClickHouseCluster:

Sincronización de la base de datos

Habilite la sincronización automática de la base de datos para las nuevas réplicas:
Cuando está activado, el operador sincroniza las tablas Replicated y de integración en las nuevas réplicas.

Configuración personalizada

Configuración adicional integrada

En lugar de montar archivos de configuración personalizados, puedes especificar directamente opciones adicionales de configuración de ClickHouse. Agrega una configuración personalizada de ClickHouse con extraConfig:

Configuración integrada de usuarios adicionales

También puedes especificar la configuración adicional de usuarios de ClickHouse mediante extraUsersConfig. Esto es útil para definir usuarios, perfiles, cuotas y privilegios directamente en la especificación del clúster.
La extraUsersConfig se almacena en el objeto ConfigMap de k8s. Evite incluir secretos en texto plano allí.

Consulta la documentación para ver todas las opciones de configuración de usuarios de ClickHouse admitidas.

Ejemplo de configuración

Ejemplo completo de configuración:
Última modificación el 12 de junio de 2026