Erweiterte Installationsoptionen

Dieses Thema bietet zwei zusätzliche Installationsoptionen für die Installation von Config Connector in Ihrem Google Kubernetes Engine-Cluster (GKE):

  • Manuelle Installation: Die manuelle Installation bietet schnellere Updates als die Verwendung des Add-ons. Diese Methode bietet außerdem mehr Konfigurationsoptionen. Beispiel: Sie können das CPU-Limit des Config Connector-Operator erhöhen.
  • Namespaced-Modus: Diese Methode ist eine Erweiterung der Config Connector-Installation. Der Namespace-Modus unterstützt die Verwaltung mehrerer Projekte mit jeweils eigenen Google Cloud-Identitäten.

Weitere Informationen zu diesen Installationstypen finden Sie unter Installationstyp auswählen.

Config Connector-Operator manuell installieren

In folgenden Abschnitten erfahren Sie, wie Sie den Config Connector-Operator manuell installieren.

Hinweis

Führen Sie folgenden Schritte aus, bevor Sie den Config Connector-Operator manuell installieren:

Config Connector-Operator installieren

Config Connector verwendet einen Kubernetes-Operator, um seine Installation auf dem neuesten Stand zu halten. Führen Sie folgende Schritte aus, um diesen Operator zu installieren:

  1. Laden Sie die neueste Config Connector-Operator TAR-Datei herunter:

    gsutil cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
    
  2. Extrahieren Sie die TAR-Datei:

    tar zxvf release-bundle.tar.gz
    
  3. Installieren Sie den Config Connector-Operator in Ihrem Cluster:

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

Identität erstellen

Config Connector erstellt und verwaltet Google Cloud-Ressourcen. Dabei erfolgt die Authentifizierung über ein IAM-Dienstkonto (Identity and Access Management). Die Verknüpfung der IAM-Dienstkonten mit Kubernetes-Dienstkonten erfolgt per Workload Identity.

Führen Sie zum Erstellen der Identität folgende Schritte aus:

  1. IAM-Dienstkonto erstellen. Wenn Sie ein vorhandenes Dienstkonto verwenden möchten, können Sie dieses Konto verwenden und diesen Schritt überspringen.

    Zum Erstellen des Dienstkontos verwenden Sie folgenden Befehl:
      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    Ersetzen Sie SERVICE_ACCOUNT_NAME mit einem Namen für das Dienstkonto.
  2. Weitere Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.

  3. Gewähren Sie dem IAM-Dienstkonto erweiterte Berechtigungen für Ihr Projekt:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/owner"
    Ersetzen Sie Folgendes:
    • PROJECT_ID durch Ihre Projekt-ID,
    • SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos.
  4. Erstellen Sie eine IAM-Richtlinienbindung zwischen dem IAM-Dienstkonto und dem vordefinierten Kubernetes-Dienstkonto, das von Config Connector ausgeführt wird:
    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"
    Ersetzen Sie Folgendes:
    • SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos.
    • PROJECT_ID durch Ihre Projekt-ID,

Config Connector konfigurieren

Erstellen Sie zum Abschluss der Installation eine Konfigurationsdatei für die CustomResource ConfigConnector und wenden Sie diese mit dem Befehl kubectl apply an. Der Config Connector-Operator installiert CRDs und Config Connector-Komponenten von Google Cloud in Ihrem Cluster.

Führen Sie folgende Schritte aus, um den Operator zu konfigurieren:

  1. Kopieren Sie folgende YAML-Datei in eine Datei mit dem Namen 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"
    
    Ersetzen Sie Folgendes:
    • SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos.
    • PROJECT_ID durch Ihre Projekt-ID,
  2. Wenden Sie die Konfiguration mit kubectl apply auf Ihren Cluster an:
      kubectl apply -f configconnector.yaml

Speicherort für Ressourcen angeben

Config Connector kann Ressourcen nach Projekt, Ordner oder Organisation organisieren. Dies entspricht dem Organisieren von Ressourcen mit Google Cloud.

Bevor Sie mit Config Connector Ressourcen erstellen, müssen Sie festlegen, wo die Ressourcen angelegt werden sollen. Um zu ermitteln, wo eine Ressource erstellt werden soll, nutzt Config Connector eine Annotation in der Ressourcenkonfiguration oder in einem vorhandenen Namespace. Weitere Informationen finden Sie unter Ressourcen organisieren.

