Opzioni di installazione avanzate

Questo argomento fornisce due opzioni di installazione aggiuntive per l'installazione di Config Connector nel cluster Google Kubernetes Engine (GKE):

  • Installazione manuale: l'installazione con il metodo manuale offre aggiornamenti più rapidi rispetto all'utilizzo del componente aggiuntivo. Questo metodo ti offre anche altre opzioni di configurazione. ad esempio puoi aumentare il limite di CPU del Config Connector Operator.
  • Modalità spazio dei nomi: questo metodo è un'estensione dell'installazione di Config Connector. La modalità con pacing dei nomi supporta la gestione di più progetti, ognuno con le proprie identità Google Cloud.

Per ulteriori informazioni su questi tipi di installazione, consulta la pagina Scegliere un tipo di installazione.

Installazione manuale dell'operatore Config Connector

Le sezioni seguenti mostrano come installare manualmente l'operatore Config Connector.

Prima di iniziare

Prima di installare manualmente l'operatore Config Connector, completa i seguenti passaggi:

Installazione dell'operatore Config Connector

Config Connector utilizza un operatore Kubernetes per mantenere aggiornata l'installazione. Per installare l'operatore, completa i passaggi seguenti:

  1. Scarica l'ultimo file tar dell'operatore di Config Connector:

    gsutil cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
    
  2. Estrai il file tar:

    tar zxvf release-bundle.tar.gz
    
  3. Installa l'operatore Config Connector sul tuo cluster:

    kubectl apply -f operator-system/configconnector-operator.yaml
    

Creazione di un'identità

Config Connector crea e gestisce le risorse Google Cloud mediante l'autenticazione con un account di servizio Identity and Access Management (IAM) e utilizzando WorkWork Identity di GKE per associare gli account di servizio IAM agli account di servizio Kubernetes.

Per creare l'identità:

  1. Crea un account di servizio IAM. Se vuoi usare un account di servizio esistente, puoi farlo e saltare questo passaggio.

    Per creare l'account di servizio, utilizza il comando seguente:
      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    Sostituisci SERVICE_ACCOUNT_NAME con un nome per il tuo account di servizio.
  2. Per scoprire di più sulla creazione di account di servizio, consulta la sezione Creare e gestire account di servizio.

  3. Assegna autorizzazioni elevate al progetto per l'account di servizio IAM:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/editor"
    Sostituisci quanto segue:
    • PROJECT_ID con l'ID progetto.
    • SERVICE_ACCOUNT_NAME con il nome del tuo account di servizio.
  4. Crea un'associazione dei criteri IAM tra l'account di servizio IAM e l'account di servizio Kubernetes predefinito eseguito da Config Connector:
    gcloud iam service-accounts add-iam-policy-binding \
    SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
        --role="roles/iam.workloadIdentityUser"
    Sostituisci quanto segue:
    • SERVICE_ACCOUNT_NAME con il nome del tuo account di servizio.
    • PROJECT_ID con l'ID progetto.

Configurazione di Config Connector

Per completare l'installazione, crea un file di configurazione per ConfigConnector CustomResource, quindi applicalo con il comando kubectl apply. L'operatore Config Connector installa i componenti CRD di risorse e Google Config Connector nel tuo cluster.

Per configurare l'operatore, procedi nel seguente modo:

  1. Copia il seguente file YAML in un file denominato configconnector.yaml:
    # configconnector.yaml
    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnector
    metadata:
      # the name is restricted to ensure that there is only one
      # ConfigConnector resource installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
     mode: cluster
     googleServiceAccount: "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
    
    Sostituisci quanto segue:
    • SERVICE_ACCOUNT_NAME con il nome del tuo account di servizio.
    • PROJECT_ID con l'ID progetto.
  2. Applica la configurazione al tuo cluster con kubectl apply:
      kubectl apply -f configconnector.yaml

Specificare dove creare le risorse

Config Connector può organizzare le risorse per progetto, cartella o organizzazione, esattamente come faresti per Google Cloud.

