Skip to main content
Este documento apresenta uma visão geral dos principais conceitos e padrões de uso do ClickHouse Operator.

O que é o ClickHouse Operator

O ClickHouse Operator é um operador do Kubernetes que automatiza a implantação e o gerenciamento de clusters do ClickHouse no Kubernetes. Desenvolvido com base no padrão de operador, ele estende a API do Kubernetes com recursos personalizados que representam clusters do ClickHouse e suas dependências. O operador é responsável por:
  • Gerenciamento do ciclo de vida do cluster (criação, atualizações, escalonamento, exclusão)
  • Coordenação do cluster ClickHouse Keeper
  • Geração automática de configuração
  • Sincronização do esquema do banco de dados
  • Atualizações progressivas e de versão
  • Provisionamento de armazenamento

Recursos personalizados

O operador fornece duas definições principais de recursos personalizados (CRDs):

ClickHouseCluster

Representa um cluster de banco de dados do ClickHouse com réplicas e shards configuráveis.

KeeperCluster

Representa um cluster do ClickHouse Keeper para coordenação distribuída (substituto do ZooKeeper).

Coordenação

O ClickHouse Keeper é obrigatório

Cada ClickHouseCluster exige um cluster do ClickHouse Keeper para coordenação distribuída. O cluster Keeper deve ser referenciado na especificação do ClickHouseCluster usando keeperClusterRef. Por padrão, o operador procura no espaço de nomes do ClickHouseCluster, mas você também pode definir keeperClusterRef.namespace para apontar para um KeeperCluster em outro espaço de nomes monitorado.

Relação um para um com o Keeper

Cada ClickHouseCluster deve ter seu próprio KeeperCluster dedicado. Não é possível compartilhar um único KeeperCluster entre vários ClickHouseClusters. Por quê? O operador gera automaticamente uma chave de authentication exclusiva para cada ClickHouseCluster acessar seu Keeper. Essa chave é armazenada em um Secret e não pode ser compartilhada. Consequências:
  • Vários ClickHouseClusters não podem apontar para o mesmo KeeperCluster
  • Recriar um ClickHouseCluster exige recriar também seu KeeperCluster
Volumes persistentes não são excluídos automaticamente quando os recursos ClickHouseCluster ou KeeperCluster são excluídos.
Ao recriar um cluster:
  1. Exclua o recurso ClickHouseCluster
  2. Exclua o recurso KeeperCluster
  3. Aguarde até que todos os pods sejam encerrados
  4. Opcionalmente, exclua os PersistentVolumeClaims se quiser começar do zero
  5. Recrie o KeeperCluster e o ClickHouseCluster juntos
Para evitar erros de authentication, exclua manualmente os volumes persistentes ou recrie ambos os clusters juntos com armazenamento novo.

Replicação do esquema

O ClickHouse Operator replica automaticamente as definições do banco de dados em todas as réplicas de um cluster.

O que é replicado

O operador sincroniza:
  • definições de bancos de dados Replicated
  • motores de banco de dados de integração (PostgreSQL, MySQL etc.)
O operador não sincroniza:
  • bancos de dados não replicados (Atomic, Ordinary etc.)
  • tabelas locais em bancos de dados não replicados
  • dados das tabelas (tratados pela replicação do ClickHouse)
Prática recomendadaSempre use o motor de banco de dados Replicated em implantações de produção.
Benefícios:
  • Replicação automática do esquema em todos os nós
  • Gerenciamento simplificado de tabelas
  • O operador pode se sincronizar com novas réplicas
  • Esquema consistente em todo o cluster
Crie bancos de dados com DDL distribuído:

Evite motores que não sejam Replicated

Os motores de banco de dados não replicados (Atomic, Lazy, SQLite, Ordinary) exigem gerenciamento manual do esquema:
  • As tabelas devem ser criadas individualmente em cada réplica
  • Pode haver divergência de esquema entre os nós
  • O operador não consegue sincronizar automaticamente novas réplicas

Desativar a replicação de esquema

Para desativar a replicação automática de esquema, defina spec.settings.enableDatabaseSync como false no recurso do ClickHouseCluster.

Gerenciamento de armazenamento

O operador gerencia o armazenamento usando PersistentVolumeClaims (PVCs) do Kubernetes.

Configuração do volume de dados

Especifique os requisitos de armazenamento em dataVolumeClaimSpec:

Ciclo de vida do armazenamento

  • Criação: PVCs são criados automaticamente com o cluster
  • Expansão: compatível se a StorageClass permitir a expansão de volume
  • Retenção: PVCs não são excluídos automaticamente quando o cluster é excluído
  • Reutilização: PVCs existentes podem ser reutilizados se o cluster for recriado com o mesmo nome
Para remover completamente o armazenamento:

Destaques da configuração padrão

  • Cluster pré-configurado: cluster chamado ‘default’ que contém todos os nós do ClickHouse.
  • Macros padrão: algumas macros úteis são predefinidas:
    • {cluster}: nome do cluster (default)
    • {shard}: número do shard
    • {replica}: número da réplica
  • Armazenamento replicado para entidades de RBAC
  • Armazenamento replicado para User Defined Functions (UDF)

Próximas etapas

Última modificação em 3 de julho de 2026