Questo tutorial mostra come configurare Config Sync per Google Kubernetes Engine (GKE) in due ambienti, uno per lo sviluppo e uno per la produzione, utilizzando le best practice per Anthos Config Management.
In questo scenario, fai parte del team di amministrazione della piattaforma di Foo Corp. Il deployment delle applicazioni Foo Corp viene eseguito in GKE, con risorse suddivise in due progetti, dev
e prod
. Il progetto dev
contiene un cluster GKE di sviluppo, mentre il progetto prod
contiene il cluster GKE di produzione. L'obiettivo dell'amministratore della piattaforma è garantire che entrambi gli ambienti rimangano conformi ai criteri di Foo Corp e che le risorse di livello base, come gli spazi dei nomi e gli account di servizio Kubernetes, rimangano coerenti in entrambi gli ambienti.
Il seguente diagramma mostra una panoramica degli ambienti che hai configurato in questo tutorial:
Questo tutorial utilizza la funzionalità di rendering automatico in Config Sync per eseguire il rendering delle risorse sul cluster. Ciascuno dei cluster è configurato per la sincronizzazione da una directory che contiene un file di configurazione Kustomization, che attiva automaticamente il processo di rendering in Config Sync. Per ulteriori dettagli, consulta Utilizzare un repository con configurazioni Kustomize e grafici Helm.
Come mostrato nel diagramma precedente, in questo tutorial creerai le seguenti risorse:
- Due progetti Google Cloud che rappresentano gli ambienti di sviluppo e produzione.
- Due cluster GKE,
dev
eprod
, nei progetti separati, con Config Sync installato.
Architettura di repository
In questo tutorial, configurerai Config Sync per la sincronizzazione con le configurazioni della
directory config-source/
del repository di esempio di Anthos Config Management. Questa directory contiene le seguenti directory e file:
config-source/
├── base
│ ├── foo
│ │ ├── kustomization.yaml
│ │ ├── namespace.yaml
│ │ └── serviceaccount.yaml
│ ├── kustomization.yaml
│ ├── pod-creator-clusterrole.yaml
│ └── pod-creator-rolebinding.yaml
├── cloudbuild.yaml
├── overlays
│ ├── dev
│ │ └── kustomization.yaml
│ └── prod
│ └── kustomization.yaml
└── README.md
La directory config-source
include i manifest base/
e gli overlay Kustomize di dev/
e prod/
. Ogni directory contiene un file kustomization.yaml
, in cui sono elencati i file che Kustomize deve gestire e applicare al cluster.
In dev/kustomization.yaml
e prod/kustomization.yaml
viene definita una serie di patch. Queste patch manipolano le risorse base/
per quell'ambiente specifico.
Ad esempio, RoleBinding consente a tutti gli sviluppatori Foo Corp di eseguire il deployment di pod nel cluster di sviluppo, mentre RoleBinding consente solo a un agente di deployment continuo, deploy-bot@foo-corp.com
, di eseguire il deployment di pod in produzione:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
patches:
# ServiceAccount - make name unique per environ
- target:
kind: ServiceAccount
name: foo-ksa
patch: |-
- op: replace
path: /metadata/name
value: foo-ksa-dev
- op: replace
path: /metadata/namespace
value: foo-dev
# Pod creators - give all Foo Corp developers access
- target:
kind: RoleBinding
name: pod-creators
patch: |-
- op: replace
path: /subjects/0/name
value: developers-all@foo-corp.com
commonLabels:
environment: dev
Obiettivi
- Imposta Config Sync per eseguire il rendering e la sincronizzazione automatici della configurazione per i due ambienti separati.
Costi
Questo tutorial utilizza i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Al termine di questo tutorial, puoi evitare una fatturazione continua eliminando le risorse che hai creato. Per scoprire di più, vedi Pulizia.
Prima di iniziare
Prima di iniziare questo tutorial, assicurati di aver completato i seguenti passaggi:
Nella pagina del selettore dei progetti, nella console Google Cloud, scegli o crea due progetti Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
Esegui l'upgrade alla tua ultima versione di Google Cloud CLI.
Installa o esegui l'upgrade del comando
nomos
Crea e registra i tuoi cluster
Per concentrarti sul flusso di lavoro da utilizzare durante la configurazione di Config Sync per più ambienti, la directory multi-environments-kustomize
contiene script che puoi utilizzare per automatizzare la configurazione di Config Sync.
Clona il repository di esempio di Anthos Config Management:
git clone https://github.com/GoogleCloudPlatform/anthos-config-management-samples.git
Passa alla cartella che contiene le risorse necessarie per questo tutorial:
cd anthos-config-management-samples/multi-environments-kustomize/
Per eseguire gli script utilizzati in questo tutorial, imposta le seguenti variabili:
export DEV_PROJECT="DEV_PROJECT_ID" export PROD_PROJECT="PROD_PROJECT_ID" export DEV_CLUSTER_ZONE="DEV_CLUSTER_ZONE" export PROD_CLUSTER_ZONE="PROD_CLUSTER_ZONE" export CM_CONFIG_DIR="config-sync-rendering"
Sostituisci quanto segue:
DEV_PROJECT_ID
: l'ID del progetto Google Cloud che vuoi utilizzare come progetto di sviluppoPROD_PROJECT_ID
: l'ID del progetto Google Cloud che vuoi utilizzare come progetto di produzioneDEV_CLUSTER_ZONE
: la zona di Compute Engine in cui vuoi creare il cluster di sviluppo. Ad esempio:us-central1-c
.PROD_CLUSTER_ZONE
: la zona di Compute Engine in cui vuoi creare il tuo cluster di produzione
Per creare due cluster, esegui lo script
./create-clusters.sh
:./create-clusters.sh
Questo script crea un cluster GKE denominato
dev
nel progetto di sviluppo e un cluster GKE denominatoprod
nel progetto di produzione. Questo script abilita anche le API GKE e Anthos e si connette ai tuoi clusterdev
eprod
in modo che tu possa accedere alle loro API conkubectl
.Output di esempio:
kubeconfig entry generated for dev. Fetching cluster endpoint and auth data. kubeconfig entry generated for prod. ⭐️ Done creating clusters.
Per registrare i cluster in due parchi risorse Anthos separati, esegui lo script
register-clusters.sh
:./register-clusters.sh
Questo script crea un account di servizio Google Cloud e una chiave per la registrazione del cluster Anthos, quindi utilizza il comando
gcloud container fleet memberships register
per registrare i clusterdev
eprod
in Anthos nei propri progetti.Output di esempio:
Waiting for Feature Config Management to be created...done. ⭐️ Done registering clusters.
Configurazione di Config Sync
Ora che hai creato e registrato i tuoi cluster, puoi installare Config Sync e verificare l'installazione.
Installa Config Sync
Per installare Config Sync, sul cluster di sviluppo e produzione, esegui lo script install-config-sync.sh
:
./install-config-sync.sh
Output previsto:
🔁 Installing ConfigSync on the dev cluster...
Updated property [core/project].
Switched to context "DEV_CLUSTER".
Waiting for Feature Config Management to be updated...done.
🔁 Installing ConfigSync on the prod cluster...
Updated property [core/project].
Switched to context "PROD_CLUSTER".
Waiting for Feature Config Management to be updated...done.
È in corso la sincronizzazione di Config Sync con le configurazioni dei tuoi repository.
Verificare la configurazione
In questa sezione verificherai che i tuoi cluster siano sincronizzati con le configurazioni del tuo repository:
Per controllare lo stato dell'installazione di Config Sync, esegui il comando
nomos status
:nomos status
Dovresti vedere che sia i cluster di sviluppo che quelli di produzione sono ora sincronizzati con i rispettivi repository:
gke_DEV_PROJECT_ID_us-central1-c_dev -------------------- <root> https://github.com/GoogleCloudPlatform/anthos-config-management-samples/multi-environments-kustomize/config-source/overlays/dev@main SYNCED 8f2e196f Managed resources: NAMESPACE NAME STATUS clusterrole.rbac.authorization.k8s.io/pod-creator Current namespace/default Current namespace/foo Current default rolebinding.rbac.authorization.k8s.io/pod-creators Current foo serviceaccount/foo-ksa-dev Current *gke_PROD_PROJECT_ID_us-central1-c_prod -------------------- <root> https://github.com/GoogleCloudPlatform/anthos-config-management-samples/multi-environments-kustomize/config-source/overlays/prod@main SYNCED c91502ee Managed resources: NAMESPACE NAME STATUS clusterrole.rbac.authorization.k8s.io/pod-creator Current namespace/default Current namespace/foo Current default rolebinding.rbac.authorization.k8s.io/pod-creators Current foo serviceaccount/foo-ksa-prod Current ```
Usa
kubectl
per passare al cluster di sviluppo:kubectl config use-context "gke_${DEV_PROJECT}_${DEV_CLUSTER_ZONE}_dev"
Per verificare che le risorse siano sincronizzate, ottieni gli spazi dei nomi. Dovresti vedere lo spazio dei nomi
foo
.kubectl get namespace
Output di esempio:
NAME STATUS AGE config-management-monitoring Active 9m38s config-management-system Active 9m38s default Active 47h foo Active 9m5s kube-node-lease Active 47h kube-public Active 47h kube-system Active 47h resource-group-system Active 9m30s
Hai configurato il rendering automatico della configurazione per un ambiente di sviluppo e produzione in più progetti e ambienti Google Cloud.
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 tutte le risorse
Per eliminare le risorse che hai creato in questo tutorial, ma per mantenere intatti i progetti di sviluppo e produzione, esegui lo script di pulizia:
./cleanup.sh
Elimina i progetti
- In Google Cloud Console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Scopri di più sulle implementazioni sicure con Anthos Config Management
- Scopri come convalidare le app in base ai criteri aziendali in una pipeline CI
- Esplora le best practice per la gestione dei criteri con Anthos Config Management e GitLab
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Dai un'occhiata al nostro Cloud Architecture Center.