Prima di creare risorse con Config Connector, devi configurare la piattaforma in cui creare le risorse. Per determinare dove creare la risorsa, Config Connector utilizza un'annotazione nella configurazione della risorsa o in uno spazio dei nomi esistente. Per ulteriori informazioni, consulta la sezione Organizzare le risorse.

Se non hai uno spazio dei nomi a questo scopo, creane uno con kubectl.
kubectl create namespace NAMESPACE

Sostituisci NAMESPACE con il nome dello spazio dei nomi. Ad esempio config-connector.

Seleziona una scheda per scegliere dove creare le risorse Config Connector.

Progetto

Per creare le risorse in un determinato progetto, esegui il comando seguente:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID

Sostituisci quanto segue:

  • NAMESPACE con il nome del tuo spazio dei nomi.
  • PROJECT_ID con il tuo ID progetto Google Cloud.

Cartella

Per creare le risorse in una determinata cartella, esegui il comando seguente:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID

Sostituisci quanto segue:

  • NAMESPACE con il nome del tuo spazio dei nomi.
  • FOLDER_ID con il tuo ID cartella Google Cloud.

Organizzazione

Per creare le risorse in una determinata organizzazione, esegui il comando seguente:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID

Sostituisci quanto segue:

  • NAMESPACE con il nome del tuo spazio dei nomi.
  • ORGANIZATION_ID con il tuo ID organizzazione Google Cloud.

Quando annota lo spazio dei nomi, Config Connector crea risorse nel progetto, nella cartella o nell'organizzazione corrispondenti. Per saperne di più su come Config Connector utilizza gli spazi dei nomi Kubernetes, vedi Spazi dei nomi Kubernetes e progetti Google Cloud.

Verifica dell'installazione

Config Connector esegue tutti i suoi componenti in uno spazio dei nomi denominato cnrm-system. Puoi verificare che i pod siano pronti eseguendo questo comando:

kubectl wait -n cnrm-system \
      --for=condition=Ready pod --all

Se Config Connector è installato correttamente, l'output è simile al seguente:

pod/cnrm-controller-manager-0 condition met

Upgrade di Config Connector

Per scaricare e installare la versione più recente dell'operatore Config Connector:

gsutil cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml

Disinstallazione di Config Connector

Utilizza kubectl delete per rimuovere i CRD di Config Connector insieme ai componenti del controller:

kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
    --wait=true

Per disinstallare l'operatore Config Connector, esegui questo comando:

kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true

Installazione di Config Connector utilizzando la modalità con spazio dei nomi

Le seguenti sezioni spiegano come attivare la modalità con spazio dei nomi.

Prima di iniziare

Prima di configurare Config Connector per l'esecuzione in modalità con spazio dei nomi, assicurati di aver attivato il componente aggiuntivo Config Connector per GKE o l'operatore Config Connector installato manualmente.

Configurare Config Connector per l'esecuzione in modalità con spazio dei nomi

Per attivare la modalità con spazio dei nomi, procedi nel seguente modo:

  1. Copia il seguente manifest YAML in un file denominato configconnector.yaml:

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnector
    metadata:
      # the name is restricted to ensure that there is only ConfigConnector resource installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
     mode: namespaced
    
  2. Applica la configurazione al tuo cluster con kubectl apply:

    kubectl apply -f configconnector.yaml
    

Configura Config Connector per gestire le risorse negli spazi dei nomi

Nelle sezioni seguenti, il progetto Google Cloud in cui installi Config Connector è noto come progetto host o HOST_PROJECT_ID. Gli altri progetti in cui gestisci le risorse sono noti come progetti gestiti o MANAGED_PROJECT_ID. Potrebbe essere lo stesso progetto se intendi utilizzare Config Connector solo per creare risorse Google Cloud nello stesso progetto del cluster.

Creazione di uno spazio dei nomi

Puoi saltare questo passaggio se hai già uno spazio dei nomi da utilizzare per organizzare le risorse Google Cloud.

Utilizza kubectl per creare un nuovo spazio dei nomi eseguendo questo comando:

