Guida rapida: sincronizzazione delle configurazioni da un repository

In questo tutorial, creerai un cluster Google Kubernetes Engine (GKE) Enterprise e usa Config Sync per sincronizzare le configurazioni nel repository di esempi con più repository.

Immagina che il team responsabile della conformità abbia la responsabilità di assicurarsi che tutti della tua organizzazione segue regole interne. Per applicare queste regole, del team responsabile della conformità ha creato le configurazioni, che sono state aggiunte agli esempi repository Git. Ogni cluster della tua organizzazione deve sincronizzarsi con repository e tu 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  6. Make sure that you have the following role or roles on the project: GKE Hub Admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Vai a IAM
    2. Seleziona il progetto.
    3. Fai clic su Concedi l'accesso.
    4. Nel campo Nuove entità, inserisci l'identificatore utente. In genere si tratta dell'indirizzo email di un Account Google.

    5. Nell'elenco Seleziona un ruolo, seleziona un ruolo.
    6. Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungiamo ogni altro ruolo.
    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 probabilmente gestiresti più cluster. Per semplificare questo tutorial, dovrai creare e gestire un solo cluster.

    Per creare un cluster, completa questi passaggi:

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

      Vai a Google Kubernetes Engine

    2. Se utilizzi GKE per la prima volta, 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 in Nome. e lascia invariate le impostazioni predefinite consigliate per tutti gli altri campi.

    6. Fai clic su Crea. Si aprirà la pagina Cluster Kubernetes. it la creazione del cluster richiede alcuni minuti. Quando vedi un'icona verde segno di spunta 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 alle configurazioni della directory config-sync-quickstart del repository di esempi.

    Per configurare Config Sync sulla console Google Cloud, completa seguenti 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 Abilita Config Sync per eseguire automaticamente l'upgrade delle versioni.

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

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

    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 selezionato 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 il messaggio Sincronizzato in Stato sincronizzazione colonna per cs-cluster.

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

    Esplora l'installazione di Config Sync

    Nelle sezioni seguenti userai Cloud Shell per esplorare il repository cs-cluster sta eseguendo la sincronizzazione da e conferma che le configurazioni nel repository è in corso il deployment.

    Apri Cloud Shell

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

      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 ClusterRole, Configurazioni CustomResourceDefinition, Rolebinding, Spazio dei nomi e RepoSync. it include anche le configurazioni dell'operatore Prometheus per il monitoraggio. Queste configurazioni vengono applicate non appena Config Sync viene configurato su vengono lette dal repository.

    Tutti gli oggetti gestiti da Config Sync hanno Etichetta app.kubernetes.io/managed-by impostata su configmanagement.gke.io. Puoi utilizza 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 /config-sync-quickstart/multirepo/ del repository in GitHub per esplorare le configurazioni che ha causato la creazione di questi spazi dei nomi.

    Puoi esaminare altri oggetti, come ClusterRole, Reposyncs, CRD e Associazioni di ruoli, nello stesso modo.

    Controllare lo stato della sincronizzazione

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

    In questa sezione, verificherai 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 è la sincronizzazione da due repository. Inoltre, poiché tutte le risorse hanno uno stato di Current, lo stato della risorsa corrisponde a quello che vuoi.

    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