Questa pagina spiega come configurare Config Controller.
Config Controller fornisce un piano di controllo gestito basato su Kubernetes. Inoltre, le istanze di Config Controller sono preinstallate con Policy Controller, Config Sync e Config Connector. Utilizzando questi componenti, puoi utilizzare gli strumenti e i workflow di Kubernetes per gestire Google Cloud le risorse e ottenere coerenza utilizzando un workflow GitOps. Per saperne di più, consulta la panoramica di Config Controller.
Se crei un'istanza di Config Controller per la prima volta, consulta Guida rapida: gestisci le risorse con Config Controller.
Limitazioni
- Poiché le istanze di Config Controller sono completamente gestite, non puoi registrarle in un parco risorse.
- Config Controller non supporta l'architettura Arm.
Prima di iniziare
Prima di configurare Config Controller, completa i seguenti passaggi:
- Installa e inizializza l'Google Cloud interfaccia a riga di comando, che fornisce Google Cloud CLI utilizzata in queste istruzioni. Se utilizzi Cloud Shell, Google Cloud CLI è già installata.
Poiché
kubectlnon è installato per impostazione predefinita dall' Google Cloud interfaccia a riga di comando, installalo:gcloud components install kubectlImposta il Google Cloud progetto in cui vuoi ospitare Config Controller:
gcloud config set project PROJECT_IDSostituisci
PROJECT_IDcon il Google Cloud progetto che ospiterà Config Controller.Abilita le API richieste:
gcloud services enable krmapihosting.googleapis.com \ container.googleapis.com \ cloudresourcemanager.googleapis.com \ serviceusage.googleapis.com
Crea un'istanza di Config Controller
Puoi creare un'istanza di Config Controller supportata da un cluster Standard o da un cluster Autopilot. Entrambi i tipi di cluster sono privati.
Seleziona un cluster standard se vuoi più opzioni di personalizzazione. Seleziona un cluster Autopilot se vuoi un'installazione più rapida, la scalabilità automatica orizzontale e verticale dei pod e funzionalità di sicurezza avanzate come Container-Optimized OS, Shielded GKE Nodes, Workload Identity Federation for GKE e Avvio protetto.
La creazione di un nuovo cluster può richiedere fino a 15 minuti. Se vuoi osservare cosa succede durante la creazione, puoi visualizzare Esplora log nella Google Cloud console.
Se riscontri errori durante la creazione, consulta Risoluzione dei problemi di Config Controller per indicazioni sulla risoluzione dei problemi comuni.
Crea un cluster Autopilot
Per creare un'istanza di Config Controller su un cluster Autopilot, esegui il comando seguente:
gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
--location=LOCATION \
--full-management
Sostituisci quanto segue:
CONFIG_CONTROLLER_NAME: il nome che vuoi assegnare all'istanza di Config Controller.LOCATION: la località in cui vuoi creare l'istanza di Config Controller, ad esempious-central1. Per un elenco delle località supportate, consulta Località.
Crea un cluster Standard
Per creare un'istanza di Config Controller su un cluster Standard, esegui il comando seguente:
gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
--location=LOCATION
Sostituisci quanto segue:
CONFIG_CONTROLLER_NAME: il nome che vuoi assegnare all'istanza di Config Controller.LOCATION: la località in cui vuoi creare l'istanza di Config Controller, ad esempious-central1. Per un elenco delle località supportate, consulta Località.
Puoi impostare più parametri facoltativi quando crei un'istanza di Config Controller standard. Per l'elenco completo delle opzioni, consulta la
gcloud anthos config controller create
documentazione.
Conferma l'istanza di Config Controller
Per verificare che l'istanza di Config Controller sia configurata, completa i seguenti passaggi:
Per verificare che le istanze di Config Controller siano state create, visualizza l'elenco delle istanze di Config Controller:
gcloud anthos config controller list --location=LOCATIONNella colonna dello stato dovrebbe essere visualizzato il valore
RUNNING. Se lo stato èCREATING, l'istanza di Config Controller è ancora in fase di creazione e devi continuare ad attendere. Se vediERROR, hai riscontrato un problema che non puoi risolvere autonomamente. Contatta Google Cloud l'assistenza per ricevere aiuto.Per comunicare con l'endpoint di Config Controller, recupera le credenziali e le informazioni sull'endpoint appropriate:
gcloud anthos config controller get-credentials CONFIG_CONTROLLER_NAME \ --location LOCATION
Utilizza l'istanza di Config Controller
Ora che hai creato un'istanza di Config Controller, puoi iniziare a utilizzare i componenti installati e completare le seguenti attività:
Utilizza Config Connector per creare Google Cloud risorse. Se hai risorse esistenti che vuoi utilizzare con Config Controller, scopri come acquisire una risorsa esistente. Google Cloud
Utilizza Policy Controller per applicare vincoli che impongono la conformità legale e gli standard di Kubernetes.
Dopo aver configurato Config Sync, nella sezione seguente, sincronizza l'istanza di Config Controller con le configurazioni (inclusi i vincoli di Policy Controller e le risorse di Config Connector) che sono archiviate in una fonte attendibile.
Per un esempio guidato che mostra come completare queste attività con Config Controller, consulta Guida rapida: gestisci le risorse con Config Controller.
Configura l'istanza di Config Controller
Le sezioni seguenti spiegano come configurare i componenti dell'istanza di Config Controller.
Configura Config Connector
Non devi gestire alcuna impostazione per l'installazione di Config Connector. Tuttavia, devi concedere a Config Controller le autorizzazioni per gestire Google Cloud risorse:
Imposta una variabile di ambiente per l'indirizzo email del account di servizio:
export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \ -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)"Crea l'associazione di policy:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:${SA_EMAIL}" \ --role "ROLE" \ --project PROJECT_IDSostituisci quanto segue:
PROJECT_ID: il tuo ID progettoROLE: un insieme di ruoli predefiniti o ruoli personalizzati che soddisfano le tue esigenze. In alternativa, puoi utilizzareroles/ownerper gli ambienti non di produzione. Per scoprire di più sulle autorizzazioni IAM di Config Controller, consulta Autorizzazioni IAM per Config Controller.
Se l'operazione precedente non riesce, controlla se i controller sono pronti:
kubectl wait pod --all --all-namespaces --for=condition=Ready
Dopo aver concesso queste autorizzazioni, puoi iniziare a creare Google Cloud le risorse.
Configura Policy Controller
Potresti dover aggiungere o aggiornare il criterio IAM per consentire a Policy Controller di inviare metriche.
Consenti a Policy Controller di inviare metriche eseguendo questo comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[gatekeeper-system/gatekeeper-admin]" \
--role=roles/monitoring.metricWriter
Sostituisci PROJECT_ID con l'ID progetto del cluster Google Cloud .
Configura Config Sync
Se vuoi che l'istanza di Config Controller esegua la sincronizzazione dalle configurazioni archiviate in una fonte attendibile, devi configurare Config Sync.
Se vuoi utilizzare Config Sync per creare risorse di Config Connector, assicurati di aver anche concesso a Config Controller l'autorizzazione per gestire le risorse.
Per configurare Config Sync, crea e modifica un oggetto RootSync:
Per eseguire la sincronizzazione da un repository esterno (ad esempio, GitHub), configura Cloud NAT con GKE. Devi farlo perché i nodi del cluster privato non hanno accesso a internet in uscita.
Salva uno dei seguenti manifest come
root-sync.yaml. Utilizza la versione del manifest corrispondente al tipo di origine delle configurazioni.Git
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: git sourceFormat: unstructured git: repo: ROOT_REPOSITORY revision: ROOT_REVISION branch: ROOT_BRANCH dir: ROOT_DIRECTORY auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL secretRef: name: ROOT_SECRET_NAME noSSLVerify: ROOT_NO_SSL_VERIFY caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAMESostituisci quanto segue:
ROOT_SYNC_NAME: aggiungi il nome dell'oggetto RootSync.ROOT_REPOSITORY: aggiungi l'URL del repository Git da utilizzare come repository radice. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio,https://github.com/GoogleCloudPlatform/anthos-config-management-samplesutilizza il protocollo HTTPS. Questo campo è obbligatorio.ROOT_REVISION: aggiungi la revisione Git (tag o hash) o il ramo da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èHEAD. Quando utilizzi un hash, deve essere un hash completo e non una forma abbreviata.ROOT_BRANCH: aggiungi il ramo del repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito èmaster. Per semplicità, ti consigliamo di utilizzare il camporevisionper specificare un nome di ramo. Se vengono specificati sia il camporevisionsia il campobranch,revisionha la precedenza subranch.ROOT_DIRECTORY: aggiungi il percorso nel repository Git alla directory radice che contiene la configurazione con cui vuoi eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito è la directory radice (/) del repository.ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:none: non utilizzare l'autenticazionessh: utilizza una coppia di chiavi SSHcookiefile: utilizza uncookiefiletoken: utilizza un tokengcpserviceaccount: utilizza un account di servizio Google per accedere a Cloud Source Repositories.gcenode: utilizza un account di servizio Google per accedere a Cloud Source Repositories. Seleziona questa opzione solo se Workload Identity Federation for GKE non è abilitato nel cluster.
Per saperne di più su questi tipi di autenticazione, consulta Concedere a Config Sync l'accesso in sola lettura a Git.
Questo campo è obbligatorio.
ROOT_EMAIL: se hai aggiuntogcpserviceaccountcomeROOT_AUTH_TYPE, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com.ROOT_SECRET_NAME: aggiungi il nome del secret. Se questo campo è impostato, devi aggiungere la chiave pubblica del secret al provider Git. Questo campo è facoltativo.ROOT_NO_SSL_VERIFY: per disattivare la verifica del certificato SSL, imposta questo campo sutrue. Il valore predefinito èfalse.ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del secret. Se questo campo è impostato, il provider Git deve utilizzare un certificato rilasciato da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA con una chiave denominatacert. Questo campo è facoltativo.Per scoprire di più su come configurare l'oggetto secret per il certificato CA, consulta Configurare l'autorità di certificazione.
Per una spiegazione dei campi e un elenco completo dei campi che puoi aggiungere al campo
spec, consulta Campi RootSync.Questo manifest crea un oggetto
RootSyncche utilizza Git come origine.OCI
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: oci sourceFormat: unstructured oci: image: ROOT_IMAGE dir: ROOT_DIRECTORY auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAMESostituisci quanto segue:
ROOT_SYNC_NAME: aggiungi il nome dell'oggetto RootSync.ROOT_IMAGE: l'URL dell'immagine OCI da utilizzare come repository radice, ad esempioLOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Per impostazione predefinita, l'immagine viene estratta dal taglatest, ma puoi estrarre le immagini anche perTAGoDIGEST. SpecificaTAGoDIGESTinPACKAGE_NAME:- Per estrarre per
TAG:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG - Per estrarre per
DIGEST:LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
- Per estrarre per
ROOT_DIRECTORY: aggiungi il percorso nel repository alla directory radice che contiene la configurazione con cui vuoi eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito è la directory radice (/) del repository.ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:none: non utilizzare l'autenticazionegcenode: utilizza il account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation for GKE non è abilitato nel cluster.gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.
Questo campo è obbligatorio.
ROOT_EMAIL: se hai aggiuntogcpserviceaccountcomeROOT_AUTH_TYPE, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com.ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del secret. Se questo campo è impostato, il provider OCI deve utilizzare un certificato rilasciato da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA con una chiave denominatacert. Questo campo è facoltativo.
Per scoprire di più su come configurare l'oggetto secret per il certificato CA, consulta Configurare l'autorità di certificazione.
Per una spiegazione dei campi e un elenco completo dei campi che puoi aggiungere al campo
spec, consulta Campi RootSync.Questo manifest crea un oggetto
RootSyncche utilizza un'immagine OCI come origine.Helm
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: ROOT_SYNC_NAME namespace: config-management-system spec: sourceType: helm sourceFormat: unstructured helm: repo: ROOT_HELM_REPOSITORY chart: HELM_CHART_NAME version: HELM_CHART_VERSION releaseName: HELM_RELEASE_NAME namespace: HELM_RELEASE_NAMESPACE values: foo: bar: VALUE_1 baz: - qux: VALUE_2 xyz: VALUE_3 includeCRDs: HELM_INCLUDE_CRDS auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL secretRef: name: ROOT_SECRET_NAME caCertSecretRef: name: ROOT_CA_CERT_SECRET_NAMESostituisci quanto segue:
ROOT_SYNC_NAME: aggiungi il nome dell'oggetto RootSync.ROOT_HELM_REPOSITORY: l'URL del repository Helm da utilizzare come repository radice. Puoi inserire gli URL utilizzando il protocollo HTTPS o SSH. Ad esempio,https://github.com/GoogleCloudPlatform/anthos-config-management-samplesutilizza il protocollo HTTPS. Questo campo è obbligatorio.HELM_CHART_NAME: aggiungi il nome del grafico Helm. Questo campo è obbligatorio.HELM_CHART_VERSION: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzata la versione più recente.HELM_RELEASE_NAME: il nome della release di Helm. Questo campo è facoltativo.HELM_RELEASE_NAMESPACE: lo spazio dei nomi di destinazione per una release. Imposta solo uno spazio dei nomi per le risorse che contengononamespace: {{ .Release.Namespace }}nei relativi modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinitoconfig-management-system.HELM_INCLUDE_CRDS: imposta sutruese vuoi che il modello Helm generi anche un CustomResourceDefinition. Questo campo è facoltativo. Se non viene specificato alcun valore, il valore predefinito èfalsee non verrà generato un CRD.VALUE: valori da utilizzare al posto dei valori predefiniti che accompagnano il grafico Helm. Formatta questo campo nello stesso modo del file values.yaml del grafico Helm. Questo campo è facoltativo.ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:none: non utilizzare l'autenticazionetoken: utilizza un nome utente e una password per accedere a un repository Helm privato.gcenode: utilizza il account di servizio predefinito di Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity Federation for GKE non è abilitato nel cluster.gcpserviceaccount: utilizza un account di servizio Google per accedere a un'immagine.
Questo campo è obbligatorio.
ROOT_EMAIL: se hai aggiuntogcpserviceaccountcomeROOT_AUTH_TYPE, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio,acm@PROJECT_ID.iam.gserviceaccount.com.ROOT_SECRET_NAME: aggiungi il nome del secret setokenèROOT_AUTH_TYPE. Questo campo è facoltativo.ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del secret. Se questo campo è impostato, il provider Helm deve utilizzare un certificato rilasciato da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA con una chiave denominatacert. Questo campo è facoltativo.
Per scoprire di più su come configurare l'oggetto secret per il certificato CA, consulta Configurare l'autorità di certificazione.
Per una spiegazione dei campi e un elenco completo dei campi che puoi aggiungere al campo
spec, consulta Campi RootSync.Questo manifest crea un oggetto
RootSyncche utilizza Helm come origine.Per creare la configurazione di Config Sync, crea un oggetto RootSync applicando il manifest:
kubectl apply -f root-sync.yamlPer verificare che le modifiche siano state applicate, visualizza l'oggetto RootSync:
kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
Esegui l'upgrade di Config Controller
Poiché Config Controller è un servizio gestito, Google esegue automaticamente l'upgrade. Per i dettagli sulle nuove funzionalità e per scoprire quali versioni di Config Sync, Policy Controller e Config Connector utilizza Config Controller, consulta le note di rilascio di Config Controller.
Elimina l'istanza di Config Controller
Se decidi di interrompere l'utilizzo di un'istanza di Config Controller, libera spazio per tutte le risorse di Config Connector create prima di eliminare il cluster Config Controller stesso.
Se elimini l'istanza di Config Controller senza prima eliminare le risorse di cui è stato eseguito il provisioning, le risorse rimangono in uno stato di abbandono. Le risorse esistono ancora in Google Cloud (e comportano addebiti di fatturazione), ma non vengono gestite dalla configurazione dichiarativa.
Dopo aver eliminato tutte le risorse, elimina il cluster Config Controller:
gcloud anthos config controller delete \
--location=LOCATION CONFIG_CONTROLLER_NAME
Considerazioni sulla produzione
Quando passi alla produzione, devi prima esaminare le considerazioni sull'alta affidabilità per Config Controller.
Passaggi successivi
- Scopri le best practice per la scalabilità di Config Controller
- Esegui il deployment di carichi di lavoro personalizzati sui cluster Config Controller
- Risolvi i problemi di Config Controller.
- Ricevi assistenza.
- Scopri di più sulla sincronizzazione di configurazioni e policy con Config Sync.
- Scopri di più sull' applicazione delle policy con Policy Controller.
- Scopri di più sulle risorse di Config Connector.