Ce tutoriel explique comment configurer Config Sync pour Google Kubernetes Engine (GKE) Enterprise dans deux environnements, un pour le développement et un pour la production, en suivant les bonnes pratiques pour Config Sync.
Dans ce scénario, vous faites partie d'une équipe d'administration de plateforme de Foo Corp. Les applications de Foo Corp sont déployées sur GKE Enterprise, avec des ressources réparties sur deux projets, dev
et prod
. Le projet dev
contient un cluster GKE Enterprise de développement et le projet prod
contient le cluster GKE Enterprise de production. En tant qu'administrateur de plateforme, votre objectif est de vous assurer que les deux environnements respectent les règles de Foo Corp. et que les ressources de base, telles que les espaces de noms Kubernetes et les comptes de service, restent cohérentes dans les deux environnements.
Le schéma suivant présente les environnements que vous allez configurer dans le présent tutoriel :
Ce tutoriel utilise la fonctionnalité d'affichage automatisé de Config Sync pour afficher les ressources du cluster. Chacun des clusters est configuré pour se synchroniser à partir d'un répertoire contenant un fichier de configuration Kustomization, ce qui déclenche automatiquement le processus de rendu dans Config Sync. Pour en savoir plus, consultez la page Utiliser un dépôt avec des configurations Kustomize et des graphiques Helm.
Comme illustré dans le schéma précédent, vous allez créer les ressources suivantes dans le cadre du présent tutoriel :
- Deux projets Google Cloud représentant les environnements de développement et de production.
- Deux clusters GKE Enterprise,
dev
etprod
, dans les projets distincts, avec Config Sync installé.
Architecture du dépôt
Dans ce tutoriel, vous allez configurer Config Sync pour qu'il se synchronise avec les configurations du répertoire config-source/
du dépôt. Le répertoire contient les répertoires et fichiers suivants :
config-source/
├── base
│ ├── foo
│ │ ├── kustomization.yaml
│ │ ├── namespace.yaml
│ │ └── serviceaccount.yaml
│ ├── kustomization.yaml
│ ├── pod-creator-clusterrole.yaml
│ └── pod-creator-rolebinding.yaml
├── cloudbuild.yaml
├── overlays
│ ├── dev
│ │ └── kustomization.yaml
│ └── prod
│ └── kustomization.yaml
└── README.md
Le répertoire config-source
inclut les fichiers manifestes base/
, ainsi que les superpositions Kustomize dev/
et prod/
. Chaque répertoire contient un fichier kustomization.yaml
, qui répertorie les fichiers que Kustomize doit gérer et appliquer au cluster.
Une série de correctifs est définie dans dev/kustomization.yaml
et prod/kustomization.yaml
. Ces correctifs manipulent les ressources base/
pour cet environnement spécifique.
Par exemple, l'objet RoleBinding dev permet à tous les développeurs de Foo Corp de déployer des pods sur le cluster de développement, tandis que l'objet RoleBinding prod n'autorise qu'un agent de déploiement continu, deploy-bot@foo-corp.com
, à déployer des pods en production :
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
patches:
# ServiceAccount - make name unique per environ
- target:
kind: ServiceAccount
name: foo-ksa
patch: |-
- op: replace
path: /metadata/name
value: foo-ksa-dev
- op: replace
path: /metadata/namespace
value: foo-dev
# Pod creators - give all Foo Corp developers access
- target:
kind: RoleBinding
name: pod-creators
patch: |-
- op: replace
path: /subjects/0/name
value: developers-all@foo-corp.com
commonLabels:
environment: dev
Objectifs
- Configurez Config Sync pour afficher et synchroniser automatiquement la configuration des deux environnements distincts.
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.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
Avant de commencer ce tutoriel, assurez-vous d'avoir effectué les étapes suivantes :
Dans la console Google Cloud, sur la page du sélecteur de projet, choisissez ou créez deux projets Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
Mettez à jour votre Google Cloud CLI vers la version la plus récente.
Installez ou mettez à niveau la commande
nomos
.
Créer et enregistrer vos clusters
Pour vous permettre de vous concentrer sur le workflow à utiliser lorsque vous configurez Config Sync pour plusieurs environnements, le répertoire multi-environments-kustomize
contient des scripts que vous pouvez utiliser pour automatiser la configuration de Config Sync.
Clonez l'exemple de dépôt :
git clone https://github.com/GoogleCloudPlatform/anthos-config-management-samples.git
Accédez au dossier contenant les ressources dont vous avez besoin pour ce tutoriel :
cd anthos-config-management-samples/multi-environments-kustomize/
Pour exécuter les scripts utilisés dans ce tutoriel, définissez les variables suivantes :
export DEV_PROJECT="DEV_PROJECT_ID" export PROD_PROJECT="PROD_PROJECT_ID" export DEV_CLUSTER_ZONE="DEV_CLUSTER_ZONE" export PROD_CLUSTER_ZONE="PROD_CLUSTER_ZONE" export CM_CONFIG_DIR="config-sync-rendering"
Remplacez les éléments suivants :
DEV_PROJECT_ID
: ID du projet Google Cloud que vous souhaitez utiliser comme projet de développement.PROD_PROJECT_ID
: ID du projet Google Cloud que vous souhaitez utiliser comme projet de production.DEV_CLUSTER_ZONE
: zone Compute Engine dans laquelle vous souhaitez créer votre cluster de développement. Par exemple,us-central1-c
.PROD_CLUSTER_ZONE
: zone Compute Engine dans laquelle vous souhaitez créer votre cluster de production.
Pour créer deux clusters, exécutez le script
./create-clusters.sh
:./create-clusters.sh
Ce script crée un cluster GKE Enterprise nommé
dev
dans le projet de développement et un cluster GKE nomméprod
dans le projet de production. Ce script active également l'API GKE Enterprise et se connecte à vos clustersdev
etprod
afin que vous puissiez accéder à leurs API aveckubectl
.Exemple de résultat :
kubeconfig entry generated for dev. Fetching cluster endpoint and auth data. kubeconfig entry generated for prod. ⭐️ Done creating clusters.
Pour enregistrer vos clusters dans deux parcs distincts, exécutez le script
register-clusters.sh
:./register-clusters.sh
Ce script crée un compte de service Google Cloud et une clé pour l'enregistrement du cluster GKE Enterprise, puis utilise la commande
gcloud container fleet memberships register
pour enregistrer les clustersdev
etprod
dans GKE Enterprise, dans leurs projets respectifs.Exemple de résultat :
Waiting for Feature Config Management to be created...done. ⭐️ Done registering clusters.
Configurer Config Sync
Maintenant que vous avez créé et enregistré vos clusters, vous pouvez installer Config Sync et vérifier l'installation.
Installer Config Sync
Pour installer Config Sync, exécutez le script install-config-sync.sh
sur les clusters de développement et de production :
./install-config-sync.sh
Résultat attendu :
🔁 Installing ConfigSync on the dev cluster...
Updated property [core/project].
Switched to context "DEV_CLUSTER".
Waiting for Feature Config Management to be updated...done.
🔁 Installing ConfigSync on the prod cluster...
Updated property [core/project].
Switched to context "PROD_CLUSTER".
Waiting for Feature Config Management to be updated...done.
Config Sync est maintenant synchronisé avec les configurations de vos dépôts.
Vérifiez votre configuration.
Dans cette section, vous allez vérifier que vos clusters se synchronisent bien avec les configurations de votre dépôt :
Pour vérifier l'état de l'installation de Config Sync, exécutez la commande
nomos status
:nomos status
Vous devriez constater que vos clusters de développement et de production sont maintenant synchronisés avec leurs dépôts respectifs :
gke_DEV_PROJECT_ID_us-central1-c_dev -------------------- <root> https://github.com/GoogleCloudPlatform/anthos-config-management-samples/multi-environments-kustomize/config-source/overlays/dev@main SYNCED 8f2e196f Managed resources: NAMESPACE NAME STATUS clusterrole.rbac.authorization.k8s.io/pod-creator Current namespace/default Current namespace/foo Current default rolebinding.rbac.authorization.k8s.io/pod-creators Current foo serviceaccount/foo-ksa-dev Current *gke_PROD_PROJECT_ID_us-central1-c_prod -------------------- <root> https://github.com/GoogleCloudPlatform/anthos-config-management-samples/multi-environments-kustomize/config-source/overlays/prod@main SYNCED c91502ee Managed resources: NAMESPACE NAME STATUS clusterrole.rbac.authorization.k8s.io/pod-creator Current namespace/default Current namespace/foo Current default rolebinding.rbac.authorization.k8s.io/pod-creators Current foo serviceaccount/foo-ksa-prod Current ```
Utilisez
kubectl
pour basculer vers le cluster de développement :kubectl config use-context "gke_${DEV_PROJECT}_${DEV_CLUSTER_ZONE}_dev"
Pour vérifier que les ressources sont synchronisées, obtenez les espaces de noms. L'espace de noms
foo
doit s'afficher.kubectl get namespace
Exemple de résultat :
NAME STATUS AGE config-management-monitoring Active 9m38s config-management-system Active 9m38s default Active 47h foo Active 9m5s kube-node-lease Active 47h kube-public Active 47h kube-system Active 47h resource-group-system Active 9m30s
Vous avez maintenant configuré le rendu automatisé de la configuration pour des environnements de développement et de production, dans plusieurs projets et environnements Google Cloud.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer toutes les ressources
Pour supprimer les ressources que vous avez créées dans le cadre de ce tutoriel, tout en conservant intacts les projets de développement et de production, exécutez le script de nettoyage :
./cleanup.sh
Supprimer les projets
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Étapes suivantes
- Apprenez-en plus sur les déploiements sécurisés avec Config Sync.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.