In questo tutorial, aggiungi al repository configurazioni Kustomize che fanno riferimento ai grafici Helm e poi utilizza Config Sync per sincronizzare il cluster con il repository.
Quando utilizzi Config Sync, le configurazioni Kustomize e i grafici Helm che inserisci nel repository Git vengono sottoposti automaticamente al rendering. Il rendering automatico offre i seguenti vantaggi:
Non hai più bisogno di una pipeline di idratazione esterna. Senza il rendering automatico, devi eseguire manualmente il rendering delle configurazioni utilizzando Kustomize e Helm sulla tua workstation oppure configurare un passaggio per attivare il processo di idratazione nei tuoi sistemi CI. Con il rendering automatico, Config Sync gestisce l'esecuzione.
I costi di manutenzione sono ridotti. Senza il rendering automatico, devi gestire un repository Git con le configurazioni Kustomize originali e i grafici Helm e un altro repository Git con l'output generato dall'idratazione esterna. Dopodiché, devi configurare Config Sync per la sincronizzazione dal repository Git con l'output sottoposto a rendering. Con il rendering automatico, devi gestire un solo repository con le configurazioni originali.
Il workflow di sviluppo è semplificato. Senza il rendering automatico, le modifiche apportate alle configurazioni originali devono essere esaminate due volte prima di essere unite: una volta nel repository originale e una volta nel repository di cui è stato eseguito il rendering. Con il rendering automatico, le configurazioni sottoposte a rendering vengono generate da Config Sync e devi solo rivedere le modifiche alle configurazioni originali.
Obiettivi
- Configura il repository con configurazioni Kustomize che fanno riferimento a un grafico Helm standard per cert-manager. cert-manager è uno strumento per Kubernetes che ti aiuta a gestire i certificati.
- Visualizza l'anteprima e convalida le configurazioni che crei.
- Utilizza Config Sync per eseguire automaticamente il rendering del grafico e sincronizzare il cluster con il repository.
- Verifica che l'installazione sia stata eseguita correttamente.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Cloud de Confiance by S3NS:
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
- Crea o assicurati di avere accesso a un cluster che soddisfi i requisiti per Config Sync e utilizzi le seguenti impostazioni di Config Sync:
- Utilizza un repository non strutturato.
- Le API
RootSynceRepoSyncsono abilitate. spec.override.enableShellInRenderingè impostato sutrueper consentire a Config Sync di supportare il pull delle basi remote dai repository pubblici nel processo di rendering.
- Registra il cluster in un parco risorse.
- Installa lo strumento a riga di comando
nomos. Se hai già installato lo strumentonomos, assicurati di eseguire l'upgrade alla versione 1.9.0 o successive. - Installa Helm.
È anche utile avere una certa familiarità con Git, Kustomize e Helm.
Configura il repository
Le seguenti attività mostrano come preparare un repository Git con configurazioni che combinano configurazioni Kustomize con grafici Helm:
Crea un repository Git o assicurati di avere accesso a uno esistente. Poiché il tuo repository utilizza Kustomize e Helm, deve essere un repository non strutturato.
Nella radice del repository Git, crea un file denominato
kustomization.yamle incolla il seguente codice:# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: DeploymentQuesto file è un overlay Kustomize che punta alla base Kustomize. Questo overlay include una patch per la base del grafico Helm che aggiunge l'annotazione
client.lifecycle.config.k8s.io/mutation: ignorea tutti gli oggetti Deployment. L'annotazione fa sì che Config Sync ignori eventuali modifiche in conflitto a questo oggetto nel cluster dopo la sua creazione.Nel repository Git, crea una directory denominata
base:mkdir baseNella directory
base, crea un altro file denominatokustomization.yamle incolla il seguente codice:# ./base/kustomization.yaml helmCharts: - name: cert-manager repo: https://charts.jetstack.io version: v1.5.3 releaseName: my-cert-manager namespace: cert-managerQuesto file è la base Kustomize, che esegue il rendering del grafico Helm remoto.
Torna alla radice del repository Git, crea un file denominato
ignore-deployment-mutation-patch.yamle incolla il seguente codice:# ./ignore-deployment-mutation-patch.yaml apiVersion: apps/v1 kind: Deployment metadata: name: any annotations: client.lifecycle.config.k8s.io/mutation: ignoreQuesto file è una patch che viene applicata al grafico Helm di base. Aggiunge l'annotazione
client.lifecycle.config.k8s.io/mutation: ignorea tutti i deployment nella directory di base.Esegui il commit delle modifiche nel repository:
git add . git commit -m 'Set up manifests.' git push
Il repository di esempi contiene un esempio di come potrebbe apparire un repository di questo tipo.
Visualizzare l'anteprima e convalidare le configurazioni sottoposte a rendering
Prima che Config Sync esegua il rendering delle configurazioni e le sincronizzi con il cluster, assicurati
che le configurazioni siano accurate eseguendo nomos hydrate per visualizzare l'anteprima della configurazione
di cui è stato eseguito il rendering ed eseguendo nomos vet per verificare che il formato sia corretto.
Esegui il seguente comando
nomos hydratecon i seguenti flag:nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORYIn questo comando:
--source-format=unstructuredconsente anomos hydratedi funzionare su un repository non strutturato. Poiché utilizzi configurazioni Kustomize e grafici Helm, devi utilizzare un repository non strutturato e aggiungere questo flag.--output=OUTPUT_DIRECTORYconsente di definire un percorso per le configurazioni sottoposte a rendering. SostituisciOUTPUT_DIRECTORYcon la posizione in cui vuoi salvare l'output.
Controlla la sintassi e la validità delle configurazioni eseguendo
nomos vetcon i seguenti flag:nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORYIn questo comando:
--source-format=unstructuredconsente anomos vetdi funzionare su un repository non strutturato.--keep-output=truesalva le configurazioni sottoposte a rendering.--output=OUTPUT_DIRECTORYè il percorso delle configurazioni renderizzate.
Configurare la sincronizzazione dal repository Git
Ora che hai creato un repository con le configurazioni che vuoi utilizzare, puoi configurare la sincronizzazione dal cluster al repository.
Per configurare l'oggetto
RootSync, crea un fileroot-sync.yaml:# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: unstructured git: repo: YOUR_GIT_REPOSITORY branch: main auth: none override: enableShellInRendering: trueSostituisci
YOUR_GIT_REPOSITORYcon l'URL del tuo repository Git.Applica il file
root-sync.yamlal tuo cluster:kubectl apply -f root-sync.yaml
Verificare l'installazione
Dopo aver installato e configurato Config Sync, puoi verificare che l'installazione sia stata completata correttamente.
Verifica che non siano presenti altri errori utilizzando
nomos status:nomos statusOutput di esempio:
*CLUSTER_NAME -------------------- <root> https:/github.com/GoogleCloudPlatform/anthos-config-management-samples.git/helm-component/manifests@init SYNCED fd17dd5aVerifica se il componente Helm è stato installato correttamente:
kubectl get all -n cert-managerOutput di esempio:
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
Esegui la pulizia
Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
- In the Cloud de Confiance 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.
Elimina singole risorse
Elimina i manifest nel repository
Per evitare eliminazioni accidentali, Config Sync non consente di rimuovere tutti gli spazi dei nomi o le risorse con ambito cluster in un unico commit. Segui queste istruzioni per disinstallare correttamente il componente e rimuovere lo spazio dei nomi in commit separati:
Rimuovi il componente cert-manager dal repository:
git rm -rf manifests/cert-manager \ && git commit -m "uninstall cert-manager" \ && git push origin BRANCHSostituisci
BRANCHcon il ramo in cui hai creato il repository.Elimina lo spazio dei nomi cert-manager:
git rm manifests/namespace-cert-manager.yaml \ && git commit -m "remove the cert-manager namespace" \ && git push origin BRANCHVerifica che lo spazio dei nomi cert-manager non esista:
kubectl get namespace cert-namespaceOutput di esempio:
Error from server (NotFound): namespaces "cert-namespace" not found
Elimina il cluster
Per eliminare il cluster, completa i seguenti comandi:
Console
Per eliminare un cluster utilizzando la console Cloud de Confiance , completa le seguenti attività:
Nella console Cloud de Confiance , vai alla pagina GKE.
Accanto al cluster che vuoi eliminare, fai clic su more_vert Azioni e poi su delete Elimina.
Quando ti viene chiesto di confermare, fai di nuovo clic su Elimina.
gcloud
Per eliminare un cluster utilizzando Google Cloud CLI, esegui questo comando:
gcloud container clusters delete CLUSTER_NAME
Per saperne di più, consulta la
gcloud container clusters delete
documentazione.
Passaggi successivi
- Scopri di più sull'utilizzo dei repository non strutturati.