Installa Config Connector in modalità con spazio dei nomi


Questa pagina spiega come installare Config Connector in modalità con spazio dei nomi.

Per saperne di più sulle diverse opzioni di installazione, consulta Scegliere un tipo di installazione.

L'installazione in modalità con spazio dei nomi è un'estensione dell'installazione di Config Connector. La modalità Namepaced supporta più progetti, ciascuno con le proprie identità Google Cloud.

Prima di iniziare

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

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

Per abilitare la modalità con spazio dei nomi, completa i seguenti passaggi:

  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
      stateIntoSpec: Absent
    
  2. Applica la configurazione al cluster con kubectl apply:

    kubectl apply -f configconnector.yaml
    

Configura Config Connector per gestire le risorse nei tuoi 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 trattarsi dello stesso progetto se intendi utilizzare Config Connector solo per creare risorse Google Cloud nello stesso progetto del tuo 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.

Usa 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. Creare un account di servizio IAM. Se hai già un account di servizio, puoi utilizzarlo anziché 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 scoprire di più sulla creazione di account di servizio, consulta Creazione e gestione degli account di servizio.

  2. Concedi all'account di servizio IAM autorizzazioni elevate per il 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 allo spazio dei nomi.
    • HOST_PROJECT_ID con l'ID del progetto host.
  3. Creare un'associazione di criteri IAM tra l'account di servizio IAM e l'account di servizio Kubernetes di Config Connector. Puoi associare gli account di servizio eseguendo il seguente 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 allo spazio dei nomi.
    • NAMESPACE con il tuo spazio dei nomi.
  4. Concedi all'account di servizio IAM le autorizzazioni per pubblicare le metriche di Prometheus in Google Cloud Observability nel 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 allo spazio dei nomi.

Creazione di un ConfigConnectorContext

Per creare risorse Google Cloud, devi configurare Config Connector per controllare 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"
      stateIntoSpec: Absent
    

    Sostituisci quanto segue:

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

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

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

    Sostituisci NAMESPACE con il nome del tuo spazio dei nomi.

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

    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 del tuo 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 per non gestire più le risorse nel tuo spazio dei nomi

Per configurare Config Connector in modo che non gestisca 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 Config Connector dallo spazio dei nomi.

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

    kubectl get gcp -n NAMESPACE
    

    Sostituisci NAMESPACE con il nome del tuo spazio dei nomi.

  2. Per rimuovere tutte le risorse di Config Connector, esegui un comando di eliminazione 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 rilevata nel passaggio precedente
    • NAME: nome della risorsa rilevata nel passaggio precedente

Rimuovi il ConfigConnectorContext

Per configurare Config Connector in modo che non gestisca più le risorse 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 del tuo spazio dei nomi.

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

Disinstallazione di Config Connector

Non seguire questi passaggi per disinstallare un cluster Config Controller.

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

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

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

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

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

Passaggi successivi