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. Referencie um KeeperCluster gerenciado pelo operador 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. Para usar um ensemble do Keeper que não seja gerenciado pelo operador, liste os servidores dele em externalKeeper. Consulte Keeper gerenciado externamente.

Relação um para um com o Keeper

Por padrão, cada ClickHouseCluster precisa de seu próprio KeeperCluster dedicado. Por quê? O operador gera automaticamente uma chave de authentication exclusiva para cada ClickHouseCluster acessar seu Keeper. Essa chave é armazenada em um Secret. Consequências:
  • Vários ClickHouseClusters não podem apontar para o mesmo KeeperCluster sem a configuração descrita abaixo
  • Recriar um ClickHouseCluster exige recriar também seu KeeperCluster
Para compartilhar um único cluster do Keeper, defina um zookeeper.root distinto em settings.extraConfig para cada ClickHouseCluster e crie esse znode antes de o ClickHouse iniciar. Consulte Keeper gerenciado externamente.
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