In questo tutorial, aggiungi al tuo repository configurazioni Kustomize che fanno riferimento ai grafici Helm e poi utilizzi Config Sync per sincronizzare il cluster con il repository.
Quando utilizzi Config Sync, le configurazioni Kustomize e i grafici Helm che inserisci nel tuo repository Git vengono visualizzati automaticamente. Il rendering automatico offre i seguenti vantaggi:
Non è più necessaria una pipeline di idratazione esterna. Senza il rendering automatico, devi eseguire il rendering manuale 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 e i grafici Helm originali e un altro repository Git con l'output generato dall'idratazione esterna. Devi quindi configurare Config Sync per eseguire la sincronizzazione dal repository Git con l'output visualizzato. Con il rendering automatico, devi solo gestire un repository con le configurazioni originali.
Il flusso di lavoro 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 di nuovo nel repository visualizzato. Con il rendering automatico, le configurazioni visualizzate vengono generate da Config Sync e devi solo esaminare le modifiche alle configurazioni originali.
Obiettivi
- Configura il repository con configurazioni Kustomize che fanno riferimento a un grafico Helm di uso comune per cert-manager. cert-manager è uno strumento per Kubernetes che ti aiuta a gestire i certificati.
- Visualizza l'anteprima e convalida le configurazioni create.
- Utilizza Config Sync per eseguire automaticamente il rendering del grafico e sincronizzare il cluster con il repository.
- Verifica che l'installazione sia andata a buon fine.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la sezione Pulizia.
Prima di iniziare
-
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.
- 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
RootSync
eRepoSync
sono abilitate. spec.override.enableShellInRendering
è impostato sutrue
per consentire a Config Sync di supportare il recupero delle basi remote dai repository pubblici durante il 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 eseguirne l'upgrade alla versione 1.9.0 o successiva. - Installa Helm.
È inoltre utile avere familiarità con Git, Kustomize e Helm.
Configura il tuo repository
Le seguenti attività mostrano come preparare un repository Git con configurazioni che combinano le configurazioni Kustomize con i grafici Helm:
Crea o assicurati di avere accesso a un repository Git. Poiché il tuo repository utilizza Kustomize e Helm, dovrebbe essere un repository non strutturato.
Nella directory principale del tuo repository Git, crea un file denominato
kustomization.yaml
e incolla il seguente codice:# ./kustomization.yaml resources: - base patches: - path: ignore-deployment-mutation-patch.yaml target: kind: Deployment
Questo file è un overlay Kustomize che rimanda alla base Kustomize. Questo overlay include una patch per la base del grafico Helm che aggiunge l'annotazione
client.lifecycle.config.k8s.io/mutation: ignore
a tutti gli oggetti Deployment. L'annotazione fa sì che Config Sync ignori eventuali modifiche in conflitto apportate a questo oggetto nel cluster dopo la sua creazione.Nel tuo repository Git, crea una directory denominata
base
:mkdir base
Nella directory
base
, crea un altro file denominatokustomization.yaml
e 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-manager
Questo file è la base di Kustomize, che esegue il rendering del grafico Helm remoto.
Torna alla radice del tuo repository Git, crea un file denominato
ignore-deployment-mutation-patch.yaml
e incolla il seguente codice:# ./ignore-deployment-mutation-patch.yaml apiVersion: apps/v1 kind: Deployment metadata: name: any annotations: client.lifecycle.config.k8s.io/mutation: ignore
Questo file è un patch che viene applicato al grafico Helm di base. Aggiunge l'annotazione
client.lifecycle.config.k8s.io/mutation: ignore
a 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 essere un repository di questo tipo.
Visualizza l'anteprima e convalida le configurazioni visualizzate
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 visualizzata ed eseguendo nomos vet
per verificare che il formato sia corretto.
Esegui il seguente
nomos hydrate
con i seguenti flag:nomos hydrate \ --source-format=unstructured \ --output=OUTPUT_DIRECTORY
In questo comando:
--source-format=unstructured
consente anomos hydrate
di lavorare su un repository non strutturato. Poiché utilizzi configurazioni Kustomize e grafici Helm, devi utilizzare un repository non strutturato e aggiungere questo flag.--output=OUTPUT_DIRECTORY
ti consente di definire un percorso per le configurazioni visualizzate. SostituisciOUTPUT_DIRECTORY
con la posizione in cui vuoi salvare l'output.
Controlla la sintassi e la validità delle configurazioni eseguendo
nomos vet
con i seguenti flag:nomos vet \ --source-format=unstructured \ --keep-output=true \ --output=OUTPUT_DIRECTORY
In questo comando:
--source-format=unstructured
consente anomos vet
di lavorare su un repository non strutturato.--keep-output=true
salva le configurazioni visualizzate.--output=OUTPUT_DIRECTORY
è il percorso delle configurazioni visualizzate.
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. Se hai già installato Config Sync, vai a Verificare lo stato della sincronizzazione.
Nella console Google Cloud, abilita l'API GKE Hub.
- Nella console Google Cloud, vai alla pagina Configurazione nella sezione Funzionalità.
Fai clic su add Installa Config Sync.
Seleziona Upgrade automatici per consentire a Config Sync di eseguire l'upgrade delle versioni automaticamente.
In Opzioni di installazione, seleziona Installa Config Sync su singoli cluster.
Nella tabella Cluster disponibili, seleziona
cs-cluster
e fai clic su Installa Config Sync. Nella scheda Impostazioni, dopo alcuni minuti dovresti vedere lo stato Attivato percs-cluster
.Nella dashboard di Config Sync, fai clic su Esegui il deployment del pacchetto.
Nella tabella Seleziona cluster per il deployment del pacchetto, seleziona
cs-cluster
e poi fai clic su Continua.Lascia selezionata l'opzione Pacchetto ospitato su Git e fai clic su Continua.
Nel campo Nome pacchetto, inserisci
sample-repository
.Nel campo URL repository, inserisci
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
.Nel campo Percorso, inserisci
config-sync-quickstart/multirepo/root
.Lascia invariati i valori predefiniti di tutti gli altri campi.
Fai clic su Esegui il deployment del pacchetto.
Dopo qualche minuto, dovresti vedere Sincronizzato nella colonna Stato sincronizzazione per
cs-cluster
.
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 status
Output di esempio:
*CLUSTER_NAME -------------------- <root> https:/github.com/GoogleCloudPlatform/anthos-config-management-samples.git/helm-component/manifests@init SYNCED fd17dd5a
Verifica se il componente Helm è stato installato correttamente:
kubectl get all -n cert-manager
Output 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 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.
Elimina singole risorse
Elimina i manifest nel repository
Per evitare l'eliminazione accidentale, Config Sync non ti consente di rimuovere tutti gli spazi dei nomi o le risorse a livello di cluster in un unico commit. Segui queste istruzioni per disinstallare il componente in modo corretto 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 BRANCH
Sostituisci
BRANCH
con il ramo in cui hai creato il repo.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 BRANCH
Verifica che lo spazio dei nomi cert-manager non esista:
kubectl get namespace cert-namespace
Output 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 Google Cloud, completa le seguenti attività:
Nella console Google Cloud, 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 l'interfaccia a riga di comando Google Cloud, esegui questo comando:
gcloud container clusters delete CLUSTER_NAME
Per saperne di più, consulta la documentazione di gcloud container clusters delete
.
Passaggi successivi
- Scopri di più sull'utilizzo dei repository non strutturati.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.