Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Configurazione di Config Controller

Questa pagina mostra come configurare Config Controller. Config Controller è un servizio ospitato che offre un endpoint API in grado di eseguire il provisioning, attivare e orchestrare le risorse Google Cloud come parte di Anthos Config Management. Per saperne di più su Config Controller, consulta la panoramica di Config Controller.

Prima di iniziare

Prima di configurare Config Controller, devi completare i seguenti passaggi:

  1. Installa e inizializza Google Cloud CLI, che fornisce i comandi gcloud, kubectl e nomos utilizzati in queste istruzioni. Se utilizzi Cloud Shell, l'Google Cloud CLI è preinstallata.

    kubectl non è installato per impostazione predefinita da Google Cloud CLI. Per installare kubectl, esegui questo comando:

    gcloud components install kubectl
    
  2. Imposta il progetto Google Cloud in cui verrà ospitato Config Controller:

    export PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

    Sostituisci PROJECT_ID con il progetto Google Cloud in cui verrà ospitato Config Controller.

  3. Per consentire a Config Connector di gestire i servizi nel tuo progetto, abilita l'API Service Usage:

    gcloud services enable serviceusage.googleapis.com
    
  4. Se non hai una rete predefinita nel progetto, creane una eseguendo questo comando:

    gcloud compute networks create default --subnet-mode=auto
    

    In alternativa, puoi selezionare una rete diversa utilizzando il flag --network nel comando gcloud anthos config controller create durante la configurazione di Config Controller.

Configurazione di Config Controller

Crea un Config Controller con i seguenti comandi dell'interfaccia a riga di comando gcloud:

  1. Abilitare i servizi nel progetto per utilizzare i comandi dell'interfaccia a riga di comando gcloud successivi:

    gcloud services enable krmapihosting.googleapis.com \
        container.googleapis.com \
        cloudresourcemanager.googleapis.com
    
  2. Crea la tua istanza di Config Controller. Questa operazione può richiedere più di 15 minuti. Puoi creare un'istanza di Config Controller supportata da un cluster standard Google Kubernetes Engine (GKE) o da un cluster GKE Autopilot (Anteprima).

    Standard

    Per creare un'istanza di Config Controller supportata da un cluster GKE standard privato, 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 al controller.
    • LOCATION: aggiungi una delle seguenti regioni:

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

      Non sono supportate altre regioni.

    Puoi impostare parametri facoltativi come --man-blocks, che ti consentono di specificare un intervallo CIDR per consentire l'accesso agli indirizzi IP in questi intervalli al piano di controllo Kubernetes. Per l'elenco completo delle opzioni, consulta la documentazione di gcloud anthos config controller create.

    Autopilot

    Per creare un'istanza di Config Controller supportata da un cluster GKE Autopilot privato, esegui il comando seguente:

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

    Sostituisci quanto segue:

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

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

      Non sono supportate altre regioni.

  3. Dopo la creazione, l'istanza viene visualizzata nell'elenco delle istanze. Per visualizzare l'elenco delle istanze, esegui il comando seguente:

    gcloud anthos config controller list --location=LOCATION
    
  4. Per applicare i manifest, autenticati con l'istanza:

    gcloud anthos config controller get-credentials CONFIG_CONTROLLER_NAME \
        --location LOCATION
    
  5. Concedi a Config Controller l'autorizzazione per gestire le risorse Google Cloud nel progetto:

    export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \
        -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)"
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member "serviceAccount:${SA_EMAIL}" \
        --role "roles/owner" \
        --project "${PROJECT_ID}"
    
  6. Per utilizzare la suite operativa di Google Cloud per monitorare Config Controller, concedi autorizzazioni aggiuntive all'account di servizio predefinito di Compute Engine:

    # Cloud Monitoring metrics permissions
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --role=roles/monitoring.metricWriter \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --role=roles/stackdriver.resourceMetadata.writer \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --role=roles/opsconfigmonitoring.resourceMetadata.writer \
    --condition=None --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
    
    # Cloud Logging permissions
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --role=roles/logging.logWriter \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
    
    # Cloud Trace permissions
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
    --role=roles/cloudtrace.agent \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"
    

    Sostituisci PROJECT_NUMBER con il numero del tuo progetto Google Cloud.

Esegui l'upgrade di Config Controller

Poiché Config Controller è un servizio gestito, Google esegue l'upgrade automatico. Per i dettagli sulle versioni incluse nei componenti e nelle nuove funzionalità, consulta le note di rilascio di Config Controller.

Gestisci le risorse Google Cloud con Config Controller

Dopo aver configurato Config Controller, puoi utilizzare Config Connector per gestire molti servizi e risorse di Google Cloud utilizzando gli strumenti e le API di Kubernetes. Per un elenco completo delle risorse che puoi gestire, consulta Risorse di Config Connector.