kubectl create namespace NAMESPACE

Sostituisci NAMESPACE con un nome per lo spazio dei nomi.

Creazione di un'identità

Crea un account di servizio Identity and Access Management (IAM) e crea un'associazione tra l'account di servizio IAM e l'account di servizio Kubernetes di Config Connector:

  1. Crea un account di servizio IAM. Se hai già un account di servizio, puoi utilizzarlo invece di crearne uno nuovo. Utilizza gcloud per creare l'account di servizio eseguendo questo comando:

    gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
    

    Sostituisci quanto segue:

    • NAMESPACE_GSA con il nome dell'account di servizio Google (GSA) associato allo spazio dei nomi.
    • HOST_PROJECT_ID con l'ID del progetto host.

    Per ulteriori informazioni sulla creazione degli account di servizio, consulta la sezione Creare e gestire account di servizio.

  2. Concedi all'account di servizio IAM autorizzazioni più elevate per il tuo progetto gestito.

    gcloud projects add-iam-policy-binding MANAGED_PROJECT_ID \
        --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/owner"
    

    Sostituisci quanto segue:

    • MANAGED_PROJECT_ID con l'ID del progetto gestito.
    • NAMESPACE_GSA con il nome dell'account di servizio Google associato al tuo spazio dei nomi.
    • HOST_PROJECT_ID con l'ID del progetto host.
  3. Crea un'associazione dei criteri IAM tra l'account di servizio IAM e l'account di servizio Kubernetes di Config Connector. Per associare gli account di servizio esegui questo comando gcloud:

    gcloud iam service-accounts add-iam-policy-binding \
    NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com \
        --member="serviceAccount:HOST_PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager-NAMESPACE]" \
        --role="roles/iam.workloadIdentityUser" \
        --project HOST_PROJECT_ID
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID con l'ID del progetto host.
    • NAMESPACE_GSA con il nome dell'account di servizio Google associato al tuo spazio dei nomi.
    • NAMESPACE con il tuo spazio dei nomi.
  4. Concedi all'account di servizio IAM le autorizzazioni per pubblicare le metriche Prometheus nella suite operativa di Google Cloud sul tuo progetto host.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID con l'ID del progetto host.
    • NAMESPACE_GSA con il nome dell'account di servizio Google associato al tuo spazio dei nomi.

Creazione di un oggetto ConfigConnectorContext

Per creare risorse Google Cloud, devi configurare Config Connector per visualizzare lo spazio dei nomi aggiungendo un oggetto ConfigConnectorContext nello spazio dei nomi che vuoi utilizzare.

Per creare un ConfigConnectorContext, completa i seguenti passaggi:

  1. Copia il seguente manifest YAML in un file denominato configconnectorcontext.yaml:

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnectorContext
    metadata:
      # you can only have one ConfigConnectorContext per namespace
      name: configconnectorcontext.core.cnrm.cloud.google.com
      namespace: NAMESPACE
    spec:
      googleServiceAccount: "NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com"
    

    Sostituisci quanto segue:

    • NAMESPACE con il nome del tuo spazio dei nomi.
    • NAMESPACE_GSA con il nome dell'account di servizio Google associato al tuo spazio dei nomi.
    • HOST_PROJECT_ID con l'ID del progetto host.
  2. Applica il file al tuo cluster con il kubectl:

    kubectl apply -f configconnectorcontext.yaml
    
  3. Verifica che l'operatore Config Connector abbia creato un account di servizio Kubernetes per il tuo spazio dei nomi con kubectl eseguendo il comando seguente:

    kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE  -n cnrm-system
    

    Sostituisci NAMESPACE con il nome dello spazio dei nomi.

  4. Verifica che il pod del controller Config Connector sia in esecuzione per lo spazio dei nomi con kubectl eseguendo il comando seguente:

    kubectl wait -n cnrm-system \
        --for=condition=Ready pod \
        -l cnrm.cloud.google.com/component=cnrm-controller-manager \
        -l cnrm.cloud.google.com/scoped-namespace=NAMESPACE
    

    Sostituisci NAMESPACE con il nome dello spazio dei nomi.

    Se il controller Config Connector è in esecuzione, l'output è simile al seguente:

    cnrm-controller-manager-abcdefghijk-0 condition met.
    

