Rocket.Chat sur GKE Autopilot — Guide de lab
Vue d'ensemble
Durée estimée : 45–90 minutes
Rocket.Chat est une plateforme open source et auto-hébergée de communication d'équipe — une alternative à Slack/Teams avec canaux, messages directs, fils de discussion et voix/vidéo. Ce lab vous fait parcourir tout le cycle de vie opérationnel du module Rocket.Chat on GKE Autopilot sur Google Cloud : le déployer, terminer l'assistant de configuration du premier lancement, l'exploiter au quotidien, l'observer, diagnostiquer les problèmes courants et le démanteler.
Le lab porte sur l'exploitation du module GKE et de la plateforme Google Cloud, et non sur les fonctionnalités de Rocket.Chat. Pour la liste complète des services provisionnés et de chaque paramètre de configuration (organisés par groupe), consultez le Guide de configuration — ce lab ne duplique volontairement pas ce détail afin de rester exact dans le temps.
Objectifs
À la fin de ce lab, vous saurez :
- Déployer le module depuis la plateforme RAD et repérer les ressources qu'il provisionne.
- Vous connecter au cluster GKE et terminer l'assistant de configuration (administrateur + organisation).
- Effectuer les opérations du jour 2 — inspecter le StatefulSet/PVC, mettre à jour et gérer les sauvegardes.
- Observer la charge de travail avec Cloud Logging et Cloud Monitoring.
- Diagnostiquer et résoudre les problèmes de déploiement et d'exécution les plus courants.
- Démanteler proprement le déploiement.
Prérequis
- Services_GCP (fournit le VPC, le cluster GKE Autopilot, Artifact Registry et les comptes de service partagés dont dépend ce module). Vous n'avez pas besoin de le déployer vous-même au préalable — la plateforme détecte automatiquement s'il existe déjà dans le projet cible et, sinon, le provisionne avant ce module (voir la tâche 1).
- Un projet Google Cloud avec la facturation activée.
- gcloud CLI et kubectl installés ;
gcloud auth loginetgcloud auth application-default loginexécutés. - Le rôle IAM Project Owner (ou équivalent) sur le projet.
- Vous apportez votre propre projet ? Avant le premier déploiement dans celui-ci, la boîte de dialogue de confirmation du déploiement vous demande de prouver que vous le contrôlez (Get verification code, exécutez les commandes qu'elle affiche en tant que Owner du projet, puis Verify) et d'accorder le rôle Owner au compte de service de déploiement RAD. Un projet que RAD crée pour vous ne requiert ni l'un ni l'autre.
- Le mode avancé pour les modifications ultérieures. Le formulaire de création ne demande que la première page de paramètres (et, dans un projet que RAD crée pour vous, guère plus que le nom du tenant et la région). Tous les autres paramètres du Guide de configuration — y compris les paramètres de mise à l'échelle et de version des tâches du jour 2 — se modifient ensuite avec Update sur la page du déploiement après avoir coché Enable advanced mode, ce qui exige un solde de crédits couvrant le coût de build estimé de la mise à jour (les mises à jour n'entraînent jamais de frais de module). Dans un environnement de lab, seul un administrateur peut utiliser le mode avancé.
- Un accès à la plateforme RAD avec l'autorisation de déployer des modules dans le projet.
Définissez une fois ces variables shell ; chaque tâche ci-dessous les réutilise :
export PROJECT="<your-gcp-project-id>"
export REGION="us-central1" # the region you deploy into
Tâche 1 — Déployer le module [Automatisé]
-
Ouvrez Solutions → Solution Catalog → RAD modules dans la navigation supérieure de la plateforme RAD, ouvrez RocketChat (GKE) dans la liste Platform Modules pour commencer la configuration, choisissez Configuration Form sous How would you like to configure this deployment? (le formulaire s'ouvre sur le Conversational Assistant si vous détenez des crédits achetés ou si vous êtes partenaire ou administrateur), renseignez
project_idet passez en revue les paramètres. Vérifiez questateful_pvc_enabled = true— MongoDB exige un véritable système de fichiers en mode bloc ;gcsfusecorrompt WiredTiger. Ne configurez que ce dont vous avez besoin par ailleurs — le Guide de configuration documente chaque paramètre par groupe, avec ses valeurs par défaut. Cliquez sur Deploy Module, vérifiez le coût estimé dans la boîte de dialogue Deployment Confirmation lorsqu'elle apparaît et cliquez sur Submit (si la boîte de dialogue ajoute ensuite une étape de confirmation, comme la vérification d'un projet que vous apportez, effectuez-la et cliquez sur Confirm), ce qui ouvre la page d'état du déploiement avec les journaux en temps réel. -
La plateforme construit une image de conteneur personnalisée — l'image officielle
rocketchat/rocket.chatavec un replica set MongoDB 6.0 à nœud unique (rs0) intégré — provisionne un StatefulSet avec un PVC Persistent Disk monté sur/data/db, et déploie la charge de travail dans le cluster GKE Autopilot. Il n'y a aucune instance Cloud SQL ; MongoDB est intégré. Le build de l'image représente l'essentiel du temps du premier déploiement, environ 15 à 25 minutes. -
Connectez-vous au cluster et identifiez l'espace de noms avec des filtres indépendants des noms :
CLUSTER=$(gcloud container clusters list --project="$PROJECT" --format="value(name)" --limit=1)
gcloud container clusters get-credentials "$CLUSTER" --region="$REGION" --project="$PROJECT"
NS=$(kubectl get ns -o name | grep rocketchat | head -1 | cut -d/ -f2)
echo "Cluster: $CLUSTER Namespace: $NS"
kubectl get all,pvc -n "$NS"
Tâche 2 — Accéder et terminer l'assistant de configuration [Manuel]
-
Vérifiez que la charge de travail est en cours d'exécution et que le PVC est lié :
kubectl get statefulset,pods,pvc,svc -n "$NS" -
Le Service est de type LoadBalancer par défaut (Rocket.Chat est une application de chat exposée publiquement), avec une IP statique réservée afin que l'adresse survive aux redéploiements. Trouvez l'IP externe et vérifiez que l'API répond :
EXTERNAL_IP=$(kubectl get svc -n "$NS" \
-o jsonpath='{.items[?(@.spec.type=="LoadBalancer")].status.loadBalancer.ingress[0].ip}')
echo "External IP: $EXTERNAL_IP"
curl -s "http://${EXTERNAL_IP}/api/info" # expect {"version":"6.12.1","success":true,...}S'il n'est pas encore prêt (
EXTERNAL_IPvide ou aucune réponse), vérifiez que le MongoDB intégré est bien devenu PRIMARY au démarrage :kubectl logs -n "$NS" statefulset/"$(kubectl get statefulset -n "$NS" -o jsonpath='{.items[0].metadata.name}')" \
| grep -i "replica set rs0 is PRIMARY" -
Ouvrez
http://${EXTERNAL_IP}dans un navigateur. Lors de la première visite, Rocket.Chat lance l'assistant de configuration en 4 étapes — aucun identifiant administrateur n'est pré-créé :- Étape 1 — Admin Info : nom complet, nom d'utilisateur, e-mail de l'administrateur
(utilisez
admin@techequity.cloudpour les déploiements RAD), mot de passe. - Étape 2 — Organization Info : nom, type, secteur, taille et pays de l'organisation.
- Étape 3 — Register Server : Register auprès de Rocket.Chat Cloud ou Keep standalone.
- Étape 4 — Complete : vous arrivez dans l'espace de travail administrateur.
- Étape 1 — Admin Info : nom complet, nom d'utilisateur, e-mail de l'administrateur
(utilisez
-
(Facultatif) Lorsque vous exposez Rocket.Chat sur un domaine personnalisé, définissez
ROOT_URLsur ce nom d'hôte viaenvironment_variableset appliquez un Update.
Tâche 3 — Exploiter et maintenir en service (jour 2) [Manuel]
-
Inspectez la charge de travail — le StatefulSet, le pod et le PVC :
kubectl get statefulset,pods,pvc -n "$NS"
kubectl describe statefulset -n "$NS" -
Ne dépassez pas un réplica. Le PVC est en
ReadWriteOnceet le MongoDB intégré n'a qu'un seul écrivain —min_instance_countetmax_instance_countvalent tous deux1par conception. Un second réplica ne peut pas s'attacher au disque. Mettez à l'échelle verticalement (davantage de CPU/mémoire, un PVC plus grand ou enpremium-rwo) en modifiant les paramètres et en cliquant sur Update. -
Mettez à jour la version de l'application en modifiant le paramètre de version dans la plateforme RAD et en l'appliquant via Update ; une nouvelle image est construite et le pod unique est recréé (brève interruption pendant que le PVC est rattaché). Rocket.Chat exécute ses propres migrations au démarrage.
-
Gérez le jeton d'API, le stockage et les jobs :
kubectl get secrets -n "$NS"
gcloud secrets list --project="$PROJECT" --filter="name~api-key" # when enable_api_key = true
kubectl get cronjobs -n "$NS" # scheduled mongodump backups -
Sauvegardez MongoDB en exécutant un
mongodumpdans le pod contre le replica set et en copiant le dump dans le bucket de stockage (voircron_jobsdans le Guide de configuration).
Tâche 4 — Observer : journalisation et surveillance [Manuel]
-
Journaux — Rocket.Chat et le
mongodintégré écrivent tous deux sur stdout :kubectl logs -n "$NS" statefulset/"$(kubectl get statefulset -n "$NS" -o jsonpath='{.items[0].metadata.name}')" --tail=50Filtre du Logs Explorer :
resource.type="k8s_container" AND resource.labels.namespace_name="<namespace>". -
Surveillance — ouvrez les tableaux de bord GKE / Kubernetes et examinez l'utilisation CPU et mémoire des pods, le nombre de redémarrages et l'utilisation du PVC. Le module peut provisionner un test de disponibilité sur
/api/info(lorsqu'il est activé) ; consultez Monitoring → Uptime checks et Alerting → Policies.
Tâche 5 — Dépanner et déboguer [Manuel]
Des techniques durables pour les modes de défaillance que vous rencontrerez le plus probablement. Il s'agit de diagnostics au niveau de la plateforme, qui ne changent pas avec les versions de Rocket.Chat.
- Pod non Ready / CrashLoopBackOff : examinez les événements et les journaux. La sonde de démarrage
cible
/api/info; le pod n'est pas Ready tant que le replica set intégré n'est pasPRIMARY.kubectl describe pod -n "$NS" <pod> # Events: scheduling / probe / mount errors
kubectl logs -n "$NS" <pod> --previous # logs from the crashed container /api/infone renvoie jamais 200 : recherchezreplica set rs0 is PRIMARYavec grep. Si MongoDB ne devient jamais PRIMARY, vérifiez que le PVC est lié et monté sur/data/dbet que le pod n'est pas tué pour dépassement de mémoire (OOM) (augmentezmemory_limit).- Corruption des données après un redémarrage : vérifiez que
stateful_pvc_enabled = trueet que/data/dbse trouve sur le PVC — un montagegcsfusecorrompt WiredTiger et constitue la cause classique d'un jeu de données endommagé. - Pod en attente / PVC non lié : consultez les événements de
kubectl describe pvcetkubectl describe podpour repérer des problèmes de classe de stockage ou de quota. - Erreurs de récupération d'image : vérifiez que l'image existe dans Artifact Registry et que le compte de service des nœuds peut la récupérer (MongoDB 6.0 doit être installé depuis le dépôt bullseye au moment du build).
Consultez la section Configuration Pitfalls du Guide de configuration pour les pièges propres
à chaque paramètre (notamment conserver stateful_pvc_enabled = true et stateful_pvc_mount_path = "/data/db", et ne jamais dépasser un réplica).
Tâche 6 — Démanteler [Automatisé]
Sur la page Deployments, ouvrez le déploiement et cliquez sur l'icône Trash (Delete). La suppression exécute terraform destroy et est irréversible (l'enregistrement du déploiement est conservé pour l'historique). Si un déploiement est bloqué et que la plateforme RAD ne peut plus le gérer (par exemple après des modifications manuelles en conflit avec l'état Terraform), utilisez plutôt Purge (depuis la même boîte de dialogue Delete) — cette action retire le déploiement des enregistrements de RAD sans détruire les ressources cloud (RAD oublie le déploiement). La suppression retire tout ce que le module a créé — le StatefulSet Kubernetes
et l'espace de noms, le PVC Persistent Disk contenant les données MongoDB, le bucket Cloud
Storage, l'éventuel jeton d'API Secret Manager et les images d'Artifact Registry. Les ressources appartenant à
Services_GCP (le VPC, le cluster GKE, le registre) sont gérées séparément et ne sont pas
supprimées ici.
Récapitulatif
| Tâche | Type | Résultat |
|---|---|---|
| 1 — Déployer | Automatisé | Le module construit l'image (Rocket.Chat + MongoDB intégré), provisionne un StatefulSet + un PVC bloc et déploie sur GKE |
| 2 — Accès et assistant de configuration | Manuel | Se connecter au cluster ; le contrôle d'état réussit ; terminer l'assistant en 4 étapes (administrateur + organisation) |
| 3 — Exploiter | Manuel | Inspecter le StatefulSet/PVC, mettre à jour la version, gérer le jeton d'API/les sauvegardes ; ne jamais mettre à l'échelle horizontalement |
| 4 — Observer | Manuel | Interroger Cloud Logging ; examiner les métriques Cloud Monitoring et le test de disponibilité |
| 5 — Dépanner | Manuel | Diagnostiquer les problèmes de pod, de replica set, de PVC/stockage, de planification et de récupération d'image |
| 6 — Démanteler | Automatisé | La suppression (Trash) retire toutes les ressources du module |
Need RAD to do something it does not do yet? Request it on the roadmap, or vote on what is already there.