Déployer des ressources dans un parc

Ce tutoriel vous explique comment utiliser un package de parc pour déployer des fichiers manifestes de ressources Kubernetes sur un parc de clusters. L'utilisation d'outils GitOps tels que les packages de parc de Config Sync peut vous aider à faire évoluer la gestion de la configuration sur un grand nombre de clusters.

Dans ce tutoriel, vous allez accomplir les tâches suivantes :

  • Connecter un dépôt Git à Cloud Build
  • Créer des clusters et les enregistrer dans un parc
  • Installer Config Sync comme valeur par défaut du parc
  • Déployer des ressources de votre dépôt sur votre parc de clusters

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  2. Installez la Google Cloud CLI.

  3. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. Créez ou sélectionnez un projet Google Cloud .

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
    • Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un projet Google Cloud  :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud .

  6. Vérifiez que la facturation est activée pour votre projet Google Cloud .

  7. Activez les API GKE, Config Delivery (packages de parc), Cloud Build et Developer Connect :

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    gcloud services enable container.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  8. Installez la Google Cloud CLI.

  9. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  10. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  11. Créez ou sélectionnez un projet Google Cloud .

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
    • Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un projet Google Cloud  :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud .

  12. Vérifiez que la facturation est activée pour votre projet Google Cloud .

  13. Activez les API GKE, Config Delivery (packages de parc), Cloud Build et Developer Connect :

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    gcloud services enable container.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  14. Créer un compte GitHub ou y avoir accès

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

Pour obtenir une estimation des coûts en fonction de votre utilisation prévue, utilisez le simulateur de coût.

Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai sans frais.

Se connecter à Git

Votre dépôt Git contient les ressources que vous souhaitez déployer sur un parc. Pour déployer ces ressources avec un package de parc, vous devez connecter votre dépôt Git à Cloud Build.

Créer votre dépôt Git

Ce tutoriel utilise GitHub comme fournisseur Git. Pour créer un dépôt GitHub, procédez comme suit :

  1. Dans votre navigateur Web, ouvrez GitHub.

  2. Si nécessaire, connectez-vous à votre compte GitHub. Si vous avez accès à d'autres organisations ou équipes sur GitHub, assurez-vous de créer le dépôt avec votre compte personnel.

  3. Dans la barre d'outils, sélectionnez Ajouter , puis cliquez sur Nouveau dépôt.

  4. Saisissez fleet-package-tutorial comme nom du dépôt.

  5. Laissez la visibilité du dépôt sur Public.

  6. Sélectionnez Créer un dépôt.

Connecter le dépôt à Cloud Build

Le service de package de parc Config Sync utilise Cloud Build pour synchroniser et extraire les ressources Kubernetes de votre dépôt Git.

Pour connecter votre dépôt GitHub à Cloud Build, procédez comme suit :

  1. Ouvrez la page Cloud Build dans la console Google Cloud , puis sélectionnez Dépôts.

    Ouvrir la page "Dépôts"

  2. Assurez-vous d'être sur la page Dépôts de la deuxième génération. Si nécessaire, sélectionnez Afficher les dépôts (2e génération).

  3. Cliquez sur Créer une connexion hôte.

  4. Dans le menu Région, sélectionnez us-central1 (Iowa) comme région.

  5. Dans le champ Nom, saisissez fleet-package-quickstart-connection comme nom de connexion.

  6. Cliquez sur Se connecter.

  7. Si c'est la première fois que vous connectez Cloud Build à votre compte GitHub, procédez comme suit :

    1. Acceptez la demande de jeton OAuth GitHub. Le jeton est stocké dans Secret Manager pour être utilisé avec la connexion GitHub Cloud Build. Cliquez sur Continuer.
    2. Installez Cloud Build dans votre dépôt GitHub. Sélectionnez Installer dans un nouveau compte.
    3. Dans la nouvelle fenêtre GitHub qui s'ouvre, sélectionnez le compte GitHub dans lequel vous avez créé la duplication 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é l'accès.
    4. Suivez les instructions d'authentification pour confirmer votre identité dans GitHub.
    5. Dans la fenêtre GitHub pour l'accès au dépôt Cloud Build, sélectionnez Uniquement certains dépôts.
    6. Dans le menu déroulant qui liste les dépôts, sélectionnez votre dépôt fleet-package-tutorial.
    7. Cliquez sur Enregistrer.
  8. Sur la page Cloud Build de la console Google Cloud , cliquez sur Associer un dépôt pour connecter un nouveau dépôt Git à Cloud Build.

  9. Dans le menu Connexion, sélectionnez fleet-package-quickstart-connection.

  10. Dans le menu Dépôts, sélectionnez votre dépôt fleet-package-tutorial.

  11. Sélectionnez Associer.