Wenn Sie zu diesem Zweck keinen Namespace haben, erstellen Sie einen mit kubectl.
kubectl create namespace NAMESPACE

Ersetzen Sie dabei NAMESPACE durch Ihren Namespace-Namen. Beispiel: config-connector.

Wählen Sie den Tab aus, in dem Config Connector Ressourcen anlegen soll.

Projekt

Führen Sie folgenden Befehl aus, um Ressourcen in einem bestimmten Projekt zu erstellen:

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

Ersetzen Sie Folgendes:

  • NAMESPACE durch Ihren Namespace-Namen.
  • PROJECT_ID durch Ihre Google Cloud-Projekt-ID.

Ordner

Führen Sie folgenden Befehl aus, um Ressourcen in einem bestimmten Ordner zu erstellen:

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

Ersetzen Sie Folgendes:

  • NAMESPACE durch Ihren Namespace-Namen.
  • FOLDER_ID mit Ihrer Google Cloud-Ordner-ID.

Organisation

Führen Sie folgenden Befehl aus, um Ressourcen in einer bestimmten Organisation zu erstellen:

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

Ersetzen Sie Folgendes:

  • NAMESPACE durch Ihren Namespace-Namen.
  • ORGANIZATION_ID durch Ihre Google Cloud-Organisations-ID.

Wenn Sie Ihren Namespace mit Annotationen versehen, erstellt Config Connector Ressourcen im entsprechenden Projekt, im entsprechenden Ordner oder in der entsprechenden Organisation. Weitere Informationen dazu, wie Config Connector Kubernetes-Namespaces nutzt, finden Sie unter Kubernetes-Namespaces und Google Cloud-Projekte.

Installation prüfen

Config Connector führt alle seine Komponenten in einem Namespace mit dem Namen cnrm-system aus. Mit dem folgenden Befehl können Sie prüfen, ob die Pods bereit sind:

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

Wenn Config Connector korrekt installiert ist, sieht die Ausgabe etwa so aus:

pod/cnrm-controller-manager-0 condition met

Config Connector aktualisieren

Laden Sie die neueste Version des Config Connector-Operators herunter und installieren Sie sie:

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

Config Connector deinstallieren

Entfernen Sie mit kubectl delete die Config Connector-CRDs und die Controllerkomponenten:

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

Führen Sie folgenden Befehl aus, um den Config Connector-Operator zu deinstallieren:

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

Config Connector mit dem Namespace-Modus installieren

In folgenden Abschnitten wird gezeigt, wie Sie den Namespace-Modus aktivieren.

Hinweis

Bevor Sie den Config Connector für die Ausführung im Namespace-Modus konfigurieren, müssen Sie das Config Connector GKE-Add-on aktivieren oder Config Connector manuell installiert haben.

Config Connector für die Ausführung im Namespaced-Modus konfigurieren

Führen Sie folgende Schritte aus, um den Namespace-Modus zu aktivieren:

  1. Kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen 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. Wenden Sie die Konfiguration mit kubectl apply auf Ihren Cluster an:

    kubectl apply -f configconnector.yaml
    

Config Connector zum Verwalten von Ressourcen in Ihren Namespaces konfigurieren

In folgenden Abschnitten wird das Google Cloud-Projekt, in dem Sie Config Connector installieren, als Hostprojekt oder HOST_PROJECT_ID bezeichnet. Die anderen Projekte, in denen Ressourcen verwaltet werden, werden als verwaltete Projekte oder MANAGED_PROJECT_ID bezeichnet. Dies können dieselben Projekte sein, wenn Sie Config Connector nur verwenden möchten, um Google Cloud-Ressourcen im selben Projekt wie Ihr Cluster zu erstellen.

Namespace erstellen

Sie können diesen Schritt überspringen, wenn Sie bereits einen Namespace haben, mit dem Sie Google Cloud-Ressourcen organisieren können.

Verwenden Sie kubectl, um einen neuen Namespace mit folgendem Befehl zu erstellen:

kubectl create namespace NAMESPACE

Ersetzen Sie NAMESPACE durch einen Namen für den Namespace.

Identität erstellen

