Dans ce tutoriel, vous allez créer un cluster Google Kubernetes Engine (GKE) Enterprise et utiliser Config Sync pour synchroniser les configurations dans 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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: GKE Hub Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Dans la liste Sélectionner un rôle, sélectionnez un rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.
- Cliquez sur Enregistrer.
Créer un cluster
Dans cette section, vous allez créer un cluster que vous pourrez utiliser dans ce tutoriel. Dans la réalité, vous géreriez probablement plusieurs clusters. Pour simplifier ce tutoriel, vous ne créerez et ne gérerez qu'un seul cluster.
Pour créer un cluster, procédez comme suit :
Dans la console Google Cloud, accédez à la page Kubernetes Engine.
Si vous utilisez GKE pour la première fois, cliquez sur Activer pour activer l'API Kubernetes Engine.
Cliquez sur add_box Créer.
Dans la section Autopilot, sélectionnez Configurer.
Dans la section Paramètres de base du cluster, ajoutez
cs-cluster
dans le champ Nom et conservez les valeurs par défaut pour tous les autres champs.Cliquez sur Créer. Vous êtes redirigé vers la page des clusters Kubernetes. La création du cluster prend plusieurs minutes. Lorsqu'une coche verte s'affiche dans la colonne État à côté de votre cluster, cela signifie 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 :
Dans la console Google Cloud, activez l'API GKE Hub.
- Dans la console Google Cloud, accédez à la page Configuration sous la section Fonctionnalités.
Cliquez sur add Installer Config Sync.
Sélectionnez Mises à niveau automatiques pour permettre à Config Sync de mettre à niveau automatiquement les versions.
Sous Options d'installation, sélectionnez Installer Config Sync sur des clusters individuels.
Dans le tableau Clusters disponibles, sélectionnez
cs-cluster
, puis cliquez sur Installer Config Sync. Dans l'onglet Paramètres, l'état ducs-cluster
devrait s'afficher comme Activé après quelques minutes.Dans le tableau de bord Config Sync, cliquez sur Déployer le package.
Dans le tableau Sélectionner des clusters pour le déploiement de packages, sélectionnez
cs-cluster
, puis cliquez sur Continuer.Laissez l'option Package hébergé sur Git, puis cliquez sur Continuer.
Dans le champ Nom du package, saisissez
sample-repository
.Dans le champ URL du dépôt, saisissez
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
.Dans le champ Chemin d'accès, saisissez
config-sync-quickstart/multirepo/root
.Conservez les valeurs par défaut dans les autres champs.
Cliquez sur Déployer le package.
Après quelques minutes, Synchronisé doit s'afficher dans la colonne État de synchronisation de
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 déployées.Ouvrir Cloud Shell
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
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, Namespace et RepoSync. Il inclut également les configurations de l'opérateur Prometheus pour la 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 surconfigmanagement.gke.io
. Vous pouvez utiliser ce libellé 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 examiner 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 vous offre des fonctionnalités supplémentaires pour Config Sync.Dans cette section, vous vérifierez 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 constater que
cs-cluster
est synchronisé avec succès à partir de deux dépôts. De plus, comme toutes les ressources ont l'étatCurrent
, l'état de la ressource correspond à l'état souhaité.Effectuer un nettoyage
Accédez au menu GKE dans la console Google Cloud.
À côté de
cs-cluster
, cliquez sur more_vert Actions, puis sur delete Supprimer.Lorsque vous êtes invité à confirmer votre choix, cliquez à nouveau sur Supprimer.
Étapes suivantes
- Découvrez comment valider des configurations.
-