Cet ensemble de tutoriels est destiné aux administrateurs et aux opérateurs informatiques qui souhaitent déployer, exécuter et gérer des environnements d'applications modernes exécutés sur l'édition Enterprise de Google Kubernetes Engine (GKE). Au fur et à mesure que vous progresserez dans cette série de tutoriels, vous allez apprendre à configurer la surveillance et les alertes, à effectuer le scaling des charges de travail et à simuler des défaillances, le tout en utilisant l'exemple d'application de microservices Cymbal Bank :
- Créer un cluster et déployer un exemple d'application
- Surveiller avec Google Cloud Managed Service pour Prometheus
- Effectuer le scaling des charges de travail
- Simuler une défaillance
- Centraliser la gestion des modifications (ce tutoriel)
Présentation et objectifs
Lorsque vous créez des services et des applications, vous pouvez tester les modifications dans différents environnements. À mesure que votre organisation grandit, vous pouvez avoir besoin de différentes configurations de cluster pour différentes équipes. Gérer plusieurs clusters avec des configurations différentes peut s'avérer difficile. Vous pouvez utiliser des outils GitOps tels que Config Sync pour vous aider à relever ces défis.
Dans le tutoriel Créer un cluster, vous avez créé un cluster et déployé l'application Cymbal Bank sur ce cluster.
Dans ce tutoriel, vous allez apprendre à stocker les fichiers manifestes Kubernetes de votre application dans un dépôt Git centralisé et à utiliser des outils tels que Config Sync pour déployer une application sur plusieurs clusters d'un parc. Vous allez apprendre à effectuer les tâches suivantes :
Créer un dépôt Git et le connecter à Cloud Build
Créer un cluster, l'enregistrer dans un parc et installer Config Sync sur votre parc de clusters.
Utiliser un package de parc pour déployer Cymbal Bank et d'autres ressources sur un cluster ou un parc
Coûts
L'activation de GKE Enterprise et le déploiement de l'exemple d'application Cymbal Bank pour cette série de tutoriels entraînent des frais par cluster pour GKE Enterprise sur Google Cloud, comme indiqué sur notre Page des tarifs, jusqu'à ce que vous désactiviez GKE Enterprise ou que vous supprimiez le projet.
Vous êtes également responsable des autres coûts Google Cloud engendrés par l'exécution de l'exemple d'application Cymbal Bank, tels que les frais pour les VM et les équilibreurs de charge Compute Engine.
Avant de commencer
Pour apprendre à stocker, à apporter des modifications et à déployer des ressources à partir d'un dépôt Git, vous devez suivre le premier tutoriel afin de créer un cluster GKE qui utilise le mode Autopilot et de déployer l'exemple d'application basée sur des microservices Cymbal Bank.
Nous vous recommandons de suivre cette série de tutoriels pour Cymbal Bank dans l'ordre. Au fil de votre progression dans les tutoriels, vous apprendrez de nouvelles compétences et utilisez d'autres produits et services Google Cloud.
Pour utiliser Config Sync afin de déployer des fichiers manifestes Kubernetes à partir d'un dépôt Git vers vos clusters, vous devez activer les API suivantes :
gcloud services enable configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com
Créer un dépôt Git et le connecter à Cloud Build
Un package de parc est un ensemble de fichiers manifestes de ressources Kubernetes. En regroupant ces fichiers manifestes en tant que package, vous pouvez déployer une application sur plusieurs clusters d'un parc directement à partir d'un dépôt Git. Ce workflow présente les avantages suivants :
- Amélioration de l'évolutivité en déployant des ressources sur un parc au lieu de les appliquer manuellement cluster par cluster.
- Mises à jour plus sécurisées grâce aux déploiements progressifs
- Workflows supplémentaires provenant de sources centralisées de fichiers de configuration dans Git, tels que le contrôle des versions et les approbations.
Pour montrer comment stocker et apporter des modifications dans Git, vous créez une duplication du dépôt Cymbal Bank et le connectez à Cloud Build.
Dupliquer le dépôt Cymbal Bank
Dans ce tutoriel, vous allez modifier votre dépôt Git pour montrer comment Config Sync vous aide à gérer en toute sécurité les modifications apportées aux ressources Kubernetes et à les déployer. Pour effectuer ces modifications directement, vous devez dupliquer le dépôt Git au lieu de le cloner.
Pour créer une duplication du dépôt, procédez comme suit :
Dans GitHub, accédez à l'exemple de dépôt Cymbal Bank (
bank-of-anthos
).Cliquez sur Dupliquer pour obtenir une copie du dépôt avec les fichiers sources.
Si nécessaire, connectez-vous à votre compte GitHub. Si vous avez accès à d'autres organisations ou équipes sur GitHub, assurez-vous de dupliquer le dépôt vers votre compte personnel.
Vous avez maintenant une copie du dépôt Cymbal Bank. Tous les fichiers manifestes Kubernetes que vous déployez se trouvent dans le dossier /kubernetes-manifests
.
Connecter le dépôt à Cloud Build
Cloud Build est un service qui peut exécuter des compilations sur Google Cloud, que vous pouvez utiliser pour la livraison continue de type GitOps. Le service de packages de parc de Config Sync utilise Cloud Build pour récupérer les ressources Kubernetes de votre dépôt Git et les déployer sur vos clusters. Lorsque vous utilisez un package de parc, vous ne devez configurer Cloud Build qu'une seule fois par dépôt que vous souhaitez synchroniser. L'API du package de parc crée automatiquement les déclencheurs de compilation via Cloud Build.
Connecter votre dépôt GitHub à Cloud Build :
Ouvrez la page Cloud Build dans la console Google Cloud, puis sélectionnez Dépôts.
Assurez-vous d'être sur la page Dépôts de la 2e génération. Si nécessaire, sélectionnez Afficher les dépôts (2e génération).
Cliquez sur Créer une connexion hôte.
Dans le menu Région, sélectionnez la région us-central1 (Iowa).
Dans le champ Nom, saisissez
cymbal-bank-connection
comme nom de connexion.Cliquez sur Se connecter.
Si vous associez Cloud Build à votre compte GitHub pour la première fois, procédez comme suit :
- Acceptez la requête pour votre jeton GitHub OAuth. Le jeton est stocké dans Secret Manager afin d'être utilisé avec la connexion GitHub Cloud Build. Cliquez sur Continuer.
- Installez Cloud Build dans votre dépôt GitHub. Sélectionnez Installer dans un nouveau compte.
- Dans la nouvelle fenêtre GitHub qui s'ouvre, sélectionnez le compte GitHub dans lequel vous avez créé la fourchette de Cymbal Bank précédemment. Dans un environnement de production, vous pouvez sélectionner d'autres comptes ou dépôts auxquels vous avez délégué un accès.
- Suivez les instructions d'authentification pour confirmer votre identité dans GitHub.
- Dans la fenêtre GitHub permettant d'accéder au dépôt Cloud Build, choisissez Sélectionner uniquement les dépôts.
- Dans le menu déroulant qui liste les dépôts, sélectionnez votre duplication de
bank-of-anthos
. - Cliquez sur Enregistrer.
Sur la page Cloud Build de la console Google Cloud, cliquez sur Associer le dépôt pour connecter un nouveau dépôt Git à Cloud Build.
Dans le menu Connexion, sélectionnez
cymbal-bank-connection
.Dans le menu Dépôts, sélectionnez votre duplication
bank-of-anthos
.Sélectionnez Associer.
Créer des clusters
Dans le premier tutoriel de cette série, vous avez créé un cluster et déployé l'application Cymbal Bank sur ce cluster. Dans un scénario réel, il est peu probable que vous n'ayez qu'un seul cluster à gérer. GKE vous permet de regrouper des clusters dans un parc : un groupe logique de clusters pouvant être gérés ensemble. Dans un parc, vous pouvez regrouper davantage vos clusters avec des clusters représentant différents environnements ou appartenant à différentes équipes. Par exemple, vous pouvez avoir un cluster de développement, un cluster de préproduction et un cluster de production. Dans une grande entreprise, chaque équipe peut avoir ses propres clusters pour différents environnements. En tant qu'administrateurs ou opérateurs informatiques, vous devrez peut-être gérer des dizaines de clusters.
Lorsque vous déployez des applications ou des ressources individuelles telles que des règles personnalisées sur l'ensemble de ces clusters, les fonctionnalités de GKE Enterprise telles que Config Sync peuvent vous aider à gérer ces déploiements à grande échelle.
Pour vous aider à déployer des ressources dans différents environnements ou sur un parc de clusters, vous devez créer un cluster et y déployer l'application Cymbal Bank :
Créez un cluster GKE qui simule un environnement de développement :
gcloud container clusters create-auto scalable-apps-dev \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Remplacez les éléments suivants :
PROJECT_ID
par l'ID généré automatiquement pour le projet que vous avez créé dans la section précédente. L'ID du projet est souvent différent du nom du projet. Par exemple, votre projet peut être scalable-apps, mais votre ID de projet peut être scalable-apps.REGION
par la région dans laquelle vous souhaitez créer votre cluster, par exempleus-central1
.
Les libellés sont des paires clé/valeur que vous pouvez ajouter aux ressources GKE pour les organiser. Pour les packages de parc, vous pouvez utiliser des libellés d'appartenance au parc pour personnaliser les clusters ciblés par le package de parc. Les autres types de libellés ne sont pas acceptés.
Ajoutez un libellé à l'appartenance au parc :
gcloud container fleet memberships update scalable-apps-dev \ --update-labels=env=dev
Lorsque vous créerez le package de parc plus loin dans ce tutoriel, ce libellé garantit que les ressources ne sont déployées que sur le cluster
scalable-apps-dev
et non sur le clusterscalable-apps
du premier tutoriel de cette série.
Installer Config Sync
Installez Config Sync sur les deux clusters :
- Dans la console Google Cloud, accédez à la page Configuration sous la section Fonctionnalités.
- Cliquez sur add Installer Config Sync.
- Laissez l'option Mises à jour manuelles sélectionnée.
- Par défaut, le menu des versions doit afficher la dernière version de Config Sync. Si nécessaire, sélectionnez la version la plus récente.
- Sous Options d'installation, sélectionnez Installer Config Sync sur l'ensemble du parc (recommandé).
- Cliquez sur Installer Config Sync.
- Dans l'onglet Paramètres de Config Sync, examinez le champ État de la liste des clusters. Après quelques minutes, l'état indique "En attente" jusqu'à ce que le cluster soit correctement configuré pour Config Sync. Le passage de l'état à Activé peut prendre jusqu'à 10 minutes.
Déployer Cymbal Bank
Dans le premier tutoriel de cette série, vous avez utilisé des commandes kubectl
pour appliquer les configurations de l'application à votre cluster. Dans ce tutoriel, vous allez utiliser la fonctionnalité de packages de parc de Config Sync pour déployer ces mêmes configurations sur un nouveau cluster. Dans une section ultérieure, vous verrez un exemple d'ajout d'une ressource à votre dépôt Git et de déploiement de ces ressources sur un parc de clusters.
Configurer un compte de service pour Cloud Build
Un compte de service est un type de compte spécial généralement utilisé par une application, plutôt que par une personne. Il est recommandé de créer des comptes de service pour un service ou une tâche spécifique, et de leur attribuer des rôles précis. Dans ce tutoriel, vous allez créer un compte de service pour accorder à Cloud Build les autorisations nécessaires pour extraire des ressources Kubernetes à partir de votre dépôt Git et les déployer sur vos clusters.
Pour créer le compte de service et accorder les autorisations requises, procédez comme suit :
Créez le compte de service :
gcloud iam service-accounts create "cymbal-bank-service-account"
Autorisez le compte de service à extraire des ressources à partir de votre dépôt Git en ajoutant une liaison de stratégie IAM pour le rôle "Éditeur de bundle de ressources" :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'
Si vous y êtes invité, sélectionnez
None
comme condition pour la règle.Accordez au compte de service l'autorisation d'écrire des journaux en ajoutant une liaison de stratégie IAM pour le rôle Rédacteur de journaux :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'
Si vous y êtes invité, sélectionnez
None
comme condition pour la règle.
Créer une version pour l'application Cymbal Bank
Un package de parc nécessite un tag de version sémantique pour savoir à partir de quelle version de votre dépôt le déployer. Il est recommandé de créer de nouvelles versions lorsque vous apportez des modifications à votre dépôt, car cela facilite le contrôle des versions et le rétablissement d'une version stable si nécessaire.
Dans une fenêtre de navigateur Web de votre duplication GitHub de Cymbal Bank, sous la section Versions de la barre latérale, cliquez sur Créer une version.
Sélectionnez le menu Choisir une balise, puis saisissez
v1.0.0
comme balise. Cliquez sur Créer un tag.Cliquez sur Publier la version.
Configurer l'authentification
Comme dans le premier tutoriel de cette série, vous devez créer un jeton JWT pour gérer l'authentification des utilisateurs et un secret Kubernetes pour stocker le jeton JWT du nouveau cluster que vous avez créé. Il est recommandé que chaque cluster dispose d'un jeton JWT unique pour l'authentification.
Dans Cloud Shell, créez le jeton JWT :
openssl genrsa -out jwtRS256.key 4096 openssl rsa -in jwtRS256.key -outform PEM -pubout -out jwtRS256.key.pub
Créez le secret Kubernetes :
kubectl create secret generic jwt-key --from-file=./jwtRS256.key --from-file=./jwtRS256.key.pub
Déployer l'application Cymbal Bank avec un package de parc
Une ressource FleetPackage
est une API déclarative permettant de déployer plusieurs fichiers manifestes Kubernetes sur un parc de clusters.
Pour créer un package de parc, vous devez définir une spécification FleetPackage
qui pointe vers le dépôt contenant les ressources Kubernetes que vous avez connectées à Cloud Build. Vous appliquez ensuite la ressource FleetPackage
, qui extrait les ressources de Git et les déploie dans le parc.
Dans Cloud Shell, définissez l'emplacement par défaut des commandes
configdelivery
de Google Cloud CLI. Comme pour connecter votre dépôt à Cloud Build, vous devez utiliserus-central1
tant que la fonctionnalité de packages de parc est en version Preview :gcloud config set config_delivery/location us-central1
Créez un fichier nommé
fleetpackage-spec.yaml
avec le contenu suivant :resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/cymbal-bank-connection/repositories/REPOSITORY_NAME tag: v1.0.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com path: kubernetes-manifests target: fleet: project: projects/PROJECT_ID selector: matchLabels: env: dev rolloutStrategy: rolling: maxConcurrent: 1
Remplacez
REPOSITORY_NAME
par le nom de votre dépôt, tel qu'il apparaît dans la connexion Cloud Build.Les champs du sélecteur correspondent au libellé d'appartenance au parc que vous avez créé précédemment. Cela garantit que l'application Cymbal Bank n'est déployée que sur le cluster
scalable-apps-dev
. Le clusterscalable-apps
du premier tutoriel n'est pas affecté. Dans la section suivante, vous trouverez un exemple de package de parc qui cible tous les clusters d'un parc.Le champ "Stratégie de déploiement" contrôle la manière dont les ressources sont déployées sur les clusters. Dans cet exemple, vous ne déployez que sur un seul cluster. Par conséquent, ce champ ne modifie pas le déploiement. Toutefois, si vous avez plusieurs clusters, ce paramètre garantit que les fichiers de ressources sont tous appliqués à un cluster avant de passer au cluster suivant. Cela vous permet de surveiller l'avancement du déploiement.
Créez le package de parc :
gcloud alpha container fleet packages create cymbal-bank-fleet-package \ --source=fleetpackage-spec.yaml \ --project=PROJECT_ID
Vérifiez que le package de parc a été créé :
gcloud alpha container fleet packages list
Le résultat affiche l'état du déclencheur de compilation. Après quelques secondes, le champ
MESSAGE
est mis à jour avec un résultat semblable à celui-ci :MESSAGES: Build status: WORKING. The release is still being built; see the build status on the following page:
Vous pouvez cliquer sur le lien fourni pour afficher les journaux de streaming de la tâche Cloud Build. Le traitement du déclencheur de compilation par Cloud Build peut prendre quelques minutes.
Une fois le déclencheur de compilation terminé, la sortie de
gcloud alpha container fleet packages list
ressemble à ceci :NAME: cymbal-bank-fleet-package STATE: ACTIVE CREATE_TIME: 2024-07-09T15:15:56 ACTIVE_ROLLOUT: rollout-20240709-153621 LAST_COMPLETED_ROLLOUT: MESSAGES:
Le package de parc commence à déployer les ressources Kubernetes sur l'ensemble de votre parc.
Sur la page Google Kubernetes Engine de la console Google Cloud, sélectionnez votre cluster
scalable-apps-dev
, puis accédez à la page Charges de travail pour afficher une vue agrégée des charges de travail déployées sur tous vos clusters GKE :Ouvrir la page "Charges de travail"
Vous pouvez rencontrer des erreurs pendant qu'Autopilot ajuste vos pods pour répondre aux demandes de ressources. Après quelques minutes, vos pods devraient commencer à s'exécuter avec l'état OK.
Pour afficher l'interface Web de Cymbal Bank, procédez comme suit :
Sur la page Google Kubernetes Engine de la console Google Cloud, accédez à la page Passerelles, services et Ingress.
Pour trouver l'entrée Cymbal Bank, cliquez sur l'onglet "Ingress" et recherchez l'entrée nommée
frontend
.Cliquez sur le lien Point de terminaison pour l'entrée
frontend
, par exemple198.51.100.143:80
, pour ouvrir l'interface Web de Cymbal Bank.
Déployer des ressources sur un parc
Imaginons que vous souhaitiez étendre votre application Cymbal Bank avec un nouveau microservice. Vous souhaitez déployer ce microservice sur tous vos clusters actuels et sur tous les futurs clusters ajoutés au parc. En utilisant un package de parc, vous pouvez déployer sur plusieurs clusters et obtenir un déploiement automatique sur les nouveaux clusters.
Ajouter des ressources à votre dépôt Git
Pour illustrer l'ajout d'un service à votre application, vous allez créer un déploiement nginx de base et l'ajouter à vos clusters :
Dans une fenêtre de navigateur Web de votre duplication GitHub de Cymbal Bank, cliquez sur Ajouter un fichier, puis sur Créer un fichier.
Nommez votre fichier
new-resource/nginx.yaml
et collez-y le contenu suivant :apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.2 name: nginx ports: - containerPort: 80
Cliquez sur Valider les modifications.
Dans la boîte de dialogue de confirmation, conservez l'option Effectuer un commit directement dans la branche
main
sélectionnée, puis cliquez sur Valider les modifications.Sur la page principale de votre dépôt Cymbal Bank dupliqué, sélectionnez Versions dans la barre latérale.
En haut de la page, sélectionnez Créer un brouillon de version.
Sélectionnez le menu Sélectionner un tag et saisissez
v1.1.0
comme tag. Cliquez sur Créer un tag.Cliquez sur Publier la version.
Déployer une ressource sur des clusters avec un package de parc
Pour déployer la nouvelle ressource, créez un package de parc :
Ce package de parc cible tous les clusters de votre parc, car il ne contient pas de champ de sélection. Cela signifie également que le déploiement nginx sera automatiquement ajouté pour tous les futurs clusters ajoutés au parc.
Dans Cloud Shell, créez un fichier nommé
new-deployment-fleet-package.yaml
et contenant ce qui suit :resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/cymbal-bank-connection/repositories/REPOSITORY_NAME tag: v1.1.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com path: kubernetes-manifests/new-resource target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1
Créez le package de parc pour lancer le déploiement :
gcloud alpha container fleet packages create new-deployment-fleet-package \ --source=new-deployment-fleet-package.yaml \ --project=PROJECT_ID
Vérifiez que le package de parc a été créé :
gcloud alpha container fleet packages list
Vous pouvez cliquer sur le lien fourni pour afficher les journaux de streaming de la tâche Cloud Build.
Le package de parc commence à déployer les ressources Kubernetes dans votre parc. Le déploiement peut prendre quelques minutes.
Sur la page Google Kubernetes Engine de la console Google Cloud, accédez à la page Charges de travail pour afficher une vue agrégée des charges de travail déployées sur l'ensemble de vos clusters GKE :
Vous pouvez continuer à explorer différentes stratégies de déploiement avec les packages de parc. Par exemple, vous pouvez essayer d'ajouter différents types de ressources à votre dépôt dupliqué et d'utiliser différentes configurations de packages de parc pour les déployer. Vous pouvez également utiliser un package de parc pour supprimer toutes les ressources que vous avez déployées dans vos clusters. Pour en savoir plus sur les packages de parc, consultez la section Déploiement des packages de parc dans la documentation Config Sync.
Supprimer des ressources dans un parc
De la même façon que vous pouvez déployer des ressources dans un parc, vous pouvez supprimer des ressources d'un parc avec un package de parc.
Pour supprimer des ressources individuelles, procédez comme suit :
- Supprimez la ressource de votre dépôt Git.
- Créez une version Git et créez un tag.
- Mettez à jour le champ
tag
du package de parc. - Exécutez la commande de mise à jour du package de parc.
Vous pouvez également supprimer le package de parc lui-même, ce qui supprime également toutes les ressources gérées par le package de parc.
Par exemple, si vous souhaitez supprimer le déploiement nginx de la section précédente, exécutez la commande suivante :
gcloud alpha container fleet packages delete new-deployment-fleet-package --force
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet que vous avez créé.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Pour supprimer votre dépôt dérivé, procédez comme suit :
Dans une fenêtre de navigateur Web de votre duplication GitHub de Cymbal Bank, sous le nom de votre dépôt, cliquez sur Paramètres.
Sur la page des paramètres généraux (qui est sélectionnée par défaut), accédez à la section "Zone de danger", puis cliquez sur Supprimer ce dépôt.
Cliquez sur Je souhaite supprimer ce dépôt.
Lisez les avertissements, puis cliquez sur J'ai lu et compris ces effets.
Pour vérifier que vous supprimez le bon dépôt, saisissez dans le champ de texte le nom du dépôt Cymbal Bank dupliqué.
Cliquez sur Supprimer ce dépôt .
Étape suivante
Avant de commencer à créer votre propre environnement de cluster GKE Enterprise semblable à celui que vous avez découvert dans cette série de tutoriels, examinez certaines considérations relatives à la production.