Qu’est-ce qu’une mise à jour de la plateforme
La couche plateforme se compose de trois composants : le snapshot controller, le ClickHouse Operator et les collectors de supervision. Ils s’installent dans cet ordre, car chacun a besoin des définitions de custom resource du précédent. Les services utilisent une StorageClass nomméegp3-encrypted (volumes gp3 chiffrés) livrée avec eux.
Un bundle de plateforme est le manifest que ClickHouse Cloud génère pour votre environnement. Il fige les versions de chart et d’image de ces composants et désigne le registry depuis lequel ils sont récupérés. Chaque bundle est identifié par le sha256 de ce manifest. ClickHouse Cloud le transmet à l’executor via le canal de commandes, et l’executor le prépare en attente de votre approbation.
Un bundle s’applique en deux volets :
- Le volet permissions regroupe tout ce qui accorde ou encadre l’accès : Namespaces, CustomResourceDefinitions, ServiceAccounts, ClusterRoles et ClusterRoleBindings, Roles et RoleBindings, configurations de webhook et d’admission, PriorityClasses et la StorageClass. Vous seul l’appliquez, avec vos credentials, en exécutant
clicklink clctl platform approve. - Le volet charge de travail correspond à ce qui s’exécute : Deployments, Services, ConfigMaps, Secrets, Jobs et PodDisruptionBudgets. L’executor l’applique sous une identity dédiée
pcm-platform, qui peut écrire ces types de ressources et rien d’autre, et uniquement tant que le jeton à durée de vie courte généré par votre approbation reste valide.
Approuver une mise à jour de la plateforme
Identifiants de registry
L’authentication auprès du registry dépend du mode de distribution d’image enregistré pour votre environnement :- Accès direct au registry de ClickHouse. Exécutez l’approbation sur la VM EC2 du connector. La commande
approvecomme la synchronisation de plateforme de l’executor assument le rôle ECR puller en lecture seule de votre environnement à l’aide des identifiants de l’instance metadata service EC2. Ce rôle assure la connexion au registry de charts ; l’executor s’en sert également pour vérifier l’existence des images de plateforme. Les profils AWS, les identifiants d’environnement ou les identifiants SSO présents sur un poste de travail ne remplacent pas le profil d’instance. Votre kubeconfig fournit toujours les identifiants cluster-admin distincts qui appliquent le volet permissions. - Charts dans un autre registry ECR, y compris votre propre mirror. La connexion au chart utilise les identifiants AWS ambiants du processus qui exécute
approveou l’executor. Ces identifiants doivent être autorisés à lire ce registry.
1
Recherchez le bundle préconfiguré
ClickHouse Cloud envoie d’abord chaque bundle proposé à l’executor. L’executor le met en attente en tant que bundle pending et signale son sha256 dans le heartbeat. Un seul bundle en attente existe à la fois ; une proposition plus récente le remplace. L’executor refuse alors la synchronisation et enregistre une commande failed dont le résultat se termine par la commande à exécuter.Le champ
result se termine par run: clctl platform approve (pending bundle sha <sha256>). Sur Kubernetes, l’indication est run: clctl platform approve --secret-namespace <connector-namespace> (pending bundle sha <sha256>). Une création ayant rencontré une définition de custom resource manquante comporte la même ligne clctl platform approve. Celle-ci apparaît dans sa propre commande échouée ainsi que dans l’erreur affichée par clicklink clctl instances create --wait. Votre account team vous prévient également lorsqu’une mise à jour de plateforme est proposée.Lisez le bundle mis en attente avant de l’approuver. Il contient le manifest et son sha256.- VM Linux
- Kubernetes
L’executor met le bundle en attente sous forme de fichier, à côté de ses ensembles d’accès sur l’hôte du connector :
2
Exécuter approve
approve sans flags lit le bundle mis en attente et le hache, de sorte que vous approuvez exactement ce que l’executor a reçu. La commande effectue le rendu de chaque chart exactement comme le fera l’executor et applique la moitié « permissions » avec le contexte kube que vous choisissez. Elle crée l’identité pcm-platform si nécessaire et génère son jeton. Elle n’émet aucune requête vers votre endpoint de connecteur.approve nécessite un contexte kube disposant des droits cluster-admin sur le cluster managé (--context <name> lorsque votre kubeconfig en contient plusieurs) ainsi que les identifiants de registry correspondant au mode de distribution d’images de votre environnement. --dry-run effectue le rendu et liste la moitié « permissions » sans rien appliquer ni générer ; un accès au registry reste nécessaire pour effectuer le rendu des charts.- VM Linux
- Kubernetes
Exécutez la commande sur l’hôte du connecteur, en tant que root, là où l’executor a mis le bundle en attente :
approve écrit le jeton dans /etc/clicklink/access/executor/_platform, à côté des autres credentials de l’executor. La commande construit le nouveau bundle à côté du bundle actif et ne le substitue qu’une fois son jeton créé : un approve en échec laisse donc intact un jeton encore valide.3
Confirmer
approve se termine par :Bundle written to Secret <namespace>/<name>; the executor pod sees it once the kubelet refreshes the mount, within about a minute.ClickHouse Cloud renvoie la synchronisation dès que le heartbeat suivant de l’executor signale l’approbation. Il patiente jusqu’à 20 minutes lorsqu’une synchronisation est déjà en cours et ignore tout executor dont le dernier heartbeat remonte à plus de 5 minutes. Après 3 tentatives pour un même bundle, il s’arrête et votre account team la relance. L’executor applique la partie charge de travail et signale la plateforme comme synced. Suivez l’aboutissement de la synchronisation avec :sync_platform la plus récente passe à l’état completed. L’executor transmet également le statut de la plateforme et les versions des composants à ClickHouse Cloud à chaque heartbeat, de sorte que votre account team constate le même résultat.La fenêtre d’approbation
Une approbation émet un jeton pour l’identitypcm-platform, valable 2 heures par défaut (--ttl permet de modifier cette durée). L’executor ne le renouvelle jamais. Une fois expiré, l’executor ne peut plus agir sur la couche plateforme et refuse la synchronisation de plateforme suivante en affichant de nouveau le message d’approbation. Il s’agit d’un comportement voulu, indépendant de la connectivité : une approbation accordée alors que le connector est hors ligne expire tout de même selon sa propre horloge.
Exécutez de nouveau approve dans les cas suivants :
- le jeton a expiré avant la fin de la synchronisation ;
- ClickHouse Cloud propose un bundle différent. Le sha256 que vous avez approuvé est enregistré sur le ServiceAccount
pcm-platform, et l’executor refuse toute synchronisation portant sur un autre bundle tant que vous ne l’avez pas approuvé ; - la création d’un service signale une définition de custom resource manquante.
Ce qu’accorde l’approbation
Vous appliquez le volet permissions : elle porte donc votre autorité ; l’executor n’en applique aucun élément.approve y appose le sha256 du bundle, et, avant de toucher à quoi que ce soit, l’executor vérifie que chaque objet de permission du bundle qui lui a été transmis est présent et approuvé.
L’executor applique le volet charge de travail en tant que pcm-platform. Cette identity peut créer et mettre à jour des Secrets, ConfigMaps, Services, Deployments, Jobs et PodDisruptionBudgets, uniquement au sein des namespaces de la plateforme, ce qu’impose une politique d’admission. Elle peut lire les objets dont elle a besoin pour son preflight (pods, events, namespaces, ServiceAccounts, les kinds de permission ci-dessus). Elle ne peut pas :
- écrire un kind à portée cluster ni un objet RBAC ;
- effectuer
escalate,bindouimpersonate; - émettre ni renouveler son propre jeton.
pcm-executor, est distincte et confinée aux namespaces des services. Elle ne peut pas écrire dans les namespaces de la plateforme ; ses reads, en revanche, ne sont pas limités par la protection par prefix. Pour l’énumération complète des deux identities, consultez le modèle de privilèges.
Réinitialiser un cluster de test
clicklink clctl platform reset est destinée aux clusters de test : cette commande désinstalle les composants de la plateforme afin de pouvoir rejouer leur première installation. Avant toute modification, elle liste les clusters ClickHouse présents dans les namespaces appartenant à ce connector et refuse de poursuivre si un service existe.
Sur un cluster vide, elle désinstalle les releases de la plateforme dans l’ordre inverse des dépendances. Elle supprime ensuite le bundle de jetons de plateforme de l’executor : le directory local sur une VM, ou le Secret désigné par --secret-namespace <connector-namespace> sur Kubernetes. Les CustomResourceDefinitions, le RBAC et la StorageClass restent en place. Exécutez de nouveau approve avant la prochaine synchronisation de la plateforme.
reset prend le manifeste de plateforme généré sous forme de fichier (--bundle) ; il ne lit pas le bundle préparé. --dry-run vérifie la présence de services et affiche le plan sans modifier le cluster.