Guide de démarrage rapide: synchroniser les configurations à partir d'un dépôt

Dans ce tutoriel, vous allez créer un cluster Google Kubernetes Engine (GKE) Enterprise et utiliser Config Sync pour synchroniser les configurations avec le dépôt d'exemples multi-dépôts.

Imaginons que votre équipe de conformité soit chargée de s'assurer que tous les membres de votre organisation respectent les règles internes. Pour appliquer ces règles, l'équipe de conformité a créé des configurations qu'elle a ajoutées au dépôt d'exemples. Tous les clusters de votre organisation doivent être synchronisés avec le dépôt. Vous êtes responsable de la création et de la synchronisation des 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 gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

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

  4. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

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

  6. Assurez-vous que vous disposez du ou des rôles suivants au niveau du projet : GKE Hub Admin

    Vérifier les rôles

    1. Dans la console Google Cloud, accédez à la page IAM.

      Accéder à IAM
    2. Sélectionnez le projet.
    3. Dans la colonne Compte principal, recherchez la ligne qui contient votre adresse e-mail.

      Si votre adresse e-mail ne figure pas dans cette colonne, cela signifie que vous n'avez aucun rôle.

    4. Dans la colonne Rôle de la ligne contenant votre adresse e-mail, vérifiez si la liste des rôles inclut les rôles requis.

    Attribuer les rôles

    1. Dans la console Google Cloud, accédez à la page IAM.

      Accéder à IAM
    2. Sélectionnez le projet.
    3. Cliquez sur Accorder l'accès.
    4. Dans le champ Nouveaux comptes principaux, saisissez votre adresse e-mail.
    5. Dans la liste Sélectinoner un rôle, sélectionnez un rôle.
    6. Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.
    7. Cliquez sur Enregistrer.

Créer un cluster

Dans cette section, vous allez créer un cluster que vous pourrez utiliser dans ce tutoriel. Bien que, dans la réalité, vous géreriez probablement plusieurs clusters, pour simplifier ce tutoriel, vous n'avez à créer et à gérer qu'un seul cluster.

Pour créer un cluster, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Kubernetes Engine.

    Accéder à Google Kubernetes Engine

  2. Si vous utilisez GKE pour la première fois, cliquez sur Activer pour activer l'API Kubernetes Engine.

  3. Cliquez sur Créer.

  4. Dans la section Autopilot (Autopilot), sélectionnez Configure (Configurer).

  5. Dans la section Paramètres de base du cluster, saisissez cs-cluster dans le champ Nom et conservez les valeurs par défaut recommandées pour tous les autres champs.

  6. Cliquez sur Créer. Vous êtes redirigé vers la page Clusters Kubernetes. La création du cluster prend plusieurs minutes. Une coche verte s'affiche dans la colonne État à côté de votre cluster pour indiquer que celui-ci est prêt.

Configurer le cluster

Maintenant que vous avez créé un cluster, vous pouvez configurer Config Sync pour qu'il se synchronise avec les configurations du répertoire config-sync-quickstart du dépôt d'exemples.

Pour configurer Config Sync dans Google Cloud Console, procédez comme suit :

  1. Dans la console Google Cloud, activez l'API GKE Hub.

    Accéder à l'API GKE Hub

  2. Dans la console Google Cloud, accédez à la page Configuration dans la section Fonctionnalités.

    Accéder à Config

  3. Cliquez sur Installer Config Sync.

  4. Sélectionnez Mises à niveau automatiques pour permettre à Config Sync de mettre à niveau automatiquement les versions.

  5. Sous Options d'installation, sélectionnez Installer Config Sync sur des clusters individuels.

  6. Dans le tableau Clusters disponibles, sélectionnez cs-cluster, puis cliquez sur Installer Config Sync. Au bout de quelques minutes, dans l'onglet Settings (Paramètres), vous devriez voir l'état Enabled (Activé) pour cs-cluster.

  7. Dans le tableau de bord Config Sync, cliquez sur Déployer le package.

  8. Dans le tableau Sélectionner des clusters pour le déploiement de packages, sélectionnez cs-cluster, puis cliquez sur Continuer.

  9. Laissez l'option Package received on Git (Package hébergé sur Git) sélectionné, puis cliquez sur Continue (Continuer).

  10. Dans le champ Package name (Nom du package), saisissez sample-repository.

  11. Dans le champ URL du dépôt, saisissez https://github.com/GoogleCloudPlatform/anthos-config-management-samples.

  12. Dans le champ Chemin d'accès, saisissez config-sync-quickstart/multirepo/root.

  13. Conservez les valeurs par défaut dans les autres champs.

  14. Cliquez sur Déployer le package.

    Après quelques minutes, vous devriez voir Synchronisé dans la colonne État de synchronisation pour cs-cluster.

