Dans ce tutoriel, vous ajoutez des configurations Kustomize qui référencent les charts Helm vers votre dépôt, puis vous utilisez Config Sync pour synchroniser votre cluster avec votre dépôt.
Lorsque vous utilisez Config Sync, les configurations Kustomize et les charts Helm que vous placez dans votre dépôt Git sont rendus automatiquement. Le rendu automatisé offre les avantages suivants :
Vous n'avez plus besoin d'un pipeline d'hydratation externe. Sans rendu automatisé, vous devez le rendu des configurations manuellement à l'aide de Kustomize et Helm sur votre poste de travail, ou configurer une étape pour déclencher le processus d'hydratation dans vos systèmes CI. Grâce au rendu automatisé, Config Sync gère l'exécution.
Vos coûts de maintenance sont réduits. Sans rendu automatisé, vous devez conserver un dépôt Git avec les configurations Kustomize et les graphiques Helm d'origine, et un autre dépôt Git avec le résultat généré par l'hydratation externe. Vous devez ensuite configurer Config Sync pour la synchronisation à partir du dépôt Git avec le résultat rendu. Avec le rendu automatisé, vous n'avez besoin de conserver qu'un seul dépôt avec les configurations d'origine.
Votre workflow de développement est simplifié. Sans rendu automatisé, les modifications apportées à vos configurations d'origine doivent être examinées deux fois avant la fusion : une fois dans le dépôt d'origine, puis une fois dans le dépôt rendu. Avec le rendu automatisé, les configurations de rendu sont générées par Config Sync et vous ne devez examiner que les modifications apportées aux configurations d'origine.
Objectifs
- Configurez votre dépôt avec des configurations Kustomize qui référencent un chart Helm prêt à l'emploi pour cert-manager. cert-manager est un outil pour Kubernetes qui vous aide à gérer vos certificats.
- Prévisualisez et validez les configurations que vous créez.
- Utilisez Config Sync pour effectuer le rendu de votre chart et synchroniser votre cluster avec votre dépôt automatiquement.
- Vérifiez que l'installation a réussi.
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
-
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.
- Créez un cluster répondant aux exigences de Config Sync et utilisez les paramètres Config Sync suivants ou assurez-vous d'y avoir accès :
- Utilise un dépôt non structuré.
- Les API
RootSync
etRepoSync
sont activées. spec.override.enableShellInRendering
est défini surtrue
pour permettre à Config Sync d'extraire des bases distantes à partir de dépôts publics pendant le processus de rendu.
- Enregistrer un cluster dans un parc.
- Installez l'outil de ligne de commande
nomos
. Si vous avez déjà installé l'outilnomos
, veillez à le mettre à niveau vers la version 1.9.0 ou ultérieure. - Installez Helm.
Il est également utile de se familiariser avec Git, Kustomize et Helm.
Configurer votre dépôt
Les tâches suivantes vous montrent comment préparer un dépôt Git avec des configurations combinant des configurations Kustomize avec des charts Helm :
Créez un dépôt Git ou assurez-vous d'y avoir accès. Étant donné que votre dépôt utilise Kustomize et Helm, il doit s'agir d'un dépôt non structuré.
À la racine de votre dépôt Git, créez un fichier nommé
kustomization.yaml
et collez-y le code suivant :# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: Deployment
Ce fichier est une superposition Kustomize qui pointe vers la base Kustomize. Cette superposition inclut un correctif pour la base du chart Helm qui ajoute l'annotation
client.lifecycle.config.k8s.io/mutation: ignore
à tous les objets de déploiement. L'annotation force Config Sync à ignorer les modifications conflictuelles à cet objet dans le cluster après sa création.Dans votre dépôt Git, créez un répertoire nommé
base
:mkdir base
Dans le répertoire
base
, créez un autre fichier nommékustomization.yaml
et collez-y le code suivant :# ./base/kustomization.yaml helmCharts: - name: cert-manager repo: https://charts.jetstack.io version: v1.5.3 releaseName: my-cert-manager namespace: cert-manager
Ce fichier est la base Kustomize, qui effectue le rendu du chart Helm distant.
Revenez à la racine de votre dépôt Git, créez un fichier nommé
ignore-deployment-mutation-patch.yaml
et collez-y le code suivant :# ./ignore-deployment-mutation-patch.yaml apiVersion: apps/v1 kind: Deployment metadata: name: any annotations: client.lifecycle.config.k8s.io/mutation: ignore
Ce fichier est un correctif appliqué au chart Helm de base. L'annotation
client.lifecycle.config.k8s.io/mutation: ignore
est ajoutée à tous les déploiements situés dans le répertoire de base.Effectuez un commit des modifications dans votre dépôt :
git add . git commit -m 'Set up manifests.' git push
Le dépôt d'exemples contient un exemple de ce type de dépôt.
Prévisualiser et valider les configurations de rendu
Avant que Config Sync effectue le rendu des configurations et les synchronise avec le cluster, assurez-vous que les configurations sont exactes en exécutant nomos hydrate
pour prévisualiser la configuration de rendu et en exécutant nomos vet
pour vérifier que le format est correct.
Exécutez la commande
nomos hydrate
suivante avec les options suivantes :nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORY
Dans cette commande :
--source-format=unstructured
permet ànomos hydrate
de travailler sur un dépôt non structuré. Étant donné que vous utilisez des configurations Kustomize et des charts Helm, vous devez utiliser un dépôt non structuré et ajouter cette option.--output=OUTPUT_DIRECTORY
vous permet de définir un chemin d'accès aux configurations de rendu. RemplacezOUTPUT_DIRECTORY
par l'emplacement où vous souhaitez enregistrer le résultat.
Vérifiez la syntaxe et la validité de vos configurations en exécutant
nomos vet
avec les options suivantes :nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORY
Dans cette commande :
--source-format=unstructured
permet ànomos vet
de travailler sur un dépôt non structuré.--keep-output=true
enregistre les configurations de rendu.--output=OUTPUT_DIRECTORY
est le chemin d'accès aux configurations de rendu.
Configurer la synchronisation à partir du dépôt Git
Maintenant que vous avez créé un dépôt avec les configurations que vous souhaitez utiliser, vous pouvez configurer la synchronisation entre votre cluster et votre dépôt. Si vous avez déjà installé Config Sync, passez à la section Vérifier l'état de synchronisation.
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 les versions automatiquement.
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
.
Vérifier l'installation
Une fois que vous avez installé et configuré Config Sync, vous pouvez vérifier que l'installation s'est bien déroulée.
Vérifiez qu'il n'y a pas d'autres erreurs en utilisant
nomos status
:nomos status
Exemple de résultat :
*CLUSTER_NAME -------------------- <root> https:/github.com/GoogleCloudPlatform/anthos-config-management-samples.git/helm-component/manifests@init SYNCED fd17dd5a
Vérifiez que le composant Helm est correctement installé :
kubectl get all -n cert-manager
Exemple de résultat :
NAME READY STATUS RESTARTS AGE pod/my-cert-manager-54f5ccf74-wfzs4 1/1 Running 0 10m pod/my-cert-manager-cainjector-574bc8678c-rh7mq 1/1 Running 0 10m pod/my-cert-manager-webhook-7454f4c77d-rkct8 1/1 Running 0 10m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/my-cert-manager ClusterIP 10.76.9.35 <none> 9402/TCP 10m service/my-cert-manager-webhook ClusterIP 10.76.11.205 <none> 443/TCP 10m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/my-cert-manager 1/1 1 1 10m deployment.apps/my-cert-manager-cainjector 1/1 1 1 10m deployment.apps/my-cert-manager-webhook 1/1 1 1 10m NAME DESIRED CURRENT READY AGE replicaset.apps/my-cert-manager-54f5ccf74 1 1 1 10m replicaset.apps/my-cert-manager-cainjector-574bc8678c 1 1 1 10m replicaset.apps/my-cert-manager-webhook-7454f4c77d 1 1 1 10m
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 le projet
- 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.
Supprimer des ressources individuelles
Supprimer les fichiers manifestes de votre dépôt
Afin d'éviter toute suppression accidentelle, Config Sync ne vous permet pas de supprimer tous les espaces de noms ou les ressources à l'échelle d'un cluster dans un seul commit. Suivez ces instructions pour désinstaller correctement le composant et supprimer l'espace de noms dans des commits distincts :
Supprimez le composant cert-manager de votre dépôt :
git rm -rf manifests/cert-manager \ && git commit -m "uninstall cert-manager" \ && git push origin BRANCH
Remplacez
BRANCH
par la branche dans laquelle vous avez créé votre dépôt.Supprimez l'espace de noms cert-manager :
git rm manifests/namespace-cert-manager.yaml \ && git commit -m "remove the cert-manager namespace" \ && git push origin BRANCH
Vérifiez que l'espace de noms cert-manager n'existe pas :
kubectl get namespace cert-namespace
Exemple de résultat :
Error from server (NotFound): namespaces "cert-namespace" not found
Supprimer le cluster
Pour supprimer le cluster, exécutez les commandes suivantes :
Console
Pour supprimer un cluster à l'aide de la console Google Cloud, procédez comme suit :
Dans la console Google Cloud, accédez à la page GKE.
À côté du cluster que vous souhaitez supprimer, cliquez sur more_vert Actions puis sur delete Supprimer.
Lorsque vous êtes invité à confirmer votre choix, cliquez à nouveau sur Supprimer.
gcloud
Pour supprimer un cluster à l'aide de Google Cloud CLI, exécutez la commande suivante :
gcloud container clusters delete CLUSTER_NAME
Pour en savoir plus, consultez la documentation sur gcloud container clusters delete
.
Étape suivante
- Découvrez comment utiliser des dépôts non structurés.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.