Skip to main content
Cette page vous guide depuis le jeton d’inscription jusqu’à un connector vérifié en mode managé, où l’executor applique le cycle de vie du service piloté par ClickHouse Cloud. Le connector s’installe sur un cluster Kubernetes (Helm) ou une VM Linux (systemd). L’inscription par token est le flux standard. Si votre environnement ne peut pas accéder directement à votre connector endpoint, consultez les installations isolées et mises en miroir. Pour observer une instance ClickHouse que vous exploitez vous-même, sans l’executor, utilisez --no-managed.

Prérequis

Enregistrer votre environnement

Avant l’inscription, votre account team enregistre votre environnement et active le mode managé pour votre organisation. Communiquez-lui :
  • l’identifiant de votre AWS account, la région et le nom de votre EKS cluster
  • si le connector s’exécute sur une VM Linux ou dans le cluster
  • le node group dédié aux composants de la plateforme
  • le préfixe de namespace des services (ns- par défaut)
  • la manière dont votre cluster récupère les images ClickHouse : via l’accès au registry que ClickHouse Cloud configure pour votre compte, ou via votre propre mirror
ClickHouse Cloud délivre ensuite votre connector endpoint, un jeton d’inscription à usage unique ainsi que l’ARN du dépôt ECR du chart du ClickHouse cluster (l’entrée chart_repository_arn des racines Terraform). Une installation Terraform reçoit également le bundle de la plateforme à cette étape : avec Helm, il est appliqué par clicklink clctl init --managed --from-terraform --platform-bundle, et sur une VM, par clicklink clctl platform approve --bundle après l’inscription. Toute autre installation managée reçoit son premier bundle ultérieurement : celui-ci est préparé par l’executor, puis appliqué avec clicklink clctl platform approve, comme décrit dans mises à jour de la plateforme ; une installation avec --no-managed n’en nécessite aucun. Ce token identifie votre environnement : l’inscription ne nécessite donc aucun identifiant supplémentaire.

Pour toute installation

  • Connector v0.17.0 ou ultérieur. Les versions antérieures ne disposent ni du mode managé, ni des commandes platform, ni de instances create. L’installateur propose la dernière version, sauf si vous passez --version.
  • Votre connector endpoint et votre jeton d’inscription, fournis lors de l’enregistrement.
  • Un egress sur le port 443 vers https://<subdomain>.<connector-domain> et https://<subdomain>.enroll.<connector-domain>, ainsi que vers releases.clicklink.clickhouse.com et Amazon ECR Public au moment de l’installation. En mode managé, l’executor contacte également Amazon ECR et STS lorsqu’une synchronisation ou une création de plateforme récupère un chart depuis ECR. Si l’un de ces éléments est inaccessible, consultez installations isolées et mises en miroir.
  • Un EKS cluster Amazon pour le mode managé. init refuse le mode managé sur tout autre cluster et indique --no-managed pour une installation sans l’executor. Terraform sur AWS fournit des modules racines pour un nouveau cluster comme pour un cluster que vous exploitez déjà, ainsi que la commande init qui installe la couche plateforme par-dessus.
  • Les droits d’administration du cluster pour le grant de l’executor. Le grant crée un ClusterRole, un ClusterRoleBinding et une ValidatingAdmissionPolicy qui confinent l’executor aux namespaces situés sous votre préfixe. Sur Kubernetes, le kubeconfig avec lequel vous exécutez init doit disposer de ces droits. Sur une VM, c’est le kubeconfig de l’hôte qui doit en disposer ; si l’hôte ne les possède pas, init affiche la commande à exécuter depuis un hôte qui en dispose.
  • Pas encore de ClickHouse. Une installation managed démarre sans aucun service ; ceux que l’executor crée s’enregistrent d’eux-mêmes. En mode managé, init n’enregistre aucun ClickHouse que vous exécutez vous-même (sur Kubernetes, il refuse --instance et --instance-namespace). Pour observer un tel cluster, installez un déploiement de connector distinct avec --no-managed. --ch-user-suffix permet aux deux déploiements de partager une instance sans entrer en conflit sur les utilisateurs du connector. Ce déploiement nécessite un listener native joignable, 9440 sécurisé ou 9000 en plaintext, détecté automatiquement sur Kubernetes. Il nécessite également un accès ClickHouse admin pour le provisioning : un utilisateur default sans password, un password transmis via --ch-admin-password-stdin ou saisi à l’invite, ou une injection de CR pour les instances gérées par un opérateur.
  • cosign partout où vous téléchargez des artefacts de version. L’installateur vérifie toujours le checksum SHA-256. Si cosign est installé, il vérifie en outre la signature de la version, et avec CLICKLINK_REQUIRE_COSIGN=1 il refuse de poursuivre sans cosign.

