Questo tutorial mostra come configurare Config Sync per La versione Google Kubernetes Engine (GKE) Enterprise in due ambienti, uno per lo sviluppo e uno per lo sviluppo per la produzione, usando le best practice per Config Sync.
In questo scenario, fai parte di un team di amministrazione di piattaforma di Foo Corp. The Foo Corp
di applicazioni distribuite su GKE Enterprise con le risorse suddivise
due progetti, dev
e prod
. Il progetto dev
contiene uno sviluppo
GKE Enterprise e il progetto prod
contiene la versione di produzione
di un cluster GKE Enterprise. Il tuo obiettivo, in qualità di amministratore della piattaforma, è garantire
entrambi gli ambienti rimangono conformi alle politiche di Foo Corp e tale base
di archiviazione, come gli spazi dei nomi Kubernetes e gli account di servizio,
coerente in entrambi gli ambienti.
Il seguente diagramma mostra una panoramica degli ambienti che hai impostato in questo tutorial:
Questo tutorial utilizza la funzionalità di rendering automatico in Config Sync per eseguire il rendering delle risorse sul cluster. Ogni cluster è configurato sincronizzare da una directory che contiene un file di configurazione Kustomization, attiva automaticamente il processo di rendering in Config Sync. Per maggiori informazioni i dettagli, vedi Utilizza un repository con configurazioni Kustomize e grafici Helm.
Come mostrato nel diagramma precedente, in questo tutorial creerai quanto segue: di risorse:
- Due progetti Google Cloud che rappresentano il reparto di sviluppo e produzione ambienti cloud-native.
- Due cluster GKE Enterprise,
dev
eprod
, in progetti separati, con Config Sync installato.
Architettura del repository
In questo tutorial, configurerai Config Sync per la sincronizzazione con le configurazioni nel
Directory config-source/
del repository di esempi. Questa directory contiene
le directory e i file seguenti:
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/
, nonché i dev/
e
prod/
Overlay Kustomize. Ogni directory contiene un file kustomization.yaml
,
che elenca i file che Kustomize deve gestire e applicare al cluster.
In dev/kustomization.yaml
e prod/kustomization.yaml
una serie di patch
vengono definiti. Queste patch manipolano le risorse base/
per quella specifica
completamente gestito di Google Cloud.
Ad esempio, RoleBinding per sviluppatori consente a tutti gli sviluppatori Foo Corp di eseguire il deployment
il cluster dev, mentre il RoleBinding di produzione consente solo una
L'agente di deployment, deploy-bot@foo-corp.com
, per eseguire il deployment dei pod in produzione:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../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 in modo che esegua automaticamente il rendering e la sincronizzazione della configurazione per nei due ambienti separati.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Prima di iniziare
Prima di iniziare questo tutorial, assicurati di aver completato seguenti passaggi:
Nella pagina del selettore progetti della console Google Cloud, scegli o crea due progetti Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
Esegui l'upgrade di Google Cloud CLI alla versione più recente.
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
Config Sync per più ambienti,
multi-environments-kustomize
contiene script che puoi utilizzare per automatizzare la configurazione
Config Sync.
Clona il repository di esempio:
git clone https://github.com/GoogleCloudPlatform/anthos-config-management-samples.git
Vai alla cartella che contiene le risorse necessarie per 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 progetto dal Progetto Google Cloud che vuoi utilizzare come progetto di sviluppoPROD_PROJECT_ID
: l'ID progetto dal Progetto Google Cloud che vuoi utilizzare come progetto di produzioneDEV_CLUSTER_ZONE
: la zona di Compute Engine in cui vuoi creare il tuo cluster di sviluppo. Ad esempio:us-central1-c
.PROD_CLUSTER_ZONE
: la zona 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 Enterprise denominato
dev
in dev e un cluster GKE Enterprise denominatoprod
nel progetto di produzione. Questo script abilita anche l'API GKE Enterprise e si connette ai clusterdev
eprod
per consentirti di accedere alle relative 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 separati, 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 GKE Enterprise,
gcloud container fleet memberships register
per registrare il comandodev
eprod
cluster a GKE Enterprise nei rispettivi 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 verifica l'installazione.
Installazione di Config Sync
Per installare Config Sync, sui cluster di sviluppo e produzione, esegui
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.
Config Sync è ora in fase di sincronizzazione con le configurazioni nei tuoi repository.
Verifica la configurazione
In questa sezione verificherai che i cluster siano sincronizzati configurazioni nel tuo repository:
Per controllare lo stato dell'installazione di Config Sync, esegui il Comando
nomos status
:nomos status
Dovresti vedere che entrambi i cluster di sviluppo e produzione sono ora sincronizzati 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 viene visualizzato 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
Ora hai impostato 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, mantenendo sia la classe progetti di sviluppo e produzione intatti, esegui lo script di pulizia:
./cleanup.sh
Elimina i progetti
- Nella console Google Cloud, 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 Config Sync
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.