Erstellen Sie ein IAM-Dienstkonto (Identity and Access Management) und eine Bindung zwischen dem IAM-Dienstkonto und dem Kubernetes-Dienstkonto von Config Connector:

  1. IAM-Dienstkonto erstellen. Wenn Sie bereits ein Dienstkonto haben, können Sie dieses verwenden, statt ein neues zu erstellen. Verwenden Sie gcloud, um das Dienstkonto mit folgendem Befehl zu erstellen:

    gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • NAMESPACE_GSA durch den Namen des Google-Dienstkontos (GSA, Google Service Account), das an Ihren Namespace gebunden ist.
    • HOST_PROJECT_ID ist die ID Ihres Hostprojekts.

    Weitere Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.

  2. Gewähren Sie dem IAM-Dienstkonto erweiterte Berechtigungen für Ihr verwaltetes Projekt.

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

    Ersetzen Sie Folgendes:

    • MANAGED_PROJECT_ID ist die ID Ihres verwalteten Projekts.
    • NAMESPACE_GSA durch den Namen des Google-Dienstkontos, das an Ihren Namespace gebunden ist.
    • HOST_PROJECT_ID ist die ID Ihres Hostprojekts.
  3. Erstellen Sie eine IAM-Richtlinienbindung zwischen dem IAM-Dienstkonto und dem Kubernetes-Dienstkonto von Config Connector. Mit dem folgenden gcloud-Befehl können Sie die Dienstkonten binden:

    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
    

    Ersetzen Sie Folgendes:

    • HOST_PROJECT_ID ist die ID Ihres Hostprojekts.
    • NAMESPACE_GSA durch den Namen des Google-Dienstkontos, das an Ihren Namespace gebunden ist.
    • NAMESPACE ist Ihr Namespace.
  4. Erteilen Sie dem IAM-Dienstkonto die Berechtigung, Prometheus-Messwerte in der Operations-Suite von Google Cloud in Ihrem Hostprojekt zu veröffentlichen.

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

    Ersetzen Sie Folgendes:

    • HOST_PROJECT_ID ist die ID Ihres Hostprojekts.
    • NAMESPACE_GSA durch den Namen des Google-Dienstkontos, das an Ihren Namespace gebunden ist.

Einen ConfigConnectorContext erstellen

Zum Erstellen von Google Cloud-Ressourcen müssen Sie Config Connector so konfigurieren, dass der Namespace überwacht wird. Fügen Sie dazu in den Namespace, den Sie verwenden möchten, ein ConfigConnectorContext-Objekt hinzu.

Führen Sie folgende Schritte aus, um eine ConfigConnectorContext zu erstellen.

  1. Kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen 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"
    

    Ersetzen Sie Folgendes:

    • Ersetzen Sie NAMESPACE durch den Namen Ihres Namespace:
    • NAMESPACE_GSA durch den Namen des Google-Dienstkontos, das an Ihren Namespace gebunden ist.
    • HOST_PROJECT_ID ist die ID Ihres Hostprojekts.
  2. Wenden Sie die Datei mit kubectl auf Ihren Cluster an:

    kubectl apply -f configconnectorcontext.yaml
    
  3. Prüfen Sie mit dem folgenden Befehl, ob der Config Connector-Operator ein Kubernetes-Dienstkonto für Ihren Namespace mit kubectl erstellt hat:

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

    Ersetzen Sie NAMESPACE durch den Namen Ihres Namespace:

  4. Prüfen Sie mit folgendem kubectl-Befehl, ob der Config Connector-Controller-Pod für Ihren Namespace ausgeführt wird:

    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
    

    Ersetzen Sie NAMESPACE durch den Namen Ihres Namespace:

    Wenn der Config Connector-Controller ausgeführt wird, sieht die Ausgabe in etwa so aus:

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

Config Connector konfigurieren, um Ressourcen in Ihrem Namespace nicht mehr zu verwalten

Wenn Sie den Config Connector so konfigurieren möchten, dass er Ihren Namespace nicht mehr verwaltet, entfernen Sie alle Config Connector-Ressourcen in Ihrem Namespace und löschen Sie ConfigConnectorContext in Ihrem Namespace.

Config Connector-Ressourcen in Ihrem Namespace entfernen