Pour les installations Kubernetes (Helm)

  • Un kubeconfig dont le contexte courant pointe vers l’EKS cluster. Il doit pouvoir créer et lire le namespace du connector, appliquer des Secrets, créer des ServiceAccounts, des Roles et des RoleBindings, installer le chart et accorder à l’executor son accès cluster-wide.
  • Des AWS identifiants sur le poste de travail (environnement ou profil) disposant de eks:DescribeCluster et ec2:DescribeVpcs. init s’en sert pour lire les blocs CIDR du VPC de votre cluster nécessaires à la NetworkPolicy. Si la lookup échoue, un avertissement est émis et la liste reste à compléter par vos soins.
  • Les CIDR situés derrière votre connector endpoint, afin d’activer dès l’installation la NetworkPolicy du chart en refus par défaut. Sans eux, init prépare la policy en mode disabled et indique comment l’activer ultérieurement.
  • Une StorageClass par défaut, ou une classe à transmettre via --storage-class ; le troubleshooter et l’executor conservent leur état sur des PersistentVolumeClaims.
  • Un accès au pull d’images : les nœuds du cluster doivent pouvoir récupérer l’image ECR publique, ou un mirror que vous hébergez.

Pour les installations sur VM Linux (systemd)

  • N’importe quel hôte Linux avec systemd, amd64 ou arm64. Les builds Linux s’exécutent en mode FIPS.
  • Accès root pour l’installeur et pour init.
  • Ports libres 8082, 8084 et 8086 pour la health et les metrics, 9999 sur l’interface de loopback pour l’API locale de l’executor, et 8443 lorsque la passerelle de sessions de support est activée.
  • Accès Admin au Kubernetes API server pour le provisioning et le grant de l’executor : un kubeconfig sur l’hôte, --server et --ca-data, ou les prompts. Les ensembles d’accès sont ancrés à des ServiceAccounts Kubernetes sur les deux targets. En mode managé, le contexte courant du kubeconfig doit pointer vers l’EKS cluster que vous gérez ; init refuse d’accorder le grant via tout autre contexte.
Sur une VM, --skip-provision est le seul moyen de contourner l’exigence relative au Kubernetes API server, et il ne s’applique qu’à l’étape. Il ignore le provisioning du ClickHouse user, le grant de l’executor, l’activation de l’unité et la vérification : à lui seul, il ne produit donc aucun connector en fonctionnement. Sur Kubernetes, il ignore uniquement le provisioning du ClickHouse user. Le grant de l’executor reste appliqué, car l’executor du chart ne peut pas être planifié sans le ServiceAccount granted.

Installer et enregistrer

1

Obtenez l’endpoint et le jeton d’inscription de votre connecteur

Les deux vous sont fournis par votre équipe de compte une fois votre environnement enregistré. L’endpoint a la forme suivante :
Le jeton est à usage unique et expire rapidement : procédez donc à l’enrollment peu après l’avoir reçu. Traitez-le comme un secret : la CLI le lit depuis une invite masquée ou depuis la première ligne de stdin, jamais depuis les arguments de ligne de commande, le disque ou les logs. S’il expire avant que vous ne procédiez à l’enrollment, demandez-en un nouveau à votre account team.
2

Installer et vérifier la CLI

Une seule commande installe un binaire clicklink vérifié. Elle détecte votre plateforme (macOS ou Linux, amd64 ou arm64), télécharge la version actuelle et vérifie la somme de contrôle SHA-256. Si cosign est installé, elle vérifie également la signature de la version. Elle installe dans /usr/local/bin si ce répertoire est accessible en écriture, sinon dans ~/.local/bin (ajoutez-le à votre PATH si nécessaire ; --bin-dir permet de le surcharger). Pour une installation Kubernetes, exécutez-la depuis n’importe quel poste de travail disposant d’un accès kubeconfig au cluster :
Pour une installation sur VM, exécutez le même script sur l’hôte avec --host. Une fois le téléchargement vérifié, il crée l’utilisateur système clicklink, les répertoires /etc/clicklink, /var/lib/clicklink et /var/log/clicklink, ainsi que les unités systemd des trois composants. Il initialise /etc/clicklink/redaction-patterns.yaml avec un ensemble de patterns de départ (un fichier existant est conservé), si bien que l’étape suivante est l’enrôlement :
Les deux formes acceptent --version vX.Y.Z pour épingler une version. Réexécuter l’une ou l’autre est sans risque : l’installation sur l’hôte sauvegarde le binaire précédent et conserve votre configuration active. Pour inspecter le script avant de l’exécuter, ou pour récupérer et vérifier vous-même l’archive tar de la version, consultez téléchargement et vérification manuels.
3

Enregistrer et installer le connecteur

