Déployer des ressources dans un parc

Ce tutoriel vous explique comment utiliser un paquet 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 et enregistrer des clusters dans un parc
  • Installer Config Sync comme valeur par défaut pour le parc
  • Déployer des ressources de votre dépôt dans votre parc de clusters

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.

    For more information, see Browser-based sign-in with the gcloud CLI.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:

    gcloud services enable anthos.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  8. Install the Google Cloud CLI.
  9. To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.

    For more information, see Browser-based sign-in with the gcloud CLI.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:

    gcloud services enable anthos.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 :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Se connecter à Git

Votre dépôt Git contient les ressources que vous souhaitez déployer dans une flotte. 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 flotte de Config Sync utilise Cloud Build pour synchroniser et extraire les ressources Kubernetes à partir 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 2e génération. Si nécessaire, sélectionnez Afficher les dépôts (2e génération).

  3. Cliquez sur Créer une connexion d'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 votre connexion.

  6. Cliquez sur Se connecter.

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

    1. Acceptez la demande de votre jeton OAuth GitHub. Le jeton est stocké dans Secret Manager afin d'ê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 Sélectionner uniquement les 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 associer 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 des 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 votre ID de 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 pour le 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 Mises à niveau automatiques. Ce paramètre garantit que vos clusters disposent d'une version de Config Sync compatible avec les packages de parc.

  4. Cliquez sur Enregistrer les modifications.

  5. Cliquez sur Configurer.

  6. 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, en cliquant sur Confirm (Confirmer), vous activez également l'API anthosconfigmanagement.googleapis.com.

  7. Dans le tableau Clusters du parc, sélectionnez les deux clusters, puis cliquez sur Synchroniser avec les paramètres du parc. Config Sync est ainsi installé 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 indique 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 de récupérer des ressources à partir 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.

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 la case Commit directly to the main branch (Effectuer un commit directement dans la branche main) sélectionnée, puis cliquez sur Commit changes (Effectuer un commit).

  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 Créer un brouillon de version.

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

  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 contient pas de champ de sélecteur. Cela signifie également que le déploiement nginx sera automatiquement ajouté à tous les futurs clusters ajoutés au parc.

    Dans Cloud Shell, créez un fichier nommé fleet-package.yaml et contenant 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:
    target:
      fleet:
        project: projects/PROJECT_ID
    rolloutStrategy:
      rolling:
        maxConcurrent: 1
    

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

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

    gcloud alpha container fleet packages create fp-nginx.yaml \
       --source=fleet-package.yaml \
       --project=PROJECT_ID
    
  3. 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.

  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 de package de parc attend que le 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 une valeur supérieure, les ressources seront déployées simultanément dans les deux clusters.

    Après quelques minutes, deux nouveaux workloads pour le 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 la section Déploiement des packages de parc.

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre compte Google Cloud , supprimez le projet Google Cloud contenant les ressources.

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éé.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

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

  1. 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.

  2. 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.

  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 .

Étape suivante