Guida rapida: sincronizza le configurazioni da un repository

In questo tutorial creerai un cluster della versione Google Kubernetes Engine (GKE) Enterprise e utilizzerai Config Sync per sincronizzare le configurazioni nel repository di esempi multi-repo.

Immagina che il tuo team di conformità abbia la responsabilità di garantire che tutti gli utenti dell'organizzazione seguano le regole interne. Per applicare queste regole, il team di conformità ha creato delle configurazioni che sono state aggiunte al repository di esempio. Ogni cluster della tua organizzazione deve essere sincronizzato con il repository; sei responsabile della creazione e della sincronizzazione dei cluster.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Assicurati di disporre dei seguenti ruoli nel progetto: GKE Hub Admin

    Verifica i ruoli

    1. Nella console Google Cloud, vai alla pagina IAM.

      Vai a IAM
    2. Seleziona il progetto.
    3. Nella colonna Entità, individua la riga contenente il tuo indirizzo email.

      Se il tuo indirizzo email non è in questa colonna, significa che non disponi di alcun ruolo.

    4. Nella colonna Ruolo per la riga contenente il tuo indirizzo email, controlla se l'elenco dei ruoli include quelli richiesti.

    Concedi i ruoli

    1. Nella console Google Cloud, vai alla pagina IAM.

      Vai a IAM
    2. Seleziona il progetto.
    3. Fai clic su Concedi l'accesso.
    4. Nel campo Nuove entità, inserisci il tuo indirizzo email.
    5. Nell'elenco Seleziona un ruolo, scegli un ruolo.
    6. Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ciascun ruolo aggiuntivo.
    7. Fai clic su Salva.

Crea un cluster

In questa sezione creerai un cluster da utilizzare in questo tutorial. Anche se in uno scenario reale è probabile che gestirai più cluster, per semplificare questo tutorial dovrai creare e gestire un solo cluster.

Per creare un cluster, completa i seguenti passaggi:

  1. Nella console Google Cloud, vai alla pagina Kubernetes Engine.

    Vai a Google Kubernetes Engine

  2. Se è la prima volta che utilizzi GKE, fai clic su Abilita per abilitare l'API Kubernetes Engine.

  3. Fai clic su Crea.

  4. Nella sezione Autopilot, seleziona Configura.

  5. Nella sezione Impostazioni di base del cluster, inserisci cs-cluster nel campo Nome e lascia tutti gli altri campi con le impostazioni predefinite consigliate.

  6. Fai clic su Crea. Si apre la pagina Cluster Kubernetes. La creazione del cluster richiede diversi minuti. Quando vedi un segno di spunta verde nella colonna Stato accanto al cluster, significa che è pronto.

Configura il cluster

Ora che hai creato un cluster, puoi configurare Config Sync per la sincronizzazione con le configurazioni nella directory config-sync-quickstart del repository di esempio.

Per configurare Config Sync nella console Google Cloud, completa questi passaggi:

  1. Nella console Google Cloud, abilita l'API GKE Hub.

    Vai all'API GKE Hub

  2. Nella console Google Cloud, vai alla pagina Configurazione nella sezione Funzionalità.

    Vai a Configurazione

  3. Fai clic su Installa Config Sync.

  4. Seleziona Upgrade automatici per consentire a Config Sync di eseguire automaticamente l'upgrade delle versioni.

  5. In Opzioni di installazione, seleziona Installa Config Sync su singoli cluster.

  6. Nella tabella Cluster disponibili, seleziona cs-cluster e fai clic su Installa Config Sync. Nella scheda Impostazioni, dopo alcuni minuti dovresti visualizzare lo stato Attivato per cs-cluster.

  7. Nella dashboard di Config Sync, fai clic su Esegui il deployment del pacchetto.

  8. Nella tabella Seleziona i cluster per il deployment dei pacchetti, seleziona cs-cluster e fai clic su Continua.

  9. Lascia selezionata l'opzione Pacchetto ospitato su Git e fai clic su Continua.

  10. Nel campo Nome pacchetto, inserisci sample-repository.

  11. Nel campo URL repository, inserisci https://github.com/GoogleCloudPlatform/anthos-config-management-samples.

  12. Nel campo Percorso, inserisci config-sync-quickstart/multirepo/root.

  13. Lascia invariati i valori predefiniti di tutti gli altri campi.

  14. Fai clic su Esegui il deployment del pacchetto.

    Dopo alcuni minuti, dovrebbe essere visualizzato Sincronizzato nella colonna Stato sincronizzazione per cs-cluster.

Ora che Config Sync è sincronizzato con un repository, riconcilia continuamente lo stato dei cluster con le configurazioni nel repository.

Esplora l'installazione di Config Sync