Configura Config Connector in modo che non gestisca più le risorse nello spazio dei nomi

Per configurare Config Connector in modo da non gestire più lo spazio dei nomi, rimuovi tutte le risorse di Config Connector nello spazio dei nomi ed elimina ConfigConnectorContext nello spazio dei nomi.

Rimuovi le risorse Config Connector nello spazio dei nomi

Per finalizzare la rimozione di ConfigConnectorContext, rimuovi tutte le risorse di Config Connector dallo spazio dei nomi.

  1. Per scoprire tutte le risorse di Config Connector nello spazio dei nomi, elenca tutte le risorse per ogni definizione della risorsa personalizzata Config Connector.

    kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true \
    -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -n 1 \
    kubectl get -o jsonpath='{range .items[*]}{" Kind: "}{@.kind}{"Name: "}{@.metadata.name}{"\n"}{end}' \
    --ignore-not-found -n NAMESPACE
    

    Sostituisci NAMESPACE con il nome dello spazio dei nomi.

  2. Per rimuovere tutte le risorse di Config Connector, esegui un comando delete per ogni risorsa nell'output del passaggio precedente.

    kubectl delete -n NAMESPACE KIND NAME
    

    Sostituisci quanto segue:

    • NAMESPACE: il nome dello spazio dei nomi
    • KIND: il tipo di risorsa rilevato nel passaggio precedente
    • NAME: il nome della risorsa rilevata nel passaggio precedente

Rimuovi il ConfigConnectorContext

Per configurare Config Connector in modo che non gestisca più le risorse di Config Connector nello spazio dei nomi, elimina ConfigConnectorContext nello spazio dei nomi.

  kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com

Sostituisci NAMESPACE con il nome dello spazio dei nomi.

L'eliminazione di ConfigConnectorContext non verrà finalizzata finché tutte le risorse di Config Connector non verranno rimosse dallo spazio dei nomi.

Disinstallazione di Config Connector

Utilizza kubectl delete per rimuovere i CRD di Config Connector insieme ai componenti del controller:

kubectl delete ConfigConnectorContext --all -A –wait=false

kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
    --wait=true

Per disinstallare l'operatore Config Connector, esegui questo comando:

kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true

Upgrade da installazioni non dell'operatore

Config Connector versione 1.33.0 e successive supporta solo l'installazione con il componente aggiuntivo GKE o con l'operatore.

Per eseguire l'upgrade all'operatore (e conservare tutte le risorse di Config Connector), devi rimuovere tutti i componenti di sistema di Config Connector tranne i CRD e quindi installare l'operatore.

  1. Esegui i comandi seguenti per rimuovere i componenti non CRD del sistema Config Connector:

    kubectl delete sts,deploy,po,svc,roles,clusterroles,clusterrolebindings --all-namespaces -l cnrm.cloud.google.com/system=true --wait=true
    kubectl delete validatingwebhookconfiguration abandon-on-uninstall.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete validatingwebhookconfiguration validating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete mutatingwebhookconfiguration mutating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    
  2. Installa Config Connector con il componente aggiuntivo GKE o l'operatore.

Passaggio dal componente aggiuntivo a un'installazione manuale

Se installata come componente aggiuntivo, la versione di Config Connector è direttamente collegata alla versione di GKE installata.

L'installazione manuale consente aggiornamenti più rapidi a scapito degli upgrade manuali.

Per passare alla sicurezza mantenendo tutte le risorse:

  1. Disattiva il componente aggiuntivo senza eliminare oggetti ConfigConnector o ConfigConnectorContext:

    gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLED
    

    Sostituisci CLUSTER_NAME con il nome del cluster su cui hai installato Config Connector.

  2. Segui le istruzioni per installare l'operatore manuale della versione che ti interessa.

Passaggi successivi