Ce tutoriel explique également comment associer kpt à d'autres solutions Google, telles que Config Sync et les plans de sécurité GKE Enterprise. Que vous soyez un développeur utilisant Kubernetes ou un ingénieur de plate-forme gérant une plate-forme basée sur Kubernetes, ce tutoriel vous explique comment utiliser kpt dans vos propres workflows associés à Kubernetes. Dans ce tutoriel, nous partons du principe que vous connaissez Kubernetes et Google Cloud.
La configuration déclarative de l'infrastructure cloud est une pratique bien établie dans le secteur informatique. Elle apporte une abstraction performante des systèmes sous-jacents. Cette abstraction vous évite d'avoir à gérer les dépendances et les détails des configurations de bas niveau. La configuration déclarative présente donc un avantage par rapport aux approches impératives, telles que les opérations effectuées dans les interfaces graphiques et les interfaces de ligne de commande.
Le modèle de ressource Kubernetes a contribué à généraliser les approches de configurations déclaratives. L'API Kubernetes étant entièrement déclarative par nature, vous ne lui dites que ce que vous souhaitez, et non la façon d'y parvenir. L'API Kubernetes vous permet de distinguer clairement la configuration (souhaitée ou réelle) des opérations portant sur cette configuration (ajout, suppression et modification d'objets). En d'autres termes, dans le modèle de ressource Kubernetes, la configuration correspond à des données, et non à du code.
La distinction entre la configuration et les opérations présente plusieurs avantages : les personnes et les systèmes automatisés sont capables de comprendre et d'utiliser la configuration, et le logiciel qui modifie la configuration est facilement réutilisable. Elle vous permet également de facilement mettre en œuvre une méthodologie GitOps (telle que définie dans le tutoriel Livraison continue de type GitOps avec Cloud Build).
Dans ce tutoriel, vous allez découvrir cette distinction entre la déclaration de configuration et les opérations portant sur la configuration à l'aide de kpt. Ce tutoriel présente les fonctionnalités suivantes de kpt :
- Gestion des packages : téléchargement et mise à jour des packages de configuration Kubernetes
- Fonctions : exécution de fragments de code arbitraires pour modifier ou valider des configurations
- Pipeline de fonction : ensemble de fonctions que l'auteur du package a incluses avec le package.
- Gestion des ressources : application, mise à jour et suppression des ressources correspondant aux configurations d'un cluster Kubernetes.
Objectifs
- Créer un cluster Google Kubernetes Engine (GKE)
- Télécharger un ensemble existant de configurations Kubernetes à l'aide de kpt
- Utilisez les fonctions kpt pour personnaliser les configurations.
- Appliquer une configuration au cluster GKE
- Importer des modifications en amont de votre configuration à l'aide de kpt
- Utiliser kpt dans un scénario concret pour renforcer la sécurité du cluster GKE
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- Google Kubernetes Engine
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
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.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Dans la console Google Cloud, activez 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.
Configurez Cloud Shell pour utiliser votre projet :
gcloud config set project PROJECT_ID
-
Dans Cloud Shell, activez les API Google Kubernetes Engine et Cloud Source Repositories :
gcloud services enable container.googleapis.com \ sourcerepo.googleapis.com
Une fois que vous avez terminé ce dernier, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour plus d'informations, consultez la section Nettoyer.
Créer un cluster GKE
Dans cette section, vous allez créer le cluster GKE dans lequel vous déploierez les configurations dans la suite de ce tutoriel.
Dans Cloud Shell, créez un cluster GKE :
gcloud container clusters create kpt-tutorial \ --num-nodes=1 --machine-type=n1-standard-4 \ --zone=us-central1-a --enable-network-policy
Vérifiez que vous avez accès au cluster. La commande suivante renvoie des informations sur les nœuds du cluster.
kubectl get nodes
Appliquer un package kpt
Dans cette section, vous allez utiliser kpt pour télécharger un ensemble de configurations, les personnaliser et les appliquer au cluster créé dans la section précédente.
kpt
doit être installé dans votre environnement Cloud Shell. Si ce n'est pas le cas, installez-le à l'aide des commandes suivantes:
Dans Cloud Shell, installez kpt :
sudo apt update && sudo apt-get install google-cloud-sdk-kpt
Téléchargez un exemple d'ensemble de configurations. Pour en savoir plus, consultez les sections sur
kpt pkg get
kpt pkg get https://github.com/GoogleContainerTools/kpt.git/package-examples/wordpress@v0.9
La commande ci-dessus télécharge l'exemple de package
wordpress
disponible dans le dépôt GitHub kpt, dans la version avec le tagv0.9
.Examinez le contenu du package :
kpt pkg tree
.kpt pkg tree wordpress
La sortie ressemble à ceci :
Package "wordpress" ├── [Kptfile] Kptfile wordpress ├── [service.yaml] Service wordpress ├── deployment │ ├── [deployment.yaml] Deployment wordpress │ └── [volume.yaml] PersistentVolumeClaim wp-pv-claim └── Package "mysql" ├── [Kptfile] Kptfile mysql ├── [deployment.yaml] PersistentVolumeClaim mysql-pv-claim ├── [deployment.yaml] Deployment wordpress-mysql └── [deployment.yaml] Service wordpress-mysql
Le package contient deux packages de niveau supérieur
wordpress
et un sous-packagewordpress/mysql
. Ces deux packages contiennent un fichier de métadonnéesKptfile
. La valeurKptfile
n'est consommée que par kpt elle-même et dispose de données sur la source en amont, la personnalisation et la validation du package.Mettre à jour le libellé du package
L'auteur du package a ajouté un pipeline de rendu souvent utilisé pour transmettre les personnalisations attendues.
less wordpress/Kptfile
Le contenu doit ressembler à ceci :
apiVersion: kpt.dev/v1 kind: Kptfile metadata: name: wordpress upstream: type: git git: repo: https://github.com/GoogleContainerTools/kpt directory: /package-examples/wordpress ref: v0.9 updateStrategy: resource-merge upstreamLock: type: git git: repo: https://github.com/GoogleContainerTools/kpt directory: /package-examples/wordpress ref: package-examples/wordpress/v0.9 commit: b9ea0bca019dafa9f9f91fd428385597c708518c info: emails: - kpt-team@google.com description: This is an example wordpress package with mysql subpackage. pipeline: mutators: - image: gcr.io/kpt-fn/set-labels:v0.1 configMap: app: wordpress validators: - image: gcr.io/kpt-fn/kubeval:v0.3
Vous pouvez utiliser votre éditeur favori pour passer les paramètres de la fonction de libellé défini de
app: wordpress
àapp: my-wordpress
.Modifiez le déploiement MySQL
wordpress/mysql/deployment.yaml
à l'aide de l'éditeur de code de votre choix pour modifier la version MySQL. En outre, pour renforcer la sécurité, remplacez la variableMYSQL_ROOT_PASSWORD
parMYSQL_PASSWORD
et ajoutez les variables suivantes:MYSQL_USER
MYSQL_RANDOM_ROOT_PASSWORD
MYSQL_DATABASE
Avant :
[...] containers: - name: mysql image: mysql:5.6 ports: - name: mysql protocol: TCP containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password [...]
Après :
[...] containers: - name: mysql image: mysql:8.0 ports: - name: mysql protocol: TCP containerPort: 3306 env: - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password - name: MYSQL_RANDOM_ROOT_PASSWORD value: '1' - name: MYSQL_USER value: wordpress - name: MYSQL_DATABASE value: wordpress [...]
Modifiez le déploiement WordPress
wordpress/deployment/deployment.yaml
à l'aide de l'éditeur de code de votre choix afin de modifier la version WordPress et d'ajouter une variableWORDPRESS_DB_USER
.Avant :
[...] containers: - name: wordpress image: wordpress:6.1-apache ports: - name: wordpress protocol: TCP containerPort: 80 env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password [...]
Après :
[...] containers: - name: wordpress image: wordpress:4.8-apache ports: - name: wordpress protocol: TCP containerPort: 80 env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password - name: WORDPRESS_DB_USER value: wordpress [...]
Contrairement aux outils qui ne fonctionnent que par le biais du paramètre kpt, vous pouvez modifier des fichiers existants à l'aide d'un éditeur, puis fusionner les mises à jour en amont. Vous pouvez modifier directement
deployment.yaml
sans avoir à créer de correctif ni de fonction dans le pipeline.Annotez la configuration avec
sample-annotation: sample-value
.kpt fn eval wordpress --image gcr.io/kpt-fn/set-annotations:v0.1 \ -- sample-annotation=sample-value
Le résultat devrait ressembler à ceci :
[RUNNING] "gcr.io/kpt-fn/set-annotations:v0.1" [PASS] "gcr.io/kpt-fn/set-annotations:v0.1"
Pour afficher la nouvelle annotation, vous pouvez examiner n'importe quelle valeur de configuration, par exemple
wordpress/service.yaml
.Dans cet exemple, nous avons effectué une personnalisation à l'aide d'une fonction que l'auteur du package n'avait pas planifiée. kpt est compatible avec l'exécution de fonctions déclaratives et impératives, ce qui permet un large éventail de scénarios.
Si ce package a été développé en utilisant l'infrastructure-as-code, nous devrons accéder à la source du package et modifier le code.
Exécutez le pipeline et validez les modifications à l'aide de kubeval via kpt.
kpt fn render wordpress
L'auteur du package a inclus une étape de validation dans le pipeline.
... validators: - image: gcr.io/kpt-fn/kubeval:v0.3
Le résultat positif de ce pipeline de rendu est semblable à ceci :
Package "wordpress/mysql": [RUNNING] "gcr.io/kpt-fn/set-labels:v0.1" [PASS] "gcr.io/kpt-fn/set-labels:v0.1" in 1.3s Package "wordpress": [RUNNING] "gcr.io/kpt-fn/set-labels:v0.1" [PASS] "gcr.io/kpt-fn/set-labels:v0.1" in 1.3s [RUNNING] "gcr.io/kpt-fn/kubeval:v0.3" [PASS] "gcr.io/kpt-fn/kubeval:v0.3" in 3.7s Successfully executed 3 function(s) in 2 package(s).
Cette étape illustre les avantages du modèle de ressource Kubernetes : comme vos configurations sont représentées dans ce modèle bien connu, vous pouvez utiliser des outils Kubernetes existants tels que kubeval.
Examinez les différences entre votre version locale des configurations et la configuration en amont :
kpt pkg diff wordpress
Initialisez le package pour le déploiement :
kpt live init wordpress
La commande ci-dessus crée un inventaire des configurations incluses dans le package. kpt utilise, entre autres, l'inventaire pour restreindre les configurations lorsque vous les supprimez du package. Pour en savoir plus, consultez la page
kpt live
.Créez un secret contenant le mot de passe MySQL :
kubectl create secret generic mysql-pass --from-literal=password=foobar
Appliquez les configurations au cluster GKE :
kpt live apply wordpress
La sortie ressemble à ceci :
installing inventory ResourceGroup CRD. inventory update started inventory update finished apply phase started service/wordpress apply successful service/wordpress-mysql apply successful deployment.apps/wordpress apply successful deployment.apps/wordpress-mysql apply successful persistentvolumeclaim/mysql-pv-claim apply successful persistentvolumeclaim/wp-pv-claim apply successful apply phase finished reconcile phase started service/wordpress reconcile successful service/wordpress-mysql reconcile successful deployment.apps/wordpress reconcile pending deployment.apps/wordpress-mysql reconcile pending persistentvolumeclaim/mysql-pv-claim reconcile pending persistentvolumeclaim/wp-pv-claim reconcile pending persistentvolumeclaim/wp-pv-claim reconcile successful persistentvolumeclaim/mysql-pv-claim reconcile successful deployment.apps/wordpress-mysql reconcile successful deployment.apps/wordpress reconcile successful reconcile phase finished inventory update started inventory update finished apply result: 6 attempted, 6 successful, 0 skipped, 0 failed reconcile result: 6 attempted, 6 successful, 0 skipped, 0 failed, 0 timed out
Patientez quelques minutes, puis vérifiez que tout fonctionne comme prévu :
kpt live status wordpress
La sortie ressemble à ceci :
inventory-88521939/deployment.apps/default/wordpress is Current: Deployment is available. Replicas: 1 inventory-88521939/persistentvolumeclaim/default/wp-pv-claim is Current: PVC is Bound inventory-88521939/service/default/wordpress-mysql is Current: Service is ready inventory-88521939/persistentvolumeclaim/default/mysql-pv-claim is Current: PVC is Bound inventory-88521939/deployment.apps/default/wordpress-mysql is Current: Deployment is available. Replicas: 1 inventory-88521939/service/default/wordpress is Current: Service is ready
Mettre à jour votre package local
Dans cette section, vous allez mettre à jour votre version locale du package avec certaines modifications du package en amont.
Créez un dépôt Git pour vos configurations, et définissez votre adresse e-mail et votre nom. Vous devez disposer d'un dépôt Git local pour pouvoir mettre à jour le package. Remplacez
YOUR_EMAIL
par votre adresse e-mail etYOUR_NAME
par votre nom.cd wordpress/ git init -b main git config user.email "YOUR_EMAIL" git config user.name "YOUR_NAME"
Validez vos configurations :
git add . git commit -m "First version of Wordpress package" cd ..
Mettez à jour votre package local. Au cours de cette étape, vous récupérez la version
v0.10
du package en amont.kpt pkg update wordpress@v0.10
Vous pouvez constater que les mises à jour du package en amont sont appliquées à votre package local :
cd wordpress/ git diff
Dans ce cas, la mise à jour fait passer le volume de déploiement WordPress de 3 Gi à 4 Gi. Vous pouvez également voir vos propres modifications.
Validez vos modifications :
git commit -am "Update to package version v0.10"
Appliquez la nouvelle version du package :
kpt live apply .
Supprimer une ressource et un package
Étant donné que kpt surveille les ressources qu'il crée, il peut les supprimer du cluster lorsque vous les supprimez du package. Il peut également supprimer complètement un package du cluster. Dans cette section, vous allez supprimer une ressource du package, puis le package entier.
Supprimez le fichier
service.yaml
du package :git rm service.yaml git commit -m "Remove service"
Appliquez la modification, puis vérifiez que kpt a supprimé le service :
kpt live apply . kubectl get svc
Supprimez les éléments restants du package dans le cluster, puis vérifiez que celui-ci est vide :
kpt live destroy . kubectl get deployment
Utiliser kpt pour renforcer la sécurité de votre cluster GKE
La commande kpt live
n'est pas le seul moyen d'appliquer un package à un cluster Kubernetes. Dans cette section, vous allez utiliser kpt avec Config Sync dans un scénario basique, mais réaliste. L'outil Config Sync vous permet de gérer votre configuration de manière centralisée, uniforme et déclarative pour tous vos clusters Kubernetes à partir d'un dépôt Git. GKE Enterprise (que vous utilisez dans ce tutoriel) inclut Config Sync.
Les plans de sécurité GKE Enterprise fournissent un ensemble de paramètres de sécurité pré-installés pour vos charges de travail basées sur GKE Enterprise. Dans cette section, vous utilisez le plan de restriction de trafic (et son répertoire dans le dépôt GitHub).
Vous téléchargez le package default-deny
à l'aide de kpt. Le package utilise les règles de réseau Kubernetes pour refuser l'intégralité du trafic dans votre cluster GKE (sauf pour la résolution DNS). Pour appliquer les configurations, vous allez effectuer leur commit dans le dépôt Git Config Sync.
Installer Config Sync
Dans cette section, vous allez créer le dépôt Git dont Config Sync a besoin, puis installer Config Sync sur votre cluster GKE.
Dans Cloud Shell, créez un dépôt Git pour Config Sync à l'aide de Cloud Source Repositories :
cd ~ gcloud source repos create config-management
Générez une paire de clés SSH pour vous authentifier auprès du dépôt Git :
cd ~ ssh-keygen -t rsa -b 4096 -N '' \ -f cloud_source_repositories_key
Créez le secret Kubernetes contenant la clé SSH privée requise pour accéder au dépôt Git :
kubectl create ns config-management-system && \ kubectl create secret generic git-creds \ --namespace=config-management-system \ --from-file=ssh=cloud_source_repositories_key
Affichez la clé publique, puis copiez-la :
cat cloud_source_repositories_key.pub
Accéder à Cloud Source Repositories
Page Gérer les clés SSH
Dans la boîte de dialogue Register SSH Key (Enregistrer la clé SSH) qui s'affiche, saisissez les valeurs suivantes :
- Dans le champ Nom de la clé, saisissez
config-management
. - Dans le champ Clé, collez la clé publique.
- Cliquez sur Enregistrer.
- Dans le champ Nom de la clé, saisissez
Clonez le dépôt Git dans Cloud Shell :
gcloud source repos clone config-management cd config-management git checkout -b main
Téléchargez l'outil de ligne de commande Config Sync appelé
nomos
.nomos
doit être installé dans votre environnement Cloud Shell. Si ce n'est pas le cas, installez-le à l'aide des commandes suivantes:sudo apt update && sudo apt-get install google-cloud-sdk-nomos
Initialisez le dépôt Config Sync :
nomos init git add . git commit -m "Config Management directory structure" git push -u origin main
Déployez Config Sync Operator :
gsutil cp gs://config-management-release/released/latest/config-management-operator.yaml /tmp/config-management-operator.yaml kubectl apply -f /tmp/config-management-operator.yaml
Configurer Config Sync
Créez une ressource personnalisée ConfigManagement pour configurer Config Sync :
PROJECT=$(gcloud config get-value project) EMAIL=$(gcloud config get-value account) cat <<EOF > /tmp/config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: clusterName: kpt-tutorial git: syncRepo: ssh://${EMAIL}@source.developers.google.com:2022/p/${PROJECT}/r/config-management syncBranch: main secretType: ssh EOF kubectl -n config-management-system \ apply -f /tmp/config-management.yaml
Pour plus d'options d'installation, consultez la documentation Installer Sync.
Dans Cloud Shell, vérifiez que Config Sync fonctionne correctement :
nomos status --contexts=$(kubectl config current-context)
Cette commande renvoie l'état
SYNCED
. L'initialisation de Config Sync peut prendre un certain temps. Si l'état n'est pas mis à jour, patientez quelques minutes, puis exécutez à nouveau la commande.
Appliquer le plan de sécurité GKE Enterprise
Dans cette section, vous allez utiliser kpt pour télécharger le package default-deny
du plan de sécurité GKE Enterprise visant à restreindre le trafic. Vous utiliserez ensuite Config Sync pour n'appliquer le package qu'à l'espace de noms default
.
Téléchargez le package
default-deny
:cd ~ kpt pkg get https://github.com/GoogleCloudPlatform/anthos-security-blueprints.git/restricting-traffic/default-deny ./
Vous pouvez explorer le contenu du package : le fichier
default-deny/Kptfile
contient les métadonnées du package et le fichierdefault-deny/default-deny.yaml
contient une ressource Kubernetes NetworkPolicy (seule configuration du plan).Utilisez kpt pour copier le contenu du package dans le dépôt Config Sync, puis ajoutez des libellés pour le personnaliser :
kpt fn source default-deny/ | \ kpt fn eval - --image=gcr.io/kpt-fn/set-annotations:v0.1 -- \ anthos-security-blueprint=restricting-traffic | \ kpt fn sink ~/config-management/namespaces/default/
Comme le montre cet exemple, vous pouvez utiliser des barres verticales pour relier les commandes
kpt fn
. Le fait de relier les commandeskpt fn
vous permet de lire les configurations, de les modifier à votre guise et d'écrire le résultat. Vous pouvez relier autant de commandeskpt fn
que vous le souhaitez.Créez le fichier
namespace.yaml
dans le dépôt Config Sync :cat >> ~/config-management/namespaces/default/namespace.yaml <<EOF apiVersion: v1 kind: Namespace metadata: name: default EOF
L'espace de noms
default
se trouve dans votre cluster GKE, mais Config Sync ne le gère pas. Lorsque vous créez le répertoire et le fichier à cette étape, vous configurez Config Sync pour gérer l'espace de noms. Pour appliquer simultanément le package à plusieurs espaces de noms, vous pouvez créer un espace de noms abstrait.Vérifiez que les ressources Kubernetes NetworkPolicies ont été écrites dans le dépôt Config Sync et qu'elles sont annotées avec
anthos-security-blueprint: restricting-traffic
:cat config-management/namespaces/default/default-deny.yaml
La sortie ressemble à ceci :
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: # kpt-merge: /default-deny name: default-deny annotations: internal.kpt.dev/upstream-identifier: 'networking.k8s.io|NetworkPolicy|default|default-deny' anthos-security-blueprint: restricting-traffic spec: policyTypes: - Ingress - Egress podSelector: {} egress: - to: - namespaceSelector: matchLabels: k8s-namespace: kube-system podSelector: matchExpressions: - key: k8s-app operator: In values: ["kube-dns", "node-local-dns"] ports: - protocol: TCP port: 53 - protocol: UDP port: 53
Validez et appliquez les modifications :
cd ~/config-management/ git add namespaces/default/ git commit -m "Default deny" git push
Vérifiez que la nouvelle règle est appliquée :
kubectl get networkpolicies
Si la nouvelle règle n'est pas présente, patientez quelques secondes, puis exécutez à nouveau la commande. Config Sync met à jour les configurations toutes les 15 secondes par défaut. Si vous devez appliquer une procédure de dépannage supplémentaire, exécutez la commande suivante pour obtenir des informations sur les éventuelles erreurs Config Sync :
nomos status --contexts=$(kubectl config current-context)
Pour tester la nouvelle règle, ouvrez une interface système dans un pod qui s'exécute dans l'espace de noms
default
:kubectl -n default run -i --tty --rm test \ --image=busybox --restart=Never -- sh
Essayez de pinguer
8.8.8.8
et vérifiez que cela ne fonctionne pas, comme prévu :ping -c 3 -W 1 8.8.8.8
La sortie ressemble à ceci :
PING 8.8.8.8 (8.8.8.8): 56 data bytes --- 8.8.8.8 ping statistics --- 3 packets transmitted, 0 packets received, 100% packet loss
Interrogez le serveur d'API Kubernetes et vérifiez qu'il ne fonctionne pas, comme prévu :
wget --timeout=3 https://${KUBERNETES_SERVICE_HOST}
La sortie ressemble à ceci :
Connecting to 10.3.240.1 (10.3.240.1:443) wget: download timed out
Fermez le pod :
exit
Nettoyer
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
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Supprimer les ressources
Si vous souhaitez conserver le projet Google Cloud utilisé dans ce tutoriel, vous pouvez supprimer le dépôt Git et le cluster GKE. Dans Cloud Shell, exécutez les commandes suivantes :
gcloud source repos delete config-management --quiet
gcloud container clusters delete kpt-tutorial \
--async --quiet --zone=us-central1-a
Étapes suivantes
- Obtenez plus d'informations sur Config Sync et ses composants.
- Découvrez comment valider la configuration de déploiement de votre application à l'aide de Policy Controller.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.