Configurer votre parc

Dans cette section, vous allez configurer votre parc en créant des clusters, en les enregistrant dans un parc et en installant Config Sync en tant que package de parc.

Créer des clusters

Pour vous montrer comment utiliser les packages de parc pour déployer des ressources sur plusieurs clusters, ce tutoriel vous explique comment créer deux clusters.

Pour créer les deux clusters et les enregistrer dans le parc de votre projet :

  1. Créez un cluster GKE :

    gcloud container clusters create-auto cluster1 \
      --project=PROJECT_ID \
      --region=REGION \
      --fleet-project=PROJECT_ID \
      --release-channel=rapid
    

    Remplacez les éléments suivants :

    • PROJECT_ID par l'ID de votre projet.
    • REGION par la région dans laquelle vous souhaitez créer votre cluster, par exemple us-central1.
  2. Créez un deuxième cluster GKE :

    gcloud container clusters create-auto cluster2 \
      --project=PROJECT_ID \
      --region=REGION \
      --fleet-project=PROJECT_ID \
      --release-channel=rapid
    

Installer Config Sync comme valeur par défaut du parc

Pour utiliser le service de package de parc, Config Sync doit être installé sur les deux clusters. Vous pouvez installer Config Sync sur plusieurs clusters à la fois, ainsi que sur tous les futurs clusters enregistrés dans le parc, en procédant comme suit :

  1. Dans la console Google Cloud , accédez à la page Gestionnaire de fonctionnalités.

    Accéder au gestionnaire de fonctionnalités

  2. Dans le volet Config Sync, cliquez sur Configurer.

  3. Cliquez sur Personnaliser les paramètres du parc. Dans la boîte de dialogue qui s'affiche, sélectionnez la version de Config Sync à installer.

  4. Cliquez sur Configurer.

  5. Dans la boîte de dialogue de confirmation Configurer les paramètres du parc, cliquez sur Confirmer. Si vous n'avez pas encore activé Config Sync, cliquez sur Confirmer pour activer également l'API anthosconfigmanagement.googleapis.com.

  6. Dans le tableau Clusters du parc, sélectionnez les deux clusters, puis cliquez sur Synchroniser avec les paramètres du parc. Cette commande installe Config Sync sur vos deux clusters avec les paramètres que vous avez configurés.

    La synchronisation des clusters peut prendre quelques minutes. Vous pouvez passer aux étapes suivantes lorsque Config Sync affiche l'état Installed (Installé).

Configurer un compte de service pour Cloud Build

Pour créer le compte de service et accorder les autorisations requises à Cloud Build, procédez comme suit :

  1. Créez le compte de service :

    gcloud iam service-accounts create "quickstart-service-account"
    
  2. Accordez au compte de service l'autorisation d'extraire des ressources de votre dépôt Git en ajoutant une liaison de stratégie IAM pour le rôle "Éditeur de bundles de ressources" :

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:quickstart-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.

  3. 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:quickstart-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.

  4. 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:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \
       --role='roles/artifactregistry.writer'
    

    Si vous y êtes invité, sélectionnez None comme condition pour la règle.

Déployer des ressources dans votre parc

Dans ce tutoriel, vous allez ajouter un fichier manifeste Kubernetes avec un déploiement nginx à votre dépôt Git, publier une version, puis créer un package de parc pour déployer l'application nginx.

Valider un fichier manifeste Kubernetes dans votre dépôt