init --enroll consomme votre token, obtient un certificat client signé ainsi que le grant cluster-wide de l’executor, puis installe et vérifie le connector.Dans un terminal, init demande Enable managed mode (ClickHouse manages the lifecycle of ClickHouse services in this cluster)? avec yes présélectionné. Passez --managed pour ignorer le prompt, ou --no-managed pour une installation en observation seule, sans l’executor. Une installation neuve non assistée sans aucun de ces flags laisse le mode Managed désactivé (une réexécution avec --force conserve la posture de la configuration remplacée) : passez donc toujours --managed dans vos scripts.
Depuis votre poste de travail, avec le contexte kube pointant sur votre EKS cluster, exécutez :
Collez l’enrollment token au prompt masqué. init lit le nom, la region et l’AWS account du cluster à partir de l’ARN EKS du contexte courant : vous n’avez donc rien à saisir concernant le cluster. Il demande ensuite :
  • le namespace du connector (clicklink par défaut)
  • une StorageClass, uniquement si le cluster n’en désigne aucune par défaut
  • les CIDR situés derrière votre point de terminaison connector, pour l’allowlist d’egress de la NetworkPolicy (laissez vide pour préparer la policy désactivée)
  • la posture des support sessions et, si elles sont activées, l’allowlist des e-mails des operators
init consomme le token et enregistre l’enrollment bundle sous le nom handoff.yaml dans le répertoire de travail. Il prépare la surcouche de values Helm clicklink-values.yaml avec le bloc executor et les plages du VPC de votre cluster comme CIDR de l’API server de la NetworkPolicy. Il crée le namespace, applique le Secret clicklink-hmac, génère la private key dans le Secret clicklink-mtls et écrit la CSR. Il accorde à l’executor son access cluster-wide dans le namespace du connector et fait signer le certificat client par ClickHouse Cloud. Il installe la release Helm clicklink-connector avec son client Helm intégré (aucun binary helm requis) et vérifie l’état de santé.Pour les exécutions non assistées, répondez aux prompts via des flags. Utilisez le bundle enregistré comme point d’entrée, ou transmettez l’enrollment token à --enroll comme première ligne de stdin :
Passez --no-gateway au lieu de --operators pour désactiver les support sessions ; ces deux flags sont mutuellement exclusifs.
Lorsque l’installation est vérifiée, init affiche Managed mode is on ainsi que la commande qui prépare votre premier service. Poursuivez avec créer un service.
4

Vérifier que l’opération a réussi

init vérifie l’installation avant de signaler une réussite. Sur Kubernetes, la commande interroge l’endpoint /livez de chaque composant activé, y compris l’executor, pendant cinq minutes au maximum. Lorsque la passerelle de sessions de support est activée, elle exige également que celle-ci réponde 401 aux probes non authentifiées. Sur une VM, elle attend le /livez de chaque démon, puis exécute l’ensemble de la suite preflight. Celle-ci vérifie la config, les fichiers, les conflicts de ports, l’accessibilité réseau, la connectivité à ClickHouse, l’état des unités systemd pour les trois unités, l’accès par composant, le disque et les motifs de masquage.Pour vérifier manuellement sur Kubernetes :
Tous les pods du connector doivent être à l’état Running et prêts : le scraper, le troubleshooter et l’executor.Pour le vérifier manuellement sur une VM :
Il renvoie 0 lorsque toutes les vérifications réussissent et 2 en cas d’échec, et affiche les vérifications ayant échoué.
5

Nettoyer

L’enrollment bundle handoff.yaml (mode 0600, dans le répertoire de travail) permet aux ré-exécutions et à la recovery pendant l’installation de se dérouler sans second jeton. Il contient l’API secret du connector en plaintext : supprimez-le donc dès que l’installation est vérifiée :
Le connector en cours d’exécution conserve sa propre copie des credentials ; les mises à niveau et les modifications de configuration ne requièrent jamais ce fichier. Si vous avez de nouveau besoin d’exécuter init par la suite, demandez un nouvel enrollment token à votre account team, puis lancez init --enroll --force.

Installations isolées et mises en miroir