In questo esempio viene creato un repository in Cloud Source Repositories che puoi utilizzare nella sezione Configura GitOps.

  1. Crea un file denominato service.yaml e copia al suo interno il seguente file YAML:

    # service.yaml
    
    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      name: sourcerepo.googleapis.com
      namespace: config-control
    
  2. Applica il manifest e attendi di abilitare Cloud Source Repositories:

    kubectl apply -f service.yaml
    kubectl wait -f service.yaml --for=condition=Ready
    
  3. Crea un file denominato repo.yaml e copia al suo interno il seguente file YAML:

    # repo.yaml
    
    apiVersion: sourcerepo.cnrm.cloud.google.com/v1beta1
    kind: SourceRepoRepository
    metadata:
      name: REPO_NAME
      namespace: config-control
    

    Sostituisci REPO_NAME con il nome che vuoi assegnare a Cloud Source Repositories.

  4. Per creare il repository, applica il manifest:

    kubectl apply -f repo.yaml
    

Configura GitOps

Puoi configurare le configurazioni nel repository Git per il Config Controller utilizzando Config Sync. Nell'esempio di questa sezione, utilizzerai i Cloud Source Repositories creati nella sezione precedente.

  1. Crea un file denominato gitops-iam.yaml e copia al suo interno il seguente file YAML:

    # gitops-iam.yaml
    
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMServiceAccount
    metadata:
      name: config-sync-sa
      namespace: config-control
    spec:
      displayName: ConfigSync
    
    ---
    
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
      name: config-sync-wi
      namespace: config-control
    spec:
      member: serviceAccount:PROJECT_ID.svc.id.goog[config-management-system/root-reconciler]
      role: roles/iam.workloadIdentityUser
      resourceRef:
        apiVersion: iam.cnrm.cloud.google.com/v1beta1
        kind: IAMServiceAccount
        name: config-sync-sa
    
    ---
    
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
      name: allow-configsync-sa-read-csr
      namespace: config-control
    spec:
      member: serviceAccount:config-sync-sa@PROJECT_ID.iam.gserviceaccount.com
      role: roles/source.reader
      resourceRef:
        apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
        kind: Project
        external: projects/PROJECT_ID
    

    Sostituisci PROJECT_ID con l'ID progetto in cui è in esecuzione Config Controller.

  2. Per concedere a Config Sync l'accesso al repository, applica il manifest:

    kubectl apply -f gitops-iam.yaml
    
  3. Config Controller abilita automaticamente le API RootSync e RepoSync di Config Sync. Queste API ti consentono di accedere a funzionalità aggiuntive di Config Sync, come la sincronizzazione da più repository e la visualizzazione automatica delle configurazioni Kustomize e Helm.

    Se vuoi configurare Config Sync, crea un oggetto RootSync. Per creare questo oggetto, crea un file denominato root-sync.yaml e copia al suo interno il seguente testo:

    # root-sync.yaml
    
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: root-sync
      namespace: config-management-system
    spec:
      sourceFormat: unstructured
      git:
        repo: https://source.developers.google.com/p/PROJECT_ID/r/REPO_NAME
        branch: main
        dir: REPO_PATH
        auth: gcpserviceaccount
        gcpServiceAccountEmail: config-sync-sa@PROJECT_ID.iam.gserviceaccount.com
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto che contiene l'account di servizio e il repository Git.
    • REPO_NAME: il nome del repository Git da cui eseguire il pull della configurazione e osservare le modifiche.
    • REPO_PATH: il percorso della directory da cui eseguire la sincronizzazione, rispetto alla directory principale del repository Git. Il valore predefinito è /.

    Per scoprire di più sui campi in root-sync.yaml, consulta Campi RootSync e RepoSync.

  4. Per applicare la configurazione di Config Sync, attendi l'installazione dell'API RootSync nel cluster. Quindi, applica il manifest per creare un oggetto RootSync utilizzando l'API:

    kubectl wait --for condition=established --timeout=10s crd/rootsyncs.configsync.gke.io
    kubectl apply -f root-sync.yaml
    

Verifica l'esito positivo

Per verificare la configurazione iniziale, completa i seguenti passaggi:

  1. Verifica che tutti i controller siano stati configurati correttamente su Config Controller:

    kubectl wait pod --all --all-namespaces --for=condition=Ready
    
  2. Verifica che il repository Git sia sincronizzato con Config Controller con Config Sync usando il comando nomos o il comando gcloud alpha anthos config sync repo:

    nomos status --contexts $(kubectl config current-context)
    
    # or
    
    gcloud alpha anthos config sync repo list --targets config-controller
    

Elimina il tuo Config Controller

Se decidi di interrompere l'utilizzo di Config Controller, devi rimuovere tutte le risorse create. Devi prima rimuovere le risorse da Config Controller prima di eliminare lo stesso.

L'eliminazione di Config Controller senza prima eliminare le risorse di cui è stato eseguito il provisioning lascia le risorse in uno stato abbandonato. Le risorse esistono ancora in Google Cloud (e sono soggette a fatturazione), ma non sono gestite dalla configurazione dichiarativa.

Dopo aver eliminato tutte le risorse, puoi eliminare Config Controller utilizzando gcloud CLI:

gcloud anthos config controller delete --location=LOCATION CONFIG_CONTROLLER_NAME

Considerazioni sulla produzione

Quando vai in produzione, devi prima esaminare le considerazioni sull'alta disponibilità per Config Controller.

Passaggi successivi