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.1
Créer une CA avec cert-manager
La configuration la plus reproductible consiste à utiliser une CA auto-signée qui signe ensuite le
certificat du serveur. Vous obtenez ainsi un En production, remplacez le bootstrap autosigné par votre véritable issuer (une
CA d’entreprise, Vault, ACME, etc.). Seule l’étape 2 change — la configuration du cluster est
identique.
ca.crt stable auquel les clients peuvent faire confiance.2
Émettre le certificat serveur
Demandez un certificat final à l’issuer CA. Les cert-manager crée le Secret
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 :3
Activer le TLS sur le cluster
Faites pointer le cluster vers le Secret :
Ce que fait l’opérateur
Lorsquetls.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 plus des ports existants. - Monte le Secret dans
/etc/clickhouse-server/tls/et génère le bloc ClickHouseopenSSLavecverificationMode: relaxed,disableProtocols: sslv2,sslv3etpreferServerCiphers: true. Ce sont les valeurs par défaut — voir Personnaliser les paramètres TLS pour les remplacer.
required: true, l’opérateur :- Supprime les ports non sécurisés
9000(natif) et8123(HTTP) — seules les variantes TLS restent, de sorte que les clients en plaintext ne peuvent plus se connecter. - Bascule la probe de liveness du pod vers le port natif sécurisé
9440, afin que la vérification d’état continue de fonctionner sans listener en plaintext.
Les ports TLS
8443 et 9440 sont réservés par le webhook sans condition,
même lorsque TLS est désactivé, de sorte qu’un changement ultérieur de tls.enabled n’entre jamais en collision avec une
entrée spec.additionalPorts. Voir
Configuration → additionalPorts.4
Se connecter en TLS
Avec HTTPS (port Récupérez
required: true, les clients doivent utiliser les ports sécurisés et faire confiance à la CA. Accédez à
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 depuis le Secret pour des 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