Pour ajouter vos ressources à GitHub et publier une version, procédez comme suit :

  1. Dans une fenêtre de navigateur Web de votre dépôt GitHub, cliquez sur Ajouter un fichier, puis sur Créer un fichier.

  2. Nommez votre fichier deployment.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
    
  3. Cliquez sur Valider les modifications.

  4. Dans la boîte de dialogue de confirmation, laissez l'option Effectuer le commit directement dans la branche main sélectionnée, puis cliquez sur Effectuer le commit des modifications.

  5. Sur la page principale de votre dépôt, sélectionnez Versions dans la barre latérale.

  6. En haut de la page, sélectionnez Rédiger une release.

  7. Sélectionnez le menu Choisir une balise, puis saisissez v1.0.0 comme balise. Cliquez sur Créer un tag.

  8. 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 :

  1. Ce package de parc cible tous les clusters de votre parc, car il ne définit pas de sélecteur de cluster (dans la section target.fleet). Il est configuré pour déployer la variante de déploiement (dérivée de votre fichier deployment.yaml) sur tous ces clusters.

    Dans Cloud Shell, créez un fichier nommé fleet-package.yaml avec le contenu suivant :

    resourceBundleSelector:
      cloudBuildRepository:
        name: projects/PROJECT_ID/locations/us-central1/connections/fleet-package-quickstart-connection/repositories/REPOSITORY_NAME
        tag: v1.0.0
        serviceAccount: projects/PROJECT_ID/serviceAccounts/quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com
        path:
        # Match all files (including deployment.yaml) to generate variants
        variantsPattern: "*.yaml"
    target:
      fleet:
        project: projects/PROJECT_ID
    rolloutStrategy:
      rolling:
        maxConcurrent: 1
    variantSelector:
      # Explicitly match the variant generated from "deployment.yaml"
      variantNameTemplate: "deployment"
    

    Remplacez REPOSITORY_NAME par le nom du dépôt de Cloud Build. Il est généralement au format USERNAME-REPOSITORY_NAME.

  2. Créez le package de parc pour lancer le déploiement :

    gcloud container fleet packages create fp-nginx \
       --source=fleet-package.yaml \
       --project=PROJECT_ID
    
  3. Vérifiez que le package de parc a été créé :

    gcloud container fleet packages list
    

    Vous pouvez cliquer sur le lien fourni pour afficher les journaux de flux de la tâche Cloud Build.

    Le package de parc commence à déployer les ressources Kubernetes dans votre parc.

  4. 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 tous vos clusters GKE :

    Ouvrir la page "Charges de travail"

    L'affichage des charges de travail peut prendre quelques minutes. Vous pouvez également remarquer des erreurs de disponibilité pendant qu'Autopilot ajuste vos demandes de ressources pour le nouveau déploiement.

    Notez que, comme maxConcurrent: est défini sur 1 dans la définition de votre package de parc, l'API Fleet Package attend que nginx-deployment soit entièrement déployé sur un cluster avant de commencer le déploiement sur le deuxième cluster. Si vous avez défini la stratégie de déploiement sur maxConcurrent: 2 ou plus, les ressources seront déployées simultanément sur les deux clusters.

    Au bout de quelques minutes, deux nouvelles charges de travail pour nginx-deployment s'affichent sur vos deux clusters. Vous devrez peut-être actualiser la page.

Vous pouvez continuer à explorer différentes stratégies de déploiement avec les packages de parc. Par exemple, vous pouvez ajouter un cluster à votre parc pour observer que votre charge de travail est automatiquement déployée sur ce nouveau cluster. Pour en savoir plus sur les stratégies et les variantes de déploiement, consultez Déployer des packages de parc.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , supprimez le projet Google Cloud qui les contient.

  1. Dans la console Google Cloud , accédez à la page Gérer les ressources.

    Accéder à la page "Gérer les ressources"

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Pour supprimer votre dépôt, procédez comme suit :

  1. Dans une fenêtre de navigateur Web de votre dépôt GitHub, sous le nom de votre dépôt, cliquez sur Settings (Paramètres).

  2. Sur la page des paramètres généraux (sélectionnée par défaut), accédez à la section "Zone de danger", puis cliquez sur Supprimer ce dépôt.

  3. Cliquez sur Je souhaite supprimer ce dépôt.

  4. Lisez les avertissements, puis cliquez sur J'ai lu et compris ces effets.

  5. Pour vérifier que vous supprimez le bon dépôt, saisissez son nom dans le champ de texte.

  6. Cliquez sur Supprimer ce dépôt .

Étapes suivantes