spec.settings.tls, consulte
Configuration → TLS/SSL configuration
e a API Reference.
Pré-requisitos
- Um cluster ClickHouse em execução gerenciado pelo operator (consulte a Introdução).
- cert-manager instalado no cluster.
- Acesso ao
kubectlno espaço de nomes do cluster.
Secret do Kubernetes fornecido por você. O cert-manager é a forma recomendada de gerar e
rotacionar esse Secret, mas qualquer ferramenta que grave um Secret no formato esperado funciona.
Como o operator espera os certificados
spec.settings.tls.serverCertSecret para um Secret que
contém o par de chaves do servidor:
Esse é exatamente o layout que o cert-manager grava para um recurso
Certificate, portanto não é
necessária nenhuma conversão. O operator monta o par de chaves em cada pod do Kubernetes em
/etc/clickhouse-server/tls/ e o conecta à configuração openSSL do ClickHouse.
serverCertSecret é obrigatório quando tls.enabled: true. O webhook de
validação rejeita um cluster que habilita TLS sem ele e rejeita required: true
a menos que enabled: true.1
Inicialize uma CA com cert-manager
A configuração mais reprodutível é uma CA autoassinada que assina o certificado do servidor.
Isso fornece um Em produção, substitua o bootstrap autoassinado pelo seu emissor real (uma
CA corporativa, Vault, ACME etc.). Apenas o Passo 2 muda — a configuração do cluster é
idêntica.
ca.crt estável no qual os clientes podem confiar.2
Emitir o certificado do servidor
Solicite um certificado de entidade final ao emissor da CA. Os O cert-manager cria o Secret
dnsNames devem cobrir a forma como
os clientes endereçam os pods. O operator cria um único Service headless chamado
<cluster-name>-clickhouse-headless, e cada pod do Kubernetes de réplica pode ser endereçado em
<cluster-name>-clickhouse-<shard>-<index>-0.<cluster-name>-clickhouse-headless.<namespace>.svc.cluster.local.
Um curinga no domínio do Service headless cobre todas as réplicas:O operador não cria um Service para todo o cluster (com balanceamento de carga). Se você
quiser um único endpoint estável ao qual se conectar, crie seu próprio Service
ClusterIP
selecionando os pods do Kubernetes do cluster e adicione o nome DNS dele a dnsNames acima.clickhouse-cert com tls.crt, tls.key e
ca.crt e o atualiza antes de expirar. Verifique se ele existe:3
Habilite o TLS no cluster
Aponte o cluster para o Secret:
O que o operador faz
Quandotls.enabled: true, o operador:- Abre as portas seguras em cada pod do Kubernetes e no Service headless:
9440(TLS nativo) e8443(HTTPS). Elas são adicionadas junto com as portas existentes. - Monta o Secret em
/etc/clickhouse-server/tls/e gera o blocoopenSSLdo ClickHouse comverificationMode: relaxed,disableProtocols: sslv2,sslv3epreferServerCiphers: true. Esses são os padrões — consulte Como personalizar as configurações de TLS para substituí-los.
required: true, o operador adicionalmente:- Remove as portas inseguras
9000(nativa) e8123(HTTP) — apenas as variantes TLS permanecem, portanto clientes sem criptografia não podem mais se conectar. - Altera a probe de liveness do pod para a porta nativa segura
9440, para que a verificação de integridade continue funcionando sem um listener sem criptografia.
As portas TLS
8443 e 9440 são reservadas pelo webhook incondicionalmente,
mesmo quando o TLS está desativado, portanto alternar tls.enabled mais tarde nunca entra em conflito com uma
entrada spec.additionalPorts. Consulte
Configuração → additionalPorts.4
Conectar via TLS
Com HTTPS (porta Extraia o
required: true, os clientes devem usar as portas seguras e confiar na CA. Enderece
um pod do Kubernetes de réplica específico por meio do Service headless (ou do seu próprio ClusterIP
Service, se você tiver criado um).Protocolo nativo (clickhouse-client, porta 9440):8443):ca.crt diretamente do Secret para testes locais:Criptografando o tráfego do Keeper
KeeperCluster separadamente — emita um certificado para o
serviço do Keeper (Etapas 1–2 com os dnsNames do serviço do Keeper) e faça referência a ele:
2281. Quando o TLS está habilitado no Keeper, o
cluster ClickHouse se conecta a ele por TLS automaticamente — sem necessidade de configuração extra no
lado do ClickHouseCluster. O ClickHouse verifica o certificado do Keeper no repositório de confiança do sistema,
além de qualquer caBundle que você configurar.
Bundle de CA personalizado
caBundle:
openSSL
(caConfig). O repositório de confiança do sistema continua em vigor — sua CA privada é confiável além das
raízes públicas, portanto as conexões com endpoints públicos continuam funcionando. Para uma
configuração autoassinada, faça caBundle apontar para a chave ca.crt do mesmo Secret que o cert-manager
gravou (como no exemplo cluster_with_ssl).
Personalizando as configurações de TLS
openSSL que o operator gera é o padrão, não um limite. Ele é gravado
na configuração principal do servidor; tudo o que estiver em spec.settings.extraConfig é renderizado em
config.d/99-extra-config.yaml, que o ClickHouse mescla por último — portanto, substitui os
valores gerados.
Para reforçar os padrões — por exemplo, exigir verificação estrita de peer e elevar o
protocolo mínimo para TLS 1.2 — defina as chaves de openSSL.server que você deseja alterar:
openSSL configurações do servidor
para ver as opções disponíveis e
Configuração → Configuração extra embutida
para entender como extraConfig é mesclado.
Verifique e solucione problemas
Veja também
- Configuração → Configuração de TLS/SSL — referência de campos
- Configuração →
additionalPorts— portas reservadas - Referência da API → ClusterTLSSpec
- configurações do servidor
openSSL— opções de TLS que você pode sobrescrever viaextraConfig