In questo tutorial, crei un cluster Google Kubernetes Engine (GKE) Enterprise Edition e utilizzi Config Sync per eseguire la sincronizzazione con le configurazioni nel repository di esempi multi-repo.
Immagina che il tuo team di conformità sia responsabile di garantire che tutti nella tua organizzazione rispettino le regole interne. Per applicare queste regole, il team di conformità ha creato configurazioni che ha aggiunto al repository di esempi. È necessario sincronizzare ogni cluster della tua organizzazione con il repository e sei responsabile della creazione e della sincronizzazione dei cluster.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
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.
-
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.
-
Make sure that you have the following role or roles on the project: GKE Hub Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
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.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Vai a IAM - Seleziona il progetto.
- Fai clic su Concedi accesso.
-
Nel campo Nuovi principali, inserisci il tuo identificatore utente. In genere si tratta dell'indirizzo email di un Account Google.
- Nell'elenco Seleziona un ruolo, seleziona un ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
- Fai clic su Salva.
Crea un cluster
In questa sezione crei un cluster da utilizzare in questo tutorial. Anche se in uno scenario reale probabilmente gestiresti più cluster, per semplificare questo tutorial crea e gestisci un solo cluster.
Per creare un cluster, completa i seguenti passaggi:
Nella console Google Cloud, vai alla pagina Kubernetes Engine.
Se utilizzi GKE per la prima volta, fai clic su Attiva per attivare l'API Kubernetes Engine.
Fai clic su add_box Crea.
Nella sezione Autopilot, seleziona Configura.
Nella sezione Nozioni di base sul cluster, inserisci
cs-cluster
nel campo Nome.Nella sezione Livello del cluster, seleziona Livello Enterprise. Questo è essenziale per Config Sync. Lascia invariati tutti gli altri campi con i valori predefiniti consigliati.
Fai clic su Crea. Viene visualizzata 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 in modo che sincronizzi le configurazioni nella directory
config-sync-quickstart
del repository di esempi.Per configurare Config Sync nella console Google Cloud, completa i seguenti passaggi:
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.
Nella sezione 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
.
Ora che Config Sync è sincronizzato con un repository, riconcilia continuamente lo stato dei cluster con le configurazioni nel repository.
Esplorare l'installazione di Config Sync
Nelle sezioni seguenti, utilizzerai Cloud Shell per esplorare il repository da cui
cs-cluster
esegue la sincronizzazione e verificare che le configurazioni al suo interno vengano implementate.Apri Cloud Shell
-
In the Google Cloud console, 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.
-
Per utilizzare i comandi nelle sezioni seguenti, configura l'
kubectl
accesso a 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 clusterPROJECT_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, Namespace e RepoSync. Include inoltre le configurazioni per l'operatore Prometheus per il monitoraggio. Queste configurazioni vengono applicate non appena Config Sync è configurato per leggere dal repository.Per tutti gli oggetti gestiti da Config Sync, l'etichetta
app.kubernetes.io/managed-by
è impostata suconfigmanagement.gke.io
. Puoi utilizzare questa etichetta per visualizzare gli oggetti gestiti.Per elencare gli spazi dei nomi gestiti da Config Sync, esegui il seguente 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 andare alla directory /config-sync-quickstart/multirepo/ del repository su GitHub per esplorare le configurazioni che hanno causato la creazione di questi spazi dei nomi.
Puoi esaminare altri oggetti, come ClusterRole, Reposync, CRD e Rolebindings, nello stesso modo.
Controllare lo stato della sincronizzazione
Quando utilizzi Config Sync, puoi utilizzare lo strumento a riga di comando
nomos
. Questo strumento offre funzionalità aggiuntive per Config Sync.In questa sezione, controlla se Config Sync ha sincronizzato correttamente tutte le configurazioni con il tuo 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
si sincronizza correttamente da due repository. Inoltre, poiché tutte le risorse hanno uno stato diCurrent
, lo stato della risorsa corrisponde a quello che vuoi.Esegui la pulizia
Vai al menu GKE nella console Google Cloud.
Accanto a
cs-cluster
, fai clic su more_vert Azioni e poi su delete Elimina.Quando ti viene chiesto di confermare, fai di nuovo clic su Elimina.
Passaggi successivi
- Scopri di più sulla convalida delle configurazioni.
-