Configurazione di Config Controller

Questa pagina mostra come configurare Config Controller.

Config Controller fornisce un piano di controllo gestito, basato su Kubernetes. Nel Inoltre, le istanze di Config Controller sono preinstallate Policy Controller, Config Sync e Config Connector. Utilizzando questi componenti, puoi sfruttare gli strumenti e i flussi di lavoro di Kubernetes per gestire Google Cloud le risorse e la coerenza con un flusso di lavoro GitOps. Per saperne di più, consulta Panoramica di Config Controller.

Se stai creando 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, registrali con un parco.

Prima di iniziare

Prima di configurare Config Controller, completa i seguenti passaggi:

  1. Installare e inizializzare Google Cloud interfaccia a riga di comando, che fornisce Google Cloud CLI utilizzato in queste instructions. Se utilizzi Cloud Shell Google Cloud CLI sia già installato.
  2. Perché kubectl non è installato per impostazione predefinita da Google Cloud interfaccia a riga di comando, installalo:

    gcloud components install kubectl
    
  3. Imposta il progetto Google Cloud in cui vuoi ospitare Config Controller:

    gcloud config set project PROJECT_ID
    

    Sostituisci PROJECT_ID con il progetto Google Cloud che ospiterà Config Controller.

  4. Abilita le API che hai bisogno:

    gcloud services enable krmapihosting.googleapis.com \
        anthos.googleapis.com  \
        cloudresourcemanager.googleapis.com \
        serviceusage.googleapis.com
    

Crea un'istanza Config Controller

Puoi creare un'istanza di Config Controller supportata da un'istanza Cluster standard o un Cluster Autopilot. Entrambi i tipi di cluster vengono private.

Seleziona un cluster standard se vuoi più opzioni di personalizzazione. Seleziona un'opzione Autopilot per un'installazione più rapida, in modalità orizzontale la scalabilità automatica pod verticale e funzionalità di sicurezza avanzate come Container-Optimized OS Nodi GKE schermati, Identità carico di lavoro e Avvio protetto.

  1. Crea un'istanza Config Controller:

    Standard

    Crea un'istanza di Config Controller supportata da un'istanza privata Cluster GKE standard:

    gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
        --location=LOCATION
    

    Sostituisci quanto segue:

    • CONFIG_CONTROLLER_NAME: il nome che vuoi per assegnare alla tua istanza Config Controller.
    • LOCATION: aggiungi una delle seguenti regioni:

      • us-central1
      • us-east1
      • us-east4
      • us-east5
      • us-west1
      • us-west2
      • us-west3
      • us-west4
      • us-south1
      • northamerica-northeast1
      • northamerica-northeast2
      • southamerica-west1
      • southamerica-east1
      • europe-north1
      • europe-west1
      • europe-west3
      • europe-west4
      • europe-west6
      • europe-west9
      • europe-west10
      • europe-west12
      • europe-central2
      • europe-southwest1
      • australia-southeast1
      • australia-southeast2
      • asia-east1
      • asia-east2
      • asia-northeast1
      • asia-northeast2
      • asia-northeast3
      • asia-southeast1
      • asia-southeast2
      • asia-south1
      • asia-south2
      • africa-south1
      • me-west1
      • me-central1

      Questa è la regione in cui è stata creata l'istanza Config Controller in. Non sono supportate altre regioni.

    Puoi impostare più parametri facoltativi quando crei un Config Controller. Per l'elenco completo delle opzioni, consulta gcloud anthos config controller create documentazione.

    Autopilot

    Per creare un'istanza di Config Controller supportata da un'istanza privata, Cluster GKE Autopilot, esegui questo comando:

    gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
        --location=LOCATION \
        --full-management
    

    Sostituisci quanto segue:

    • CONFIG_CONTROLLER_NAME: il nome che vuoi che vuoi dare al tuo controller.
    • LOCATION: aggiungi una delle seguenti regioni:

      • us-central1
      • us-east1
      • us-east4
      • us-east5
      • us-west2
      • northamerica-northeast1
      • northamerica-northeast2
      • europe-north1
      • europe-west1
      • europe-west3
      • europe-west6
      • australia-southeast1
      • australia-southeast2
      • asia-northeast1
      • asia-northeast2
      • asia-southeast1

      Non sono supportate altre regioni.

    Questa operazione può richiedere fino a 15 minuti. Se vuoi osservare di cosa succede durante la creazione, puoi visualizzare Esplora log nel nella console Google Cloud.

    Vai a Esplora log

    Se si verificano errori durante la creazione, consulta Risolvere i problemi di Config Controller per istruzioni sulla risoluzione dei problemi più comuni.

  2. Per verificare che le istanze di Config Controller siano state create, visualizza il delle istanze di Config Controller:

    gcloud anthos config controller list --location=LOCATION
    

    Nella colonna dello stato dovrebbe essere visualizzato il valore RUNNING. Se lo stato è CREATING, l'istanza di Config Controller è ancora in fase di creazione e dovresti continuare ad attendere. Se vedi ERROR, hai riscontrato un problema che non riesci a risolvere autonomamente. Contatta Google Cloud Assistenza per l'assistenza.

  3. Per comunicare con l'endpoint di Config Controller, ottieni il le credenziali e le informazioni sugli 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 Config Controller, puoi iniziare a utilizzare i componenti installati e completa le seguenti attività:

  • Utilizzare Config Connector per creare Google Cloud risorse. Se disponi di risorse Google Cloud esistenti che vuoi utilizzare con Config Controller, scopri di più Acquisizione di una risorsa esistente.

  • Utilizza Policy Controller per applicare vincoli che applicano la conformità normativa e gli standard Kubernetes.

  • Dopo configura Config Sync, nel seguente sincronizza l'istanza di Config Controller configurazioni (inclusi i vincoli di Policy Controller e le risorse di Config Connector) sono archiviati in una fonte di dati.

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 Config Controller