Entfernen Sie alle Config Connector-Ressourcen aus Ihrem Namespace, um das Entfernen von ConfigConnectorContext abzuschließen.

  1. Listen Sie für alle Config Connector-Ressourcen in Ihrem Namespace für jede benutzerdefinierte Ressourcendefinition von Config Connector alle Ressourcen auf.

    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
    

    Ersetzen Sie NAMESPACE durch den Namen Ihres Namespace:

  2. Wenn Sie alle Config Connector-Ressourcen entfernen möchten, führen Sie für jede Ressource in der Ausgabe des vorherigen Schritts einen Löschbefehl aus.

    kubectl delete -n NAMESPACE KIND NAME
    

    Dabei gilt:

    • NAMESPACE: der Name Ihres Namespace
    • KIND: Die im vorherigen Schritt gefundene Ressource
    • NAME: der Name der Ressource, die im vorherigen Schritt gefunden wurde

ConfigConnectorContext entfernen

Löschen Sie ConfigConnectorContext in Ihrem Namespace, um Config Connector so zu verwalten, dass die Config Connector-Ressourcen in Ihrem Namespace nicht mehr verwaltet werden.

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

Ersetzen Sie NAMESPACE durch den Namen Ihres Namespace:

Das Löschen von ConfigConnectorContext wird erst abgeschlossen, wenn alle Config Connector-Ressourcen aus Ihrem Namespace entfernt wurden.

Upgrade von Installationen ohne Betreiber

Config Connector Version 1.33.0 und höher unterstützt nur die Installation mit dem GKE-Add-on oder dem Operator.

Um ein Upgrade auf den Operator durchzuführen und alle Config Connector-Ressourcen beizubehalten, müssen Sie alle Config Connector-Systemkomponenten mit Ausnahme der CRDs entfernen und dann den Operator installieren.

  1. Führen Sie die folgenden Befehle aus, um Nicht-CRD-Komponenten vom Config Connector-System zu entfernen:

    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. Installieren Sie Config Connector mit dem GKE-Add-on oder dem Operator.

Vom Add-on zu einer manuellen Installation wechseln

Wenn es als Add-on installiert wird, ist die Version von Config Connector direkt mit der installierten GKE-Version verbunden.

Durch die manuelle Installation können Sie schnellere Updates mit manuellen Upgrades durchführen.

So wechseln Sie und bleiben alle Ressourcen sicher:

  1. Deaktivieren Sie das Add-on, ohne die Objekte ConfigConnector oder ConfigConnectorContext zu löschen:

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

    Ersetzen Sie CLUSTER_NAME durch den Namen des Clusters, auf dem Sie Config Connector installiert haben.

  2. Folgen Sie der Anleitung zum Installieren des manuellen Operators der gewünschten Version.

Fehlerbehebung

Der folgende Abschnitt enthält Tipps zur Fehlerbehebung für Ihre Config Connector-Installation.

Fehler bei Berechtigungen für Ressourcenabgleiche beheben

Wenn Config Connector die Ressourcen nicht erfolgreich abgleichen und die Logs die Fehlermeldung The caller does not have permission, forbidden. enthalten können, ist die Workload Identity in Ihrem GKE-Cluster und/oder Knotenpool möglicherweise nicht aktiviert.

Führen Sie zur Untersuchung die folgenden Schritte aus:

  1. Speichern Sie die folgende Pod-Konfiguration als wi-test.yaml:
    apiVersion: v1
    kind: Pod
    metadata:
      name: workload-identity-test
      namespace: cnrm-system
    spec:
      containers:
      - image: google/cloud-sdk:slim
        name: workload-identity-test
        command: ["sleep","infinity"]
      serviceAccountName: cnrm-controller-manager
    
  2. Erstellen Sie den Pod in Ihrem GKE-Cluster:
    kubectl apply -f wi-test.yaml
    
  3. Öffnen Sie eine interaktive Sitzung im Pod:
    kubectl exec -it workload-identity-test \
      --namespace cnrm-system \
      -- /bin/bash
    
  4. Listen Sie Ihre Identität auf:
    gcloud auth list
    
  5. Prüfen Sie, ob die aufgeführte Identität mit dem Google-Dienstkonto übereinstimmt, das an Ihre Ressourcen gebunden ist.

    Wenn stattdessen das Compute Engine-Standarddienstkonto angezeigt wird, ist Workload Identity für Ihren GKE-Cluster und/oder Ihren Knotenpool nicht aktiviert.

  6. Beenden Sie die interaktive Sitzung und löschen Sie dann den Pod aus Ihrem GKE-Cluster:
    kubectl delete pod workload-identity-test \
    --namespace cnrm-system
    

Nächste Schritte