spec.settings.tls, consultez
Configuration → Configuration TLS/SSL
et la référence de l’API.
Prérequis
- Un cluster ClickHouse en fonctionnement, géré par l’opérateur (voir Introduction).
- cert-manager installé dans le cluster.
- Un accès
kubectlà l’espace de noms du cluster.
Secret Kubernetes que vous fournissez. cert-manager est le moyen recommandé pour générer et
renouveler ce Secret, mais tout outil capable d’écrire un Secret dans le format attendu convient.
Format des certificats attendu par l’opérateur
spec.settings.tls.serverCertSecret vers un Secret qui
contient la paire clé/certificat du serveur :
C’est exactement le format que cert-manager écrit pour une ressource
Certificate, donc aucune
conversion n’est nécessaire. L’opérateur monte la paire clé/certificat dans chaque pod sous
/etc/clickhouse-server/tls/ et l’intègre à la configuration openSSL de ClickHouse.
serverCertSecret est obligatoire lorsque tls.enabled: true. Le
webhook de validation rejette un cluster qui active TLS sans ce paramètre, et rejette required: true
si enabled: true n’est pas défini.Étape 1 — Initialiser une CA avec cert-manager
ca.crt stable auquel les clients peuvent se fier.
Étape 2 — Émettre le certificat serveur
dnsNames doivent couvrir la façon
dont les clients accèdent aux pods. L’opérateur crée un seul Service headless nommé
<cluster-name>-clickhouse-headless, et chaque pod de réplique est accessible à l’adresse
<cluster-name>-clickhouse-<shard>-<index>-0.<cluster-name>-clickhouse-headless.<namespace>.svc.cluster.local.
Un joker sur le domaine du Service headless couvre toutes les répliques :
L’opérateur ne crée pas de Service à l’échelle du cluster (avec équilibrage de charge). Si vous
souhaitez disposer d’un point de terminaison stable unique auquel vous connecter, créez votre propre Service de type
ClusterIP
ciblant les pods du cluster et ajoutez son nom DNS à dnsNames ci-dessus.clickhouse-cert avec tls.crt, tls.key et
ca.crt, et le renouvelle avant son expiration. Vérifiez qu’il existe :
Étape 3 — Activer TLS sur le cluster
Ce que fait l’opérateur
tls.enabled: true, l’opérateur :
- Ouvre les ports sécurisés sur chaque pod et le Service headless :
9440(TLS natif) et8443(HTTPS). Ils sont ajoutés en complément des ports existants. - Monte le Secret dans
/etc/clickhouse-server/tls/et génère le blocopenSSLde ClickHouse avecverificationMode: relaxed,disableProtocols: sslv2,sslv3etpreferServerCiphers: true. Il s’agit des valeurs par défaut — voir Personnaliser les paramètres TLS pour les modifier.
required: true, l’opérateur :
- Supprime les ports non sécurisés
9000(natif) et8123(HTTP) — seules les variantes TLS restent disponibles, de sorte que les clients en plaintext ne peuvent plus se connecter. - Bascule la probe de liveness du pod sur le port natif sécurisé
9440, afin que la vérification d’état continue de fonctionner sans écouteur en plaintext.
Les ports TLS
8443 et 9440 sont réservés par le webhook dans tous les cas,
même lorsque TLS est désactivé, de sorte que l’activation ultérieure de tls.enabled n’entre jamais en conflit avec une
entrée spec.additionalPorts. Voir
Configuration → additionalPorts.Étape 4 — Se connecter via TLS
required: true, les clients doivent utiliser les ports sécurisés et faire confiance à la CA. Ciblez
un pod de réplique spécifique via le Service headless (ou votre propre
service de type ClusterIP si vous en avez créé un).
Protocole natif (clickhouse-client, port 9440) :
8443) :
ca.crt directement à partir du Secret pour les tests en local :
Chiffrement du trafic Keeper
KeeperCluster — émettez un certificat pour le
service Keeper (étapes 1–2 avec les dnsNames du service Keeper) et référencez-le :
2281. Une fois TLS activé sur Keeper, le
cluster ClickHouse s’y connecte automatiquement via TLS — aucun paramétrage supplémentaire n’est nécessaire du côté
de ClickHouseCluster. ClickHouse vérifie le certificat de Keeper par rapport au
magasin de certificats racines du système, ainsi qu’à tout caBundle que vous configurez.
Bundle de CA personnalisé
caBundle :
openSSL
(caConfig). Le magasin de confiance du système reste utilisé — votre CA privée est approuvée en
plus des certificats racines publics, de sorte que les connexions aux endpoints publics continuent de fonctionner. Pour une configuration auto-signée, faites pointer caBundle vers la clé ca.crt du même Secret créé par cert-manager
(comme dans l’exemple cluster_with_ssl).
Personnaliser les paramètres TLS
openSSL généré par l’opérateur constitue une valeur par défaut, pas une limite. Il est écrit
dans la configuration principale du serveur ; tout ce qui se trouve sous spec.settings.extraConfig est rendu dans
config.d/99-extra-config.yaml, que ClickHouse fusionne en dernier — il remplace donc les
valeurs générées.
Pour renforcer les paramètres par défaut — par exemple, exiger une vérification stricte du pair et relever la
version minimale du protocole à TLS 1.2 — définissez les paramètres openSSL.server que vous souhaitez modifier :
openSSL
pour connaître les options disponibles, ainsi que
Configuration → Configuration supplémentaire intégrée
pour savoir comment extraConfig est fusionné.
Vérification et dépannage
Voir aussi
- Configuration → Configuration de TLS/SSL — référence des champs
- Configuration →
additionalPorts— ports réservés - Référence API → ClusterTLSSpec
- Paramètres du serveur
openSSL— options TLS que vous pouvez surcharger viaextraConfig