Le sezioni seguenti spiegano come configurare i componenti di Config Controller.

Configura Config Connector

Non è necessario gestire alcuna impostazione per l'installazione di Config Connector. Tuttavia, devi concedere a Config Controller le autorizzazioni per gestire Risorse Google Cloud:

  1. Imposta una variabile di ambiente per l'email del tuo account di servizio:

    export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \
        -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)"
    
  2. Crea l'associazione di criteri:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:${SA_EMAIL}" \
        --role "ROLE" \
        --project PROJECT_ID
    

    Sostituisci quanto segue:

    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 Google Cloud.

Configura Policy Controller

Potresti dover aggiungere o aggiornare il criterio IAM per consentire Policy Controller per 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 Google Cloud del cluster.

Configura Config Sync

Se vuoi che l'istanza di Config Controller si sincronizzi con le configurazioni archiviate in devi configurare Config Sync.

Se vuoi utilizzare Config Sync per creare risorse Config Connector, assicurati hai anche concesso a Config Controller l'autorizzazione a gestire le risorse.

Per configurare Config Sync, crea e modifica Oggetto RootSync:

  1. Per eseguire la sincronizzazione da un repository esterno (ad esempio GitHub), configurare Cloud NAT con GKE. È necessario farlo perché i nodi del cluster privato non hanno internet in uscita access.

  2. Salva uno dei seguenti manifest come root-sync.yaml. Utilizzare il file manifest che corrisponde al tipo di origine delle tue 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: ROOT_FORMAT
      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_NAME
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: aggiungi il nome del tuo sistema RootSync .
    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured poiché questo formato consente puoi organizzare le configurazioni nel modo che preferisci.
    • ROOT_REPOSITORY: aggiungi l'URL del repository Git a da usare come repository radice. Puoi inserire gli URL utilizzando il protocollo HTTPS HTTP(S) o SSH. Ad esempio, https://github.com/GoogleCloudPlatform/anthos-config-management-samples utilizza il protocollo HTTPS. Questo campo è obbligatorio.
    • ROOT_REVISION: aggiungi la revisione Git (tag o hash) da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito è HEAD. A partire da Config Sync versione 1.17.0, puoi anche specifica un nome ramo nel campo revision. Quando si utilizza un hash in versione 1.17.0 o successiva, deve essere un hash completo e non un abbreviata.
    • ROOT_BRANCH: aggiungi il ramo di il repository da cui eseguire la sincronizzazione. Questo campo è facoltativo e il valore predefinito è master. A partire da Config Sync versione 1.17.0, ti consigliamo di utilizzare il campo revision per specificare un nome ramo la semplicità. Se il campo revision e il campo branch sono entrambi specificato, revision ha la precedenza su branch.
    • ROOT_DIRECTORY: aggiungi il percorso nel repository Git a la directory principale che contiene la configurazione da sincronizzare a. Questo campo è facoltativo e il valore predefinito è la directory radice (/) di nel repository.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: non usare l'autenticazione
      • ssh: usa una coppia di chiavi SSH
      • cookiefile: usa un cookiefile
      • token: utilizza un token
      • gcpserviceaccount: usa un account di servizio Google per accedere a Cloud Source Repositories.
      • gcenode: utilizza un account di servizio Google per accedere a un Cloud Source Repositories. Seleziona questa opzione solo se Workload Identity non è abilitato nel tuo cluster.

      Per ulteriori informazioni su questi tipi di autenticazione, consulta Concessione dell'accesso a Config Sync di sola lettura a Git.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come tuo ROOT_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 tuo secret. Se questo , devi aggiungere la chiave pubblica del secret il provider Git. Questo campo è facoltativo.

    • ROOT_NO_SSL_VERIFY: per disattivare la verifica del certificato SSL, imposta questo campo su true. Il valore predefinito è false.

    • ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del tuo Secret. Se questo campo è impostato, il tuo provider Git deve utilizzare un'istanza certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

      Per saperne di più su come configurare l'oggetto Secret per la CA vedi Configurare l'operatore ConfigManagement per un'autorità di certificazione

    Per una spiegazione dei campi e un elenco completo dei campi che che è possibile aggiungere al campo spec, consulta la sezione Campi RootSync.

    Questo manifest crea un oggetto RootSync che 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: ROOT_FORMAT
      oci:
        image: ROOT_IMAGE
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: aggiungi il nome del tuo sistema RootSync .
    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured poiché questo formato consente puoi organizzare le configurazioni nel modo che preferisci.
    • ROOT_IMAGE: l'URL dell'immagine OCI da utilizzare come repository root, ad esempio LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Per impostazione predefinita, l'immagine viene estratta dal tag latest, ma puoi recuperare le immagini in base a TAG o DIGEST. Specifica TAG o DIGEST in PACKAGE_NAME:
      • Per eseguire il pull per TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Per eseguire il pull per DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • ROOT_DIRECTORY: aggiungi il percorso nel repository a la directory principale che contiene la configurazione da sincronizzare a. Questo campo è facoltativo e il valore predefinito è la directory radice (/) di nel repository.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: non usare l'autenticazione
      • gcenode: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity non è abilitato nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un dell'immagine.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come tuo ROOT_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 tuo Secret. Se questo campo è impostato, il provider OCI deve utilizzare un certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

    Per saperne di più su come configurare l'oggetto Secret per la CA vedi Configurare l'operatore ConfigManagement per un'autorità di certificazione

    Per una spiegazione dei campi e un elenco completo dei campi che che è possibile aggiungere al campo spec, consulta la sezione Campi RootSync.

    Questo file manifest crea un oggetto RootSync che 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: ROOT_FORMAT
      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_NAME
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: aggiungi il nome del tuo sistema RootSync .
    • ROOT_FORMAT: aggiungi unstructured per utilizzare un repository non strutturato o aggiungi hierarchy per utilizzare un repository gerarchico. Questi valori sono sensibili alle maiuscole. Questo campo è facoltativo e il valore predefinito è hierarchy. Ti consigliamo di aggiungere unstructured poiché questo formato consente puoi organizzare le configurazioni nel modo che preferisci.
    • ROOT_HELM_REPOSITORY: l'URL dell'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-samples utilizza il protocollo HTTPS protocollo. Questo campo è obbligatorio.
    • HELM_CHART_NAME: aggiungi il nome del tuo Helm grafico. Questo campo è obbligatorio.
    • HELM_CHART_VERSION: la versione del grafico. Questo campo è facoltativo. Se non viene specificato alcun valore, l'ultima versione è in uso.
    • HELM_RELEASE_NAME: il nome della release Helm. Questo campo è facoltativo.
    • HELM_RELEASE_NAMESPACE: lo spazio dei nomi di destinazione per una release. Imposta uno spazio dei nomi solo per le risorse che contengono namespace: {{ .Release.Namespace }} nei modelli. Questo campo è facoltativo. Se non viene specificato alcun valore, viene utilizzato lo spazio dei nomi predefinito config-management-system.
    • HELM_INCLUDE_CRDS: imposta su true se vuoi il modello Helm per generare anche una CustomResourceDefinition. Questo è facoltativo. Se non viene specificato alcun valore, il valore predefinito è false e non verrà generato alcun CRD.
    • VALUE: valori da utilizzare al posto dei valori predefiniti associati al grafico Helm. Formatta questo campo come quello del file helm chart's values.yaml. Questo campo è facoltativo.
    • ROOT_AUTH_TYPE: aggiungi uno dei seguenti tipi di autenticazione:

      • none: non usare l'autenticazione
      • token: usa un nome utente e una password per accedere a un Helm privato repository Git.
      • gcenode: utilizza Account di servizio predefinito Compute Engine per accedere a un'immagine in Artifact Registry. Seleziona questa opzione solo se Workload Identity non è abilitato nel tuo cluster.
      • gcpserviceaccount: utilizza un account di servizio Google per accedere a un dell'immagine.

      Questo campo è obbligatorio.

    • ROOT_EMAIL: se hai aggiunto gcpserviceaccount come tuo ROOT_AUTH_TYPE, aggiungi l'indirizzo email del tuo account di servizio Google. Ad esempio: acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: aggiungi nome del tuo secret se token è l'ROOT_AUTH_TYPE. Questo campo è facoltativo.

    • ROOT_CA_CERT_SECRET_NAME: aggiungi il nome del tuo Secret. Se questo campo è impostato, il provider Helm deve utilizzare un'istanza certificato emesso da questa autorità di certificazione (CA). Il secret deve contenere il certificato CA in una chiave denominata cert. Questo campo è facoltativo.

    Per saperne di più su come configurare l'oggetto Secret per la CA vedi Configurare l'operatore ConfigManagement per un'autorità di certificazione

    Per una spiegazione dei campi e un elenco completo dei campi che che è possibile aggiungere al campo spec, consulta la sezione Campi RootSync.

    Questo manifest crea un oggetto RootSync che utilizza Helm come origine.

  3. Per creare la configurazione Config Sync, crea un oggetto RootSync tramite applicando il manifest:

    kubectl apply -f root-sync.yaml
    
  4. Per 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 lo esegue automaticamente. Per maggiori dettagli sulle nuove funzionalità e per scoprire Le versioni Config Sync, Policy Controller e Config Connector utilizzate da Config Controller vedi il Note di rilascio di Config Controller.

Elimina l'istanza di Config Controller

Se decidi di interrompere l'utilizzo di un'istanza di Config Controller, esegui la pulizia di tutti Risorse di Config Connector create prima di eliminare Config Controller nel cluster stesso.

Eliminazione dell'istanza Config Controller senza prima eliminare di cui è stato eseguito il provisioning lascia le risorse in stato abbandonato. Le risorse esistono ancora in Google Cloud (e sono soggetti ad addebiti di fatturazione), ma non sono gestiti dalla configurazione dichiarativa.

Dopo aver eliminato tutte le risorse, elimina Config Controller cluster:

gcloud anthos config controller delete \
    --location=LOCATION CONFIG_CONTROLLER_NAME

Considerazioni sulla produzione

Quando passi in produzione, devi prima rivedere considerazioni sull'alta disponibilità per Config Controller.

Passaggi successivi