Cette page explique comment utiliser les packages de parc Config Sync pour déployer des ressources Kubernetes sur des clusters enregistrés dans un parc. Après avoir créé et déployé un package de parc, lorsque vous ajoutez un cluster à votre parc, le package de parc déploie automatiquement les fichiers de configuration Kubernetes du dépôt Git sur le nouveau cluster.
Un FleetPackage est une API déclarative permettant de déployer des fichiers manifestes bruts Kubernetes sur un
parc de clusters. Toutes les ressources Kubernetes que vous souhaitez déployer avec un package de parc doivent être
déjà hydratées (WET).
Avant de commencer
Créez un dépôt Git contenant les ressources Kubernetes que vous souhaitez déployer sur un parc ou assurez-vous d'y avoir accès.
Installez et initialisez Google Cloud CLI, qui fournit les commandes
gcloud, etnomos. Si vous utilisez Cloud Shell, Google Cloud CLI est préinstallé. Si vous avez déjà installé Google Cloud CLI, obtenez la dernière version en exécutantgcloud components update.Activez l'API Config Sync (
anthosconfigmanagement) et l'APIConfigDelivery:gcloud services enable anthosconfigmanagement.googleapis.com configdelivery.googleapis.comDéfinissez un emplacement par défaut :
gcloud config set config_delivery/location us-central1Définissez un projet par défaut :
gcloud config set project PROJECT_IDRemplacez
PROJECT_IDpar l'ID du projet hôte de parc.Assurez-vous que vos clusters sont enregistrés dans un parc.
Utilisez des dépôts Cloud Build pour créer une connexion à un fournisseur compatible tel que GitHub ou GitLab. Lorsque vous utilisez un package de parc, vous n'avez besoin de configurer Cloud Build qu'une seule fois par dépôt que vous souhaitez synchroniser.
Examiner la configuration requise pour les clusters
Avant d'installer Config Sync sur votre cluster, consultez les recommandations et exigences de configuration des clusters.
Préparer votre environnement
Pour préparer votre environnement aux packages de parc Config Sync, accordez les rôles IAM requis à l'utilisateur qui enregistre le cluster.
Installer Config Sync
Vous pouvez installer Config Sync avec la Google Cloud console ou Google Cloud CLI.
Console
Pour installer Config Sync, tous les clusters doivent être enregistrés dans un parc. Lorsque vous installez Config Sync dans la Google Cloud console, la sélection de clusters individuels enregistre automatiquement ces clusters dans votre parc.
- Dans la Google Cloud console, accédez à la page Config (Configuration) sous la section Features (Fonctionnalités).
Cliquez sur add Install Config Sync.
Sous Installation options (Options d'installation), sélectionnez Install Config Sync on entire fleet (recommended) (Installer Config Sync sur l'ensemble du parc (recommandé)).
Cliquez sur Install Config Sync (Installer Config Sync). Dans l'onglet Settings (Paramètres), après quelques minutes, Enabled (Activé) devrait s'afficher dans la colonne Status (État) pour les clusters de votre parc.
gcloud
Activez la fonctionnalité de parc
ConfigManagement:gcloud beta container fleet config-management enablePour activer Config Sync, créez un fichier nommé
apply-spec.yamlavec le contenu suivant :applySpecVersion: 1 spec: configSync: enabled: trueAppliquez le
apply-spec.yamlfichier :gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=apply-spec.yamlRemplacez
MEMBERSHIP_NAMEpar le nom d'appartenance au parc que vous avez choisi lors de l'enregistrement de votre cluster. Pour trouver le nom d'appartenance, exécutez lagcloud container fleet memberships listcommande.
Créer un compte de service pour Cloud Build
Les packages de parc utilisent Cloud Build pour extraire les ressources Kubernetes de votre dépôt Git et les déployer sur vos clusters. Cloud Build nécessite un compte de service disposant des autorisations nécessaires pour exécuter cette tâche. 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 "SERVICE_ACCOUNT_NAME"Remplacez
SERVICE_ACCOUNT_NAMEpar le nom que vous souhaitez donner au compte de service. Le nom doit être un ID alphanumérique de 6 à 30 caractères, par exemplemy-service-account. Une fois le compte de service créé, vous ne pouvez pas en modifier le nom.Ajoutez une liaison de stratégie IAM pour le rôle "Éditeur de groupe de ressources" :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'Si vous y êtes invité, sélectionnez
Nonecomme condition pour la stratégie.Ajoutez une liaison de stratégie IAM pour le rôle "Rédacteur de journaux" :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'Si vous y êtes invité, sélectionnez
Nonecomme condition pour la stratégie.Ajoutez une liaison de stratégie IAM pour le rôle Rédacteur Artifact Registry :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'Si vous y êtes invité, sélectionnez
Nonecomme condition pour la stratégie.
Créer un package de parc
Pour créer un package de parc, vous définissez une spécification FleetPackage qui pointe vers le
dépôt contenant vos ressources Kubernetes que vous avez connecté à
Cloud Build. Vous appliquez ensuite le FleetPackage, qui extrait les
ressources de Git et les déploie sur le parc.
Créez un fichier nommé
fleetpackage-spec.yamlavec le contenu suivant :resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/CONNECTION_NAME/repositories/REPOSITORY_NAME tag: TAG serviceAccount: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com path: CONFIG_FILE_PATH # Match all files and directories to generate variants variantsPattern: "*" target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERS variantSelector: variantNameTemplate: "VARIANT_NAME" # set the state to SUSPENDED to pause new rollouts # set the state back to ACTIVE to resume rollouts # state: SUSPENDEDRemplacez les éléments suivants :
CONNECTION_NAME: nom que vous avez choisi lorsque vous avez connecté votre hôte Git à Cloud Build. Vous pouvez afficher toutes les connexions Cloud Build de votre projet en exécutantgcloud builds connections listou en ouvrant la page Repositories (Dépôts) dans la Google Cloud console :REPOSITORY_NAME: nom de votre dépôt. Il doit être identique à la valeur saisie lors de la configuration de votre connexion Cloud Build.TAG: tag Git de votre dépôt. Le format doit être la version sémantique complète avec le numéro de version majeure, mineure et de correctif. Par exemple,v1.0.0est un tag valide, tandis quev1ouv1.0ne le sont pas.CONFIG_FILE_PATH: chemin d'accès à vos ressources Kubernetes dans le dépôt. Si vos fichiers se trouvent à la racine du dépôt, vous pouvez omettre ce champ.MAX_CLUSTERS: nombre maximal de clusters sur lesquels déployer des ressources Kubernetes en même temps. Par exemple, si vous définissez cette valeur sur1, les groupes de ressources sont déployés sur un cluster à la fois.VARIANT_NAME: variante à déployer sur vos clusters. Le nom doit correspondre à une variante de votre dépôt (nom de fichier sans extension ou nom de répertoire). Par exemple, si vous avez un fichier nomméprod.yaml, définissez ce champ surprod. Pour utiliser le comportement par défaut (par exemple, pour déployer la même configuration sur tous les clusters d'un parc), définissez ce champ surdefaultet assurez-vous que votre dépôt contient un fichier nommédefault.yaml.Pour obtenir la liste complète de tous les champs que vous pouvez configurer, consultez la
FleetPackagedocumentation de référence.
Créez le package de parc :
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlRemplacez
FLEET_PACKAGE_NAMEpar le nom de votre déploiement de package de parc.Vérifiez que le package de parc a été créé :
gcloud container fleet packages listLe résultat indique l'état du déclencheur de compilation. Après quelques secondes, le champ
MESSAGEest mis à jour avec un résultat semblable à ce qui suit :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.
Si le déclencheur de compilation réussit, le package de parc commence à déployer les ressources Kubernetes dans votre parc.
Une fois le déclencheur de compilation terminé, le résultat de
gcloud container fleet packages listest semblable à ce qui suit :NAME STATE CREATE_TIME ACTIVE_ROLLOUT LAST_COMPLETED_ROLLOUT MESSAGES my-fleet-package ACTIVE 2024-07-09T15:15:56 rollout-20240709-153621Le package de parc commence à déployer les ressources Kubernetes dans votre parc.
Maintenant que vous avez déployé un package de parc, lorsque vous ajoutez un cluster à votre parc, les ressources Kubernetes définies dans le package de parc sont automatiquement déployées sur le nouveau cluster.
Mettre à jour un package de parc
Vous pouvez mettre à jour un package de parc pour modifier des paramètres ou les ressources déployées par le package de parc, comme dans les exemples suivants :
- Modifiez la stratégie de déploiement en modifiant la valeur du champ
maxConcurrent. - Mettez en pause temporairement un package de parc en définissant
state: SUSPENDED. Lorsqu'un package de parc est suspendu, tous les déploiements en cours se poursuivent. Aucun nouveau déploiement n'est créé ni planifié tant que vous ne rétablissez pas l'étatACTIVE. - Mettez à jour les ressources Kubernetes déployées par le package de parc en modifiant
le
tagchamp pour extraire un autre tag Git.
Pour mettre à jour un package de parc, procédez comme suit :
Mettez à jour votre spécification
FleetPackageavec vos modifications.Mettez à jour le package de parc :
gcloud container fleet packages update FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlLa prise en compte de la modification et son déploiement sur vos clusters peuvent prendre quelques minutes.
Inspecter les groupes de ressources et les versions
Lorsque vous créez ou mettez à jour un package de parc en fonction de votre dépôt Git, l'
FleetPackages API crée automatiquement des ressources groupe de ressources et version. L'inspection de ces ressources est utile pour résoudre les problèmes, en particulier
si vous devez vérifier les variantes générées à partir de votre dépôt.
Pour inspecter les groupes de ressources et les versions, utilisez une ou plusieurs des commandes suivantes :
Affichez des informations détaillées sur un groupe de ressources spécifique :
gcloud container fleet packages resource-bundles describe flpkg-rb-FLEET_PACKAGE_NAMERépertoriez toutes les versions associées à un groupe de ressources :
gcloud container fleet packages resource-bundles releases list \ --resource-bundle flpkg-rb-FLEET_PACKAGE_NAMEAffichez des informations détaillées sur une version spécifique, y compris le groupe de ressources qu'elle utilise. Cette commande est particulièrement utile pour déboguer les problèmes liés aux variantes, car elle vous permet d'inspecter exactement les variantes incluses dans une version spécifique :
gcloud container fleet packages resource-bundles releases describe RELEASE_NAME\ --resource-bundle flpkg-rb-FLEET_PACKAGE_NAME
Remplacez les éléments suivants :
FLEET_PACKAGE_NAME: nom de votre package de parc. Le nom du groupe de ressources est automatiquement précédé deflpkg-rb-.RELEASE_NAME: nom de la version à partir du résultat de la commandelist.
Gérer les déploiements de packages de parc
Vous pouvez surveiller la progression des déploiements de packages de parc et gérer les déploiements actifs. Lorsqu'un package de parc est modifié, un nouveau déploiement est automatiquement créé. Les commandes suivantes vous aident à obtenir des informations détaillées sur les déploiements. Par exemple, si vous devez déboguer un problème de déploiement, vous pouvez examiner les détails du déploiement, et le mettre en pause ou l'annuler si nécessaire.
La liste des déploiements vous permet de voir l'état de tous les déploiements liés à un package, y compris les erreurs qui peuvent entraîner l'échec d'un déploiement. Pour lister les déploiements et afficher leur état, exécutez la commande suivante :
gcloud container fleet packages rollouts list --fleet-package FLEET_PACKAGE_NAMELe résultat se présente comme suit :
ROLLOUT RELEASE START_TIME END_TIME STATE MESSAGE rollout-20250515-132857 v2-0-0 2025-05-15T13:28:58Z STALLED rollout-20250418-165528 v1-0-0 2025-04-18T16:55:29Z 2025-04-18T16:57:47Z COMPLETEDLa description d'un déploiement vous fournit des informations détaillées sur un déploiement spécifique y compris l'état de chaque cluster cible et les erreurs spécifiques à un cluster. Pour décrire un déploiement, exécutez la commande suivante :
gcloud container fleet packages rollouts describe ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMERemplacez ROLLOUT_NAME par le nom de votre déploiement. Vous pouvez obtenir le nom complet du déploiement à partir de la commande
listde l'étape précédente.Le résultat se présente comme suit :
CLUSTER CURRENT_VERSION SYNC_STATE DESIRED_VERSION START_TIME END_TIME STATE MESSAGES cluster1 v2.0.0 SYNCED v2.0.0 2025-05-15T13:28:58Z 2025-05-15T13:30:27Z COMPLETED cluster2 v1.0.0 SYNCED v2.0.0 2025-05-15T13:30:27Z ERROR Membership no longer existsVous pouvez gérer les déploiements actifs en exécutant les commandes suivantes :
La suspension d'un déploiement met un déploiement en cours d'exécution à l'état
SUSPENDED. Toutes les mises à jour de packages en cours se poursuivent, et aucune autre mise à jour de packages n'est planifiée. Pour suspendre un déploiement, exécutez la commande suivante :gcloud container fleet packages rollouts suspend ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMELa reprise d'un déploiement rétablit l'état
IN_PROGRESSd'un déploiementSUSPENDED. Les mises à jour de packages sont déployées sur les clusters cibles comme prévu. Pour reprendre un déploiement, exécutez la commande suivante :gcloud container fleet packages rollouts resume ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMEL'annulation d'un déploiement en cours met immédiatement fin au déploiement et le met à l'état
ABORTED. Toutes les mises à jour de packages en attente prévues dans le cadre du déploiement sont annulées. Pour annuler un déploiement, exécutez la commande suivante :gcloud container fleet packages rollouts abort ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAME
Stratégies de déploiement
Vous pouvez déployer des ressources de différentes manières, soit en les déployant sur un sous-ensemble de clusters en spécifiant des libellés, soit en utilisant la correspondance de modèles de variantes pour déployer différentes ressources. Vous pouvez combiner les deux stratégies pour mieux contrôler les ressources déployées sur différents clusters.
Déployer sur un sous-ensemble de clusters
Vous pouvez déployer la même ressource sur un sous-ensemble de clusters à l'aide de libellés et
en spécifiant le champ target.fleet.selector.matchLabels avec vos libellés
(paire clé-valeur). Par exemple, si vous définissez matchLabels sur country: "us", le
service de package de parc déploie vos ressources uniquement sur les clusters dont le libellé
country correspond à "us".
Les packages de parc n'acceptent que les libellés d'appartenance au parc. Les libellés de cluster GKE ne sont pas acceptés.
(Facultatif) Si vous ne disposez pas encore des libellés que vous souhaitez utiliser, ajoutez-les en procédant comme suit :
Obtenez la liste des appartenances au parc :
gcloud container fleet memberships listAjoutez un libellé à l'appartenance :
gcloud container fleet memberships update MEMBERSHIP_NAME \ --update-labels=KEY=VALUERemplacez les éléments suivants :
MEMBERSHIP_NAME: nom du cluster enregistré dans le parc.KEYetVALUE: libellé à ajouter à l'appartenance. Si un libellé existe, sa valeur est modifiée. Sinon, un nouveau libellé est créé. Les clés doivent commencer par une lettre minuscule et ne contenir que des tirets (-), des traits de soulignement (_), des minuscules et des chiffres. Les valeurs ne doivent contenir que des tirets (-), des traits de soulignement (_), des minuscules et des chiffres.
Répétez cette commande pour chaque appartenance à laquelle vous souhaitez ajouter un libellé.
Créez ou mettez à jour votre spécification
FleetPackageavec le sélecteur de libellés :resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/CONNECTION_NAME/repositories/REPOSITORY_NAME tag: TAG serviceAccount: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com path: CONFIG_FILE_PATH target: fleet: project: projects/PROJECT_ID selector: matchLabels: KEY: "VALUE" rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERSCréez ou mettez à jour le package de parc :
Créer un package de parc
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlMettre à jour un package de parc
gcloud container fleet packages update FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yaml
Déployer des ressources de variante sur des clusters
Vous pouvez déployer des configurations uniques sur différents clusters (par exemple, dev par rapport à
prod) en ajoutant des définitions de variantes à votre package de parc.
Pour obtenir une présentation conceptuelle de la génération des variantes à partir de la structure de votre dépôt, consultez la section Génération des variantes.
Pour déployer un package de parc avec des variantes, procédez comme suit :
Créez ou mettez à jour votre
FleetPackagespécification pour inclure les champsvariantsPatternetvariantNameTemplate:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/CONNECTION_NAME/repositories/REPOSITORY_NAME tag: TAG serviceAccount: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com path: CONFIG_FILE_PATH variantsPattern: VARIANT_PATTERN target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERS target: fleet: project: projects/PROJECT_ID variantSelector: variantNameTemplate: VARIANT_NAME_TEMPLATERemplacez les éléments suivants :
VARIANT_PATTERN: modèle glob permettant de générer des variantes à partir de votre dépôt, tel que*(correspond à tous les fichiers et répertoires) ou*.yaml(correspond uniquement aux fichiers). Pour en savoir plus sur les modèles acceptés, consultez la section CorrespondancevariantsPatternmatching.VARIANT_NAME_TEMPLATE: chaîne ou modèle permettant de sélectionner une variante pour chaque cluster. Vous pouvez utiliser des variables de métadonnées telles que${membership.labels['env']}ou${membership.location}.
Créez ou mettez à jour le package de parc :
Créer un package de parc
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlMettre à jour un package de parc
gcloud container fleet packages update FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yaml
Supprimer un package de parc
La suppression d'un package de parc entraîne également la suppression des ressources suivantes :
- Les ressources Kubernetes déployées sur vos clusters
- L'historique de déploiement du package de parc
Pour supprimer un package de parc, exécutez la commande suivante :
gcloud container fleet packages delete FLEET_PACKAGE_NAME --force
Résoudre les problèmes
Pour connaître les méthodes de diagnostic et de résolution des erreurs liées à Cloud Build, consultez la section Résoudre les erreurs de compilation.
Étape suivante
- Consultez la page de référence des champs
FleetPackage