Gestisci le risorse con Config Controller
Scopri come creare un'istanza di Config Controller preinstallata con Config Connector, Policy Controller e Config Sync. Scopri quindi come utilizzare l'istanza completando le attività seguenti:
- Utilizzare Config Connector per creare e gestire una risorsa Google Cloud.
- Creare un vincolo di Policy Controller per applicare un criterio e rilevare una violazione prima del deployment.
- Imposta GitOps configurando Config Sync per la sincronizzazione da un repository di esempio che contiene una risorsa Google Cloud.
Prima di iniziare
- 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.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Crea o seleziona un progetto Google Cloud.
-
Crea un progetto Google Cloud:
gcloud projects create PROJECT_ID
-
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
-
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud. Scopri come verificare se la fatturazione è abilitata per un progetto.
-
Abilita le API KRM, API GKE, Resource Manager e Utilizzo dei servizi.
gcloud services enable krmapihosting.googleapis.com
container.googleapis.com cloudresourcemanager.googleapis.com serviceusage.googleapis.com - Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Crea o seleziona un progetto Google Cloud.
-
Crea un progetto Google Cloud:
gcloud projects create PROJECT_ID
-
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
-
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud. Scopri come verificare se la fatturazione è abilitata per un progetto.
-
Abilita le API KRM, API GKE, Resource Manager e Utilizzo dei servizi.
gcloud services enable krmapihosting.googleapis.com
container.googleapis.com cloudresourcemanager.googleapis.com serviceusage.googleapis.com
Crea un'istanza di Config Controller
Nel terminale, crea un'istanza di Autopilot Config Controller:
gcloud anthos config controller create cc-example \ --location=us-central1 \ --full-management
Questa operazione può richiedere fino a 15 minuti.
L'output è il seguente:
Created instance [cc-example]. Fetching cluster endpoint and auth data. kubeconfig entry generated for krmapihost-cc-example.
Per configurare
kubectl
per comunicare con l'endpoint di Config Controller, ottieni le credenziali di autenticazione e le informazioni necessarie relative all'endpoint:gcloud anthos config controller get-credentials cc-example \ --location us-central1
Verifica che l'istanza sia stata creata visualizzando l'elenco di istanze di Config Controller:
gcloud anthos config controller list --location=us-central1
L'output è il seguente:
NAME LOCATION STATE cc-example us-central1 RUNNING
Concedi l'autorizzazione Config Controller
In questa sezione concederai a Config Controller l'autorizzazione per gestire le risorse Google Cloud:
Imposta una variabile di ambiente per l'indirizzo email del tuo account di servizio:
export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \ -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)"
Crea l'associazione dei criteri:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:${SA_EMAIL}" \ --role "roles/owner" \ --project PROJECT_ID
Sostituisci
PROJECT_ID
con l'ID progetto.L'output è simile al seguente:
Updated IAM policy for project [PROJECT_ID]. auditConfigs: - auditLogConfigs: - logType: ADMIN_READ - logType: DATA_READ - logType: DATA_WRITE service: gkehub.googleapis.com # Remainder of output omitted
Utilizza la tua istanza di Config Controller
Le seguenti sezioni descrivono i modi in cui puoi utilizzare l'istanza di Config Controller.
Crea una risorsa Google Cloud con Config Connector
Con la tua istanza di Config Controller, puoi sfruttare Config Connector per gestire molti servizi e risorse di Google Cloud utilizzando gli strumenti e le API di Kubernetes. In questa sezione utilizzerai Config Controller per creare una risorsa PubSubTopic
.
Per creare un argomento Pub/Sub utilizzando Config Connector, completa questi passaggi:
Utilizza Config Connector per abilitare l'API Pub/Sub:
Utilizzando l'editor di testo che preferisci, crea un file denominato
enable-pubsub.yaml
e copia al suo interno il seguente codice YAML:# enable-pubsub.yaml apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: pubsub.googleapis.com namespace: config-control spec: projectRef: external: projects/PROJECT_ID
Sostituisci
PROJECT_ID
con l'ID progetto.Per abilitare l'API Pub/Sub, applica il manifest al tuo cluster:
kubectl apply -f enable-pubsub.yaml
L'abilitazione di questa API potrebbe richiedere diversi minuti.
Utilizza Config Connector per creare un argomento Pub/Sub:
Crea un file denominato
pubsub-topic.yaml
e copia al suo interno il seguente codice YAML:# pubsub-topic.yaml apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: annotations: cnrm.cloud.google.com/project-id: PROJECT_ID labels: label-one: "value-one" name: example-topic namespace: config-control
Crea l'argomento Pub/Sub:
kubectl apply -f pubsub-topic.yaml
Verifica che Config Controller abbia creato la tua risorsa in Google Cloud visualizzando l'elenco di argomenti Pub/Sub:
gcloud pubsub topics list
L'output è simile al seguente:
--- name: projects/PROJECT_ID/topics/start-instance-event --- labels: label-one: value-one managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/example-topic
Applica un criterio a Policy Controller
L'istanza di Config Controller consente di utilizzare i vincoli di Policy Controller e Policy Controller. Come parte dell'installazione di Policy Controller, Config Controller installa automaticamente la libreria dei modelli di vincolo. Puoi utilizzare i modelli di questa libreria per applicare una serie di controlli di sicurezza e conformità comuni alle istanze di Config Controller.
In questa sezione creerai un vincolo utilizzando il modello di vincolo GCPStorageLocationConstraintV1
. Questo modello ti consente di limitare la località in cui puoi creare bucket Cloud Storage. Il vincolo creato utilizzando questo modello limita la località a us-central1
. Ti consigliamo di utilizzare questo vincolo per assicurarti che i tuoi bucket vengano creati in una regione che offre il miglior prezzo e migliori prestazioni.
Per creare il vincolo:
Crea un file denominato
bucket-constraint.yaml
e copia al suo interno il seguente codice YAML:# bucket-constraint.yaml apiVersion: constraints.gatekeeper.sh/v1beta1 kind: GCPStorageLocationConstraintV1 metadata: name: storage-only-in-us-central1 spec: match: kinds: - apiGroups: - storage.cnrm.cloud.google.com kinds: - StorageBucket parameters: locations: - us-central1
Crea il vincolo:
kubectl apply -f bucket-constraint.yaml
L'output è il seguente:
gcpstoragelocationconstraintv1.constraints.gatekeeper.sh/storage-only-in-us-central1 created`
Per dimostrare che il vincolo funziona, prova a utilizzare Config Connector per creare una risorsa StorageBucket in
asia-southeast1
:Crea un file denominato
asia-storage-bucket.yaml
e copia al suo interno il seguente codice YAML:# asia-storage-bucket.yaml apiVersion: storage.cnrm.cloud.google.com/v1beta1 kind: StorageBucket metadata: name: bucket-in-disallowed-location namespace: config-control spec: location: asia-southeast1
Prova a creare il bucket Cloud Storage:
kubectl apply -f asia-storage-bucket.yaml
L'output è il seguente:
Error from server (Forbidden): error when creating "STDIN": admission webhook "validation.gatekeeper.sh" denied the request: [storage-only-in-us-central1] Cloud Storage bucket <bucket-in-disallowed-location> uses a disallowed location <asia-southeast1>, allowed locations are ["us-central1"]
Configura GitOps con Config Sync
Config Sync è un servizio GitOps che consente di sincronizzare l'istanza di Config Controller con configurazioni, criteri e risorse Google Cloud archiviati in un repository Git, in un'immagine OCI o in un repository Helm. Poiché Config Sync riconcilia continuamente lo stato di Config Controller con le configurazioni dell'origine, puoi garantire che le istanze abbiano una configurazione coerente.
In questa sezione sincronizzi l'istanza di Config Controller con un
repository GitHub pubblico. Questo repository contiene un'altra risorsa PubSubTopic
. Se sincronizzi l'istanza da questo repository, la risorsa viene creata e applicata automaticamente all'istanza. Puoi scegliere di creare le tue risorse utilizzando Config Sync (anziché applicare direttamente la risorsa) se vuoi utilizzare un flusso di lavoro GitOps.
Per eseguire la sincronizzazione da GitHub, configura Cloud NAT. Devi eseguire questa operazione perché la tua istanza di Config Controller è supportata da un cluster GKE privato e i nodi cluster privato non hanno accesso a Internet in uscita:
Creare un router Cloud NAT. Il router è necessario per configurare il gateway NAT.
gcloud compute routers create cc-nat-router \ --network default \ --region us-central1
L'output è simile al seguente:
Creating router [cc-nat-router]...done. NAME REGION NETWORK cc-nat-router us-central1 default
Configura un gateway NAT sul router creato nel passaggio precedente:
gcloud compute routers nats create cc-nat-config \ --router-region us-central1 \ --router cc-nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
L'output è il seguente:
Creating NAT [cc-nat-config] in router [cc-nat-router]...done.
Per configurare l'istanza di Config Controller per la sincronizzazione da un repository di esempio, crea un file denominato
cc-rootsync.yaml
e copia al suo interno il seguente codice YAML:# cc-rootsync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: unstructured git: repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples branch: main dir: config-controller-quickstart auth: none
Applica la configurazione:
kubectl apply -f cc-rootsync.yaml
Dopo aver sincronizzato l'istanza dal repository, Config Sync crea l'argomento Pub/Sub e lo applica all'istanza di Config Controller.
Verifica che Config Sync stia sincronizzando il repository Git con l'istanza di Config Controller:
nomos status --contexts gke_PROJECT_ID_us-central1_krmapihost-cc-example
L'output è simile al seguente:
*gke_PROJECT_ID_us-central1_krmapihost-cc-example -------------------- <root>:root-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-controller-quickstart@main SYNCED @ 2023-01-10 18:31:02 +0000 UTC 715b4295d3eac07b057cce2543275c1ee104cad8 Managed resources: NAMESPACE NAME STATUS SOURCEHASH config-control pubsubtopic.pubsub.cnrm.cloud.google.com/pubsub-topic-sample-sync Current 715b429 config-control service.serviceusage.cnrm.cloud.google.com/pubsub.googleapis.com Current 715b429
Se non vedi questo output, attendi un paio di minuti e riprova.
Verifica che Config Controller abbia creato la risorsa:
gcloud pubsub topics list
L'output è simile al seguente:
name: projects/PROJECT_ID/topics/start-instance-event --- labels: managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/sample-topic --- labels: managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/pubsub-topic-sample-sync --- labels: label-one: value-one managed-by-cnrm: 'true' name: projects/PROJECT_ID/topics/example-topic
In questo output, puoi vedere l'istanza Pub/Sub che hai creato nella sezione Crea un'istanza di Config Controller e quella creata sincronizzando la tua istanza con un repository GitHub.
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 il progetto
Elimina un progetto Google Cloud:
gcloud projects delete PROJECT_ID
Elimina le singole risorse
Elimina la risorsa
PubSubTopic
di Config Connector:kubectl delete -f pubsub-topic.yaml
Elimina il vincolo di Policy Controller:
kubectl delete -f bucket-constraint.yaml
Elimina il router NAT:
gcloud compute routers delete cc-nat-router \ --project=PROJECT_ID \ --region=us-central1
Premi
y
quando richiesto.Elimina la risorsa Pub/Sub creata da Config Sync:
kubectl delete PubSubTopic pubsub-topic-sample-sync -n config-control
Elimina la risorsa RootSync:
kubectl delete rootsync root-sync -n config-management-system
Utilizzando il tuo editor di testo preferito, elimina tutti i file YAML che hai creato:
enable-pubsub.yaml
pubsub-topic.yaml
bucket-constraint.yaml
asia-storage-bucket.yaml
cc-rootsync.yaml
Elimina l'istanza di Config Controller:
gcloud anthos config controller delete --location=us-central1 cc-example
Premi
y
quando richiesto.
Passaggi successivi
- Scopri come configurare Config Controller.
- Scopri di più su Config Controller.