Deux éléments indépendants peuvent transiter hors bande, selon ce que votre environnement peut atteindre. L’executor n’a besoin de rien de plus : il s’authentifie avec le même certificat client et les mêmes identifiants d’API que les autres composants. Vous appliquez son grant cluster-wide via votre kubeconfig, et non par le réseau. Livraison du bundle. Si vous préférez ne pas échanger de token en ligne, votre account team peut vous remettre directement l’enrollment bundle pendant l’onboarding ; exécutez clicklink clctl init --handoff <bundle-file> à la place de --enroll. --handoff ne remplace que l’échange du token. La signature du certificat passe toujours par l’endpoint d’enrollment : n’utilisez donc --handoff seul que si cet endpoint est joignable depuis la machine où vous exécutez init. Signature de certificat hors bande. Lorsque l’endpoint d’enrollment n’est pas joignable depuis la machine où vous exécutez init, ajoutez --no-auto-sign : init prépare tout et écrit clicklink.csr. Envoyez la CSR à votre account team, puis terminez l’installation avec le certificat et la chain renvoyés. Sur une VM, exécutez sudo clicklink clctl init --signed-cert client.crt --chain ca-chain.crt. Sur Kubernetes, exécutez clicklink clctl init --signed-cert client.crt --chain ca-chain.crt --target helm --target-namespace <connector-namespace> --values clicklink-values.yaml ; l’exécution préparée affiche une séquence équivalente kubectl patch suivie de helm upgrade --install. Seule la CSR circule ; la private key ne quitte jamais votre environnement. Sur Kubernetes, --chart accepte un nom de chart résolu via --chart-repo, une référence oci://, une URL directe, ou encore une archive ou un directory local. --chart-version prend par défaut la version de la CLI elle-même, de sorte que le binary et le chart évoluent de concert. Pour servir les images depuis votre propre registry, créez un miroir de l’image de conteneur et définissez image.repository dans la superposition de values. Si votre chemin d’egress présente une private CA au connector, passez --api-private-ca. Le connector vérifie alors votre connector endpoint par rapport aux racines système ainsi qu’à la CA chain issue de l’enrollment bundle. L’installateur fonctionne également depuis un miroir : hébergez les artefacts de version et install.sh sur votre propre miroir, puis pointez dessus avec CLICKLINK_MIRROR_URL.

Téléchargement et vérification manuels

Si vous préférez ne pas télécharger le programme d’installation via un pipe, récupérez et vérifiez vous-même la version. Le bloc détecte votre plateforme et votre architecture ; exécutez-le tel quel sur macOS ou Linux, amd64 ou arm64 :
Vérifiez la signature avec cosign avant toute extraction :
Sur une station de travail (installations Kubernetes), extrayez l’archive tar et installez le binaire :
Sur une VM, extrayez l’archive tar et exécutez sudo ./install.sh depuis le répertoire extrait. En plus de ses artefacts de version, cette commande effectue la même installation sur l’hôte que --host.

En cas d’échec

Relancez la même commande. init est idempotente : les relances convergent vers le même état, conservent votre config et vos fichiers préparés, et ignorent le travail déjà effectué. Lorsqu’une étape échoue en cours de route, la CLI affiche les commandes de récupération exactes ; elles peuvent être répétées sans risque. Si l’enrôlement est refusé, c’est que le jeton a déjà été utilisé, qu’il est invalide ou expiré. Pour un jeton déjà utilisé, relancez avec --handoff handoff.yaml, qui existe jusqu’à l’étape de nettoyage. Sinon, demandez un nouveau jeton à votre account team. Si l’enrôlement échoue sur une erreur de transport, relancez la même commande. Une relance refusée signifie que la première tentative a consommé le jeton : demandez-en un nouveau. Si le mode managé est refusé parce que le cluster n’est pas un cluster EKS, relancez avec --no-managed pour installer sans l’executor. Sur une VM, un kubeconfig dont le contexte courant pointe ailleurs est lui aussi refusé : changez de contexte avec kubectl config use-context, puis relancez. Si le grant de l’executor ne peut pas être appliqué :
  • Sur une VM, init n’échoue pas. La commande prépare le bundle et affiche un avertissement indiquant la commande exacte à exécuter depuis un kubeconfig disposant des droits d’admin du cluster. Le preflight de vérification signale l’état de l’executor tel quel. Exécutez la commande affichée, puis relancez la même commande init pour vérifier :
  • Sur Kubernetes, un grant refusé interrompt init avant le déploiement du chart, car l’executor se lie (bind) au ServiceAccount accordé et ne peut pas démarrer sans lui. La superposition de values préparée, les Secrets et la CSR sont conservés, et init affiche les deux commandes à exécuter depuis un host disposant des droits d’admin sur le cluster. Exécutez-les, puis relancez la même commande init pour continuer :
--force constitue une réinitialisation explicite ; une simple nouvelle tentative de routine n’en a pas besoin. Cette option écrase la config ou la superposition de values conservée, régénère la client key et remplace un certificat client non expiré (une réponse 409 de l’endpoint de signature indique qu’il en existe déjà un). Elle préserve l’UUID du cluster du connector ainsi que sa posture de mode managé. Les réexécutions sans surveillance conservent cette posture et, sur un terminal, le prompt la propose par défaut, sauf si vous passez --managed ou --no-managed. Utilisez --force pour effectuer une rotation des identifiants ou remplacer un certificat ; consultez la page opérations pour le modèle complet de réexécution et de recovery.