Maintenant que Config Sync est synchronisé avec un dépôt, il synchronise en permanence l'état de vos clusters avec les configurations du dépôt.

Explorer l'installation de Config Sync

Dans les sections suivantes, vous allez utiliser Cloud Shell pour explorer le dépôt à partir duquel cs-cluster se synchronise et vérifier que les configurations du dépôt sont en cours de déploiement.

Ouvrir Cloud Shell

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Pour utiliser les commandes des sections suivantes, configurez l'accès à la ligne de commande kubectl:

    gcloud container clusters get-credentials cs-cluster \
        --zone ZONE \
        --project PROJECT_ID
    

    Remplacez les éléments suivants :

    • ZONE : zone dans laquelle vous avez créé le cluster.
    • PROJECT_ID : ID de votre projet.

    Le résultat est le suivant :

    Fetching cluster endpoint and auth data.
    kubeconfig entry generated for cs-cluster.
    

    Si une autorisation vous est demandée, cliquez sur Autoriser.

Examiner le cluster et le dépôt

Le répertoire config-sync-quickstart inclut les configurations ClusterRole, CustomResourceDefinition, Rolebinding, Espace de noms et RepoSync. Il inclut également des configurations de l'opérateur Prometheus à des fins de surveillance. Ces configurations sont appliquées dès que Config Sync est configuré pour lire les données du dépôt.

Tous les objets gérés par Config Sync possèdent l'étiquette app.kubernetes.io/managed-by définie sur configmanagement.gke.io. Vous pouvez l'utiliser pour afficher les objets gérés.

Pour répertorier les espaces de noms gérés par Config Sync, exécutez la commande suivante :

kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io

Le résultat ressemble à ce qui suit :

NAME         STATUS   AGE
gamestore    Active   58s
monitoring   Active   58s

Vous pouvez accéder au dossier /config-sync-quickstart/multirepo/ du dépôt dans GitHub pour explorer les configurations qui ont entraîné la création de ces espaces de noms.

Vous pouvez examiner d'autres objets de la même manière, tels que ClusterRole, Reposyncs, CRDs et Rolebindings.

Vérifier l'état de synchronisation

Lorsque vous utilisez Config Sync, vous pouvez utiliser l'outil de ligne de commande nomos. Cet outil fournit des fonctionnalités supplémentaires pour Config Sync.

Dans cette section, vous allez vérifier si Config Sync a bien synchronisé toutes les configurations avec votre cluster à l'aide de la commande nomos status:

nomos status

Le résultat ressemble à ce qui suit :

*gke_PROJECT_ID_ZONE_cs-cluster
  --------------------
  <root>:root-sync                         https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main
  SYNCED @ 2023-02-03 16:58:42 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE    NAME                                                                                      STATUS    SOURCEHASH
                  clusterrole.rbac.authorization.k8s.io/namespace-reader                                    Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-acm                                      Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-operator                                 Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/webstore-admin                                      Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm                               Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator                          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com   Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com         Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/anvils.acme.com                             Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com           Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com                Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com                   Current   1fbab5c
                  namespace/gamestore                                                                       Current   1fbab5c
                  namespace/monitoring                                                                      Current   1fbab5c
     gamestore    reposync.configsync.gke.io/repo-sync                                                      Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-admin                                     Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin                            Current   1fbab5c
     monitoring   deployment.apps/prometheus-operator                                                       Current   1fbab5c
     monitoring   prometheus.monitoring.coreos.com/acm                                                      Current   1fbab5c
     monitoring   service/prometheus-acm                                                                    Current   1fbab5c
     monitoring   service/prometheus-operator                                                               Current   1fbab5c
     monitoring   serviceaccount/prometheus-acm                                                             Current   1fbab5c
     monitoring   serviceaccount/prometheus-operator                                                        Current   1fbab5c
     monitoring   servicemonitor.monitoring.coreos.com/acm-service                                          Current   1fbab5c
  --------------------
  gamestore:repo-sync                      https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main
  SYNCED @ 2023-02-03 16:58:51 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE   NAME                                 STATUS    SOURCEHASH
     gamestore   configmap/store-inventory            Current   1fbab5c
     gamestore   webstore.marketplace.com/gameplace   Current   1fbab5c

Dans ce résultat, vous pouvez voir que cs-cluster se synchronise avec succès à partir de deux dépôts. De plus, comme toutes les ressources ont l'état Current, leur état correspond à l'état souhaité.

Effectuer un nettoyage

  1. Accédez au menu GKE dans la console Google Cloud.

    Accéder à la page GKE

  2. À côté de cs-cluster, cliquez sur  Actions, puis sur  Supprimer.

  3. Lorsque vous êtes invité à confirmer votre choix, cliquez à nouveau sur Supprimer.

Étapes suivantes