Nelle sezioni seguenti utilizzerai Cloud Shell per esplorare il repository da cui viene eseguita la sincronizzazione di cs-cluster e per confermare che è in corso il deployment delle configurazioni nel repository.

Apri Cloud Shell

  1. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Per utilizzare i comandi nelle sezioni seguenti, configura l'accesso da riga di comando di kubectl:

    gcloud container clusters get-credentials cs-cluster \
        --zone ZONE \
        --project PROJECT_ID
    

    Sostituisci quanto segue:

    • ZONE: la zona in cui hai creato il cluster
    • PROJECT_ID: il tuo ID progetto

    L'output è il seguente:

    Fetching cluster endpoint and auth data.
    kubeconfig entry generated for cs-cluster.
    

    Se ti viene richiesta l'autorizzazione, fai clic su Autorizza.

Esamina il cluster e il repository

La directory config-sync-quickstart include le configurazioni ClusterRole, CustomResourceDefinition, Rolebinding, Spazio dei nomi e RepoSync. Include anche le configurazioni per l'operatore Prometheus per il monitoraggio. Queste configurazioni vengono applicate non appena Config Sync viene configurato per leggere dal repository.

Per tutti gli oggetti gestiti da Config Sync, l'etichetta app.kubernetes.io/managed-by è impostata su configmanagement.gke.io. Puoi utilizzare questa etichetta per visualizzare gli oggetti gestiti.

Per elencare gli spazi dei nomi gestiti da Config Sync, esegui questo comando:

kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io

L'output è simile al seguente:

NAME         STATUS   AGE
gamestore    Active   58s
monitoring   Active   58s

Puoi accedere alla cartella /config-sync-quickstart/multirepo/ del repository in GitHub per esplorare le configurazioni che hanno causato la creazione di questi spazi dei nomi.

Puoi esaminare altri oggetti, come ClusterRole, Reposyncs, CRD e Rolebindings, allo stesso modo.

Controllare lo stato della sincronizzazione

Quando utilizzi Config Sync, puoi utilizzare lo strumento a riga di comando nomos. Questo strumento fornisce funzionalità aggiuntive per Config Sync.

In questa sezione, puoi verificare se Config Sync ha sincronizzato correttamente tutte le configurazioni nel cluster utilizzando il comando nomos status:

nomos status

L'output è simile al seguente:

*gke_PROJECT_ID_ZONE_cs-cluster
  --------------------
  <root>:root-sync                         https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main
  SYNCED @ 2023-02-03 16:58:42 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE    NAME                                                                                      STATUS    SOURCEHASH
                  clusterrole.rbac.authorization.k8s.io/namespace-reader                                    Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-acm                                      Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/prometheus-operator                                 Current   1fbab5c
                  clusterrole.rbac.authorization.k8s.io/webstore-admin                                      Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm                               Current   1fbab5c
                  clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator                          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com   Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com         Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/anvils.acme.com                             Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com           Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com                Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com       Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com          Current   1fbab5c
                  customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com                   Current   1fbab5c
                  namespace/gamestore                                                                       Current   1fbab5c
                  namespace/monitoring                                                                      Current   1fbab5c
     gamestore    reposync.configsync.gke.io/repo-sync                                                      Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-admin                                     Current   1fbab5c
     gamestore    rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin                            Current   1fbab5c
     monitoring   deployment.apps/prometheus-operator                                                       Current   1fbab5c
     monitoring   prometheus.monitoring.coreos.com/acm                                                      Current   1fbab5c
     monitoring   service/prometheus-acm                                                                    Current   1fbab5c
     monitoring   service/prometheus-operator                                                               Current   1fbab5c
     monitoring   serviceaccount/prometheus-acm                                                             Current   1fbab5c
     monitoring   serviceaccount/prometheus-operator                                                        Current   1fbab5c
     monitoring   servicemonitor.monitoring.coreos.com/acm-service                                          Current   1fbab5c
  --------------------
  gamestore:repo-sync                      https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main
  SYNCED @ 2023-02-03 16:58:51 +0000 UTC   1fbab5c90af9029b26451fec92e9900d8db23aee
  Managed resources:
     NAMESPACE   NAME                                 STATUS    SOURCEHASH
     gamestore   configmap/store-inventory            Current   1fbab5c
     gamestore   webstore.marketplace.com/gameplace   Current   1fbab5c

In questo output, puoi vedere che cs-cluster sta eseguendo correttamente la sincronizzazione da due repository. Inoltre, poiché tutte le risorse hanno lo stato Current, lo stato della risorsa corrisponde a quello desiderato.

Esegui la pulizia

  1. Vai al menu GKE nella console Google Cloud.

    Vai a GKE

  2. Accanto a cs-cluster, fai clic su Azioni e poi su Elimina.

  3. Quando ti viene chiesto di confermare, fai di nuovo clic su Elimina.

Passaggi successivi