Config Connector installieren, aktualisieren und deinstallieren

In diesem Thema wird gezeigt, wie Sie Config Connector auf Ihrem Cluster installieren.

Hinweis

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

Mit den folgenden Methoden können Sie die gcloud-Einstellungen festlegen:

  • Verwenden Sie gcloud init, wenn Sie die Standardeinstellungen ansehen möchten.
  • Verwenden Sie gcloud config, um Ihre Projekt-ID, Zone und Region individuell festzulegen.

gcloud init verwenden

Wenn Sie die Fehlermeldung One of [--zone, --region] must be supplied: Please specify location erhalten, führen Sie diesen Abschnitt aus.

  1. Führen Sie gcloud init aus und folgen Sie der Anleitung:

    gcloud init

    Wenn Sie SSH auf einem Remote-Server verwenden, können Sie mit dem Flag --console-only verhindern, dass mit dem Befehl ein Browserfenster geöffnet wird:

    gcloud init --console-only
  2. Folgen Sie der Anleitung, um gcloud zur Verwendung Ihres Google Cloud-Kontos zu autorisieren.
  3. Erstellen Sie eine neue Konfiguration oder wählen Sie eine vorhandene aus.
  4. Wählen Sie ein Google Cloud-Projekt aus.
  5. Wählen Sie eine Compute Engine-Standardzone aus.

gcloud config verwenden

  • Geben Sie Ihre standardmäßige Projekt-ID an:
    gcloud config set project project-id
  • Wenn Sie mit zonalen Clustern arbeiten, legen Sie die Standardzone für Compute Engine fest:
    gcloud config set compute/zone compute-zone
  • Wenn Sie mit regionalen Clustern arbeiten, legen Sie die Standardregion für Compute Engine fest:
    gcloud config set compute/region compute-region
  • Aktualisieren Sie gcloud auf die neueste Version:
    gcloud components update
  • Wählen Sie ein Google Cloud-Projekt aus, in dem Sie Config Connector installieren möchten.

Berechtigungen

Wenn Sie Config Connector installieren, gewähren Sie einem Google Cloud-Dienstkonto Berechtigungen zur Identitäts- und Zugriffsverwaltung. Weitere Informationen zu Berechtigungen finden Sie unter IAM-Berechtigungen für Config Connector.

Ihren Installationstyp auswählen

Sie können Config Connector auf eine der folgenden Arten installieren:

  • Den Config Connector-Add-on mit Workload Identity nutzen
  • Manuell nutzen mithilfe einer GKE-E Workload Identity,
  • Manuell mit Google Cloud Identity und Dienstkonto nutzen oder
  • Manuell im Namespace-Modus zur Unterstützung der Verwaltung mehrerer Projekte mit jeweils eigenen Google Cloud-Identitäten

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

Wählen Sie unten einen Tab aus, um Ihren Installationstyp auszuwählen.

Add-on

Sie wenden das Config Connector-Add-on durch Erstellen eines neuen Clusters oder durch Aktivieren eines vorhandenen Clusters an.

Anforderungen

Das Config Connector-Add-on erfordert folgende GKE-Version:

  • 1.15.11-gke.5 und höher
  • 1.16.8-gke.8 und höher
  • 1.17.4-gke.5 und höher

Außerdem müssen für den Cluster Workload Identity und das Kubernetes Engine Monitoring aktiviert sein.

Neuen Cluster mit aktiviertem Config Connector-Add-on erstellen

Sie können einen GKE-Cluster mit gcloud oder mit der Google Cloud Console erstellen. In dieser Anleitung wird ein neuer Cluster mit einem Workload Identity-Pool und mit Kubernetes Engine Monitoring erstellt.

Nach der Installation des Config Connector-Add-ons konfigurieren Sie Ihre Google-Dienstkonten und Namespaces.

gcloud

Zum Erstellen eines Clusters mit gcloud, führen Sie folgenden Befehl aus:

gcloud container clusters create [CLUSTER_NAME] \
  --release-channel [CHANNEL] --addons ConfigConnector \
  --workload-pool=[PROJECT_ID].svc.id.goog --enable-stackdriver-kubernetes

Dabei gilt:

  • [CLUSTER_NAME] ist der Name des GKE-Clusters.
  • [CHANNEL] ist ein GKE-Releasekanal, rapid und regular werden unterstützt.
  • [PROJECT_ID] ist Ihre Google Cloud-Projekt-ID.

Cloud Console

So erstellen Sie einen Cluster mit der Google Cloud Console:

  1. Rufen Sie in der Cloud Console das Kubernetes Engine-Menü auf.

    Zum Google Kubernetes Engine-Menü

  2. Klicken Sie auf Cluster hinzufügen und dann auf Cluster erstellen. Der Bildschirm Kubernetes-Cluster erstellen wird angezeigt.

  3. Geben Sie einen Namen für Ihren Cluster ein.

  4. Wählen Sie eine unterstützte Masterversion aus.

  5. Konfigurieren Sie den Cluster nach Bedarf.

  6. Klicken Sie im Navigationsbereich unter Cluster auf Sicherheit.

  7. Klicken Sie das Kästchen Workload Identity aktivieren an.

  8. Klicken Sie im Navigationsbereich links unter Cluster auf Features.

  9. Klicken Sie auf das Kästchen Config Connector aktivieren.

  10. Klicken Sie auf Erstellen.

Wenn Sie diese Aufgabe abgeschlossen haben, fahren Sie mit Config Connector-Add-on konfigurieren fort.

Config Connector-Add-on für einen vorhandenen Cluster aktivieren

Sie können das Config Connector-Add-on in einem GKE-Cluster mit gcloud oder mit der Google Cloud Console aktivieren.

Hinweis
  • Der Cluster muss die Anforderungen für das Config Connector-Add-on erfüllen.
  • Richten Sie Workload Identity in dem Cluster ein, in dem Sie Config Connector installieren.
Config Connector-Add-on aktivieren

Sie können das Config Connector-Add-on in einem vorhandenen GKE-Cluster mit gcloud oder mit der Google Cloud Console aktivieren.

Nach der Installation des Config Connector-Add-ons konfigurieren Sie die Config Connector-Installation mit Ihren Google-Dienstkonten und mit Ihren Namespaces.

gcloud

Um das Config Connector-Add-on in einem vorhandenen GKE-Cluster mit gcloud zu aktivieren, führen Sie folgenden Befehl aus:

gcloud container clusters update [CLUSTER_NAME] --update-addons ConfigConnector=ENABLED

Ersetzen Sie dabei [CLUSTER_NAME] durch den Namen Ihres GKE-Clusters.

Cloud Console

  1. Rufen Sie in der Cloud Console das Kubernetes Engine-Menü auf.

    Zum Google Kubernetes Engine-Menü

  2. Wählen Sie den Cluster aus, in dem Sie Config Connector installieren möchten. Der Bildschirm "Clusterdetails" wird angezeigt.

  3. Klicken Sie auf Bearbeiten.

  4. Klicken Sie auf Add-ons. Das Menü wird maximiert.

  5. Wählen Sie unter "Config Connector" die Option Aktiviert aus.

  6. Klicken Sie auf Speichern, um Ihren Cluster zu aktualisieren.

Wenn Sie diese Aufgabe abgeschlossen haben, fahren Sie mit Config Connector-Add-on konfigurieren fort.

Installation des Config Connector-Operators prüfen

Das Config Connector-Add-on installiert einen Kubernetes-Operator, der Config Connector konfiguriert. Zum Prüfen des Status Ihrer Config Connector-Operator-Installation führen Sie den folgenden kubectl-Befehl aus:

gcloud

kubectl wait pod/configconnector-operator-0 -n configconnector-operator-system --for=condition=Initialized

Wenn der Config Connector-Operator ausgeführt wird, zeigt die Befehlsausgabe, dass es genau einen Pod mit dem STATUS Running gibt.

NAME                                        READY   STATUS    RESTARTS   AGE
configconnector-operator-0   1/1          Running    0                    2m

Cloud Console

Den Status des Config Connector-Operators können Sie in der Google Cloud Console mit dem Google Kubernetes Engine-Menü "Arbeitslasten" prüfen.

Zum Menü "Arbeitslasten"

Wenn der Config Connector-Operator korrekt installiert ist, wird eine Arbeitslast namens configconnector-operator mit dem Status OK angezeigt.

Config Connector konfigurieren

Um die Installation des Config Connector-Add-ons abzuschließen, erstellen Sie eine Konfigurationsdatei für die CustomResource ConfigConnector und wenden sie mit dem Befehl kubectl apply an.

  1. Kopieren Sie das folgende YAML-Manifest 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 ConfigConnector instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    
  2. Wenden Sie die Konfiguration mit kubectl apply auf Ihren Cluster an:

    kubectl apply -f configconnector.yaml
    

Der Config Connector-Operator installiert CRDs und Config Connector-Komponenten von Google Cloud in Ihrem Cluster.

Zur Anzeige der verfügbaren Google Cloud-Ressourcen in Config Connector führen Sie folgenden Befehl aus:

kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true

Config Connector für das Monitoring von Namespaces konfigurieren

Im folgenden Abschnitt wird das Google Cloud-Projekt, in dem Sie Config Connector installieren, als Hostprojekt oder mit [HOST_PROJECT_ID] bezeichnet. Die anderen Projekte, in denen Sie Ressourcen verwalten, werden als verwaltete Projekte oder mit [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 dabei [NAMESPACE] durch den Namespace, den Sie konfigurieren möchten.

Dienstkonto erstellen

Erstellen Sie als Nächstes ein Dienstkonto für die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM), um Ihr Google-Dienstkonto (Google Service Account, GSA) und Ihr Kubernetes-Dienstkonto (Kubernetes Service Account, KSA) zu binden.

  1. Konfigurieren Sie gcloud für die Verwendung Ihres Hostprojekts:

    gcloud config set project [HOST_PROJECT_ID]
    

    Ersetzen Sie dabei [HOST_PROJECT_ID] durch Ihre Hostprojekt-ID.

  2. Erstellen Sie ein Dienstkonto. 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]
    

    Ersetzen Sie dabei [NAMESPACE_GSA] durch das Google-Dienstkonto, das an Ihren Namespace gebunden ist.

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

    Wenn Sie Config Connector installieren, gewähren Sie einem Google Cloud-Dienstkonto Berechtigungen zur Identitäts- und Zugriffsverwaltung. Weitere Informationen zu Berechtigungen finden Sie unter IAM-Berechtigungen für Config Connector.

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

    Dabei gilt:

    • [MANAGED_PROJECT_ID] ist die ID Ihres verwalteten Projekts.
    • [NAMESPACE_GSA] ist das Google-Dienstkonto, das an Ihren Namespace gebunden ist.
    • [HOST_PROJECT_ID] ist die ID Ihres Hostprojekts.
ConfigConnectorContext erstellen

Zum Erstellen von Google Cloud-Ressourcen müssen Sie Config Connector so konfigurieren, dass Ihr Namespace überwacht wird. Fügen Sie dazu im gewünschten Namespace ein ConfigConnectorContext-CustomResource-Objekt hinzu.

  1. Kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen configconnectorcontext.yaml:

    # 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:
      # The Google Service Account used to authenticate Google Cloud APIs in this Namespace
      googleServiceAccount: "[NAMESPACE_GSA]@[HOST_PROJECT_ID].iam.gserviceaccount.com"
    

    Dabei gilt:

    • [NAMESPACE] ist Ihr Namespace.
    • [NAMESPACE_GSA] ist das Google-Dienstkonto, 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 dabei [NAMESPACE] durch Ihren Namespace-Namen.

  4. Prüfen Sie mit dem folgenden 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,cnrm.cloud.google.com/scoped-namespace=[NAMESPACE]
    

    Ersetzen Sie dabei [NAMESPACE] durch Ihren Namespace-Namen.

    Wenn der Config Connector-Controller ausgeführt wird, sieht die Ausgabe in etwa so aus: cnrm-controller-manager-abcdefghijk-0 condition met.

Config Connector-Kubernetes-Dienstkonto an das Google-Dienstkonto binden

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 config set project [HOST_PROJECT_ID]
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"

Dabei gilt:

  • [HOST_PROJECT_ID] ist die ID Ihres Hostprojekts.
  • [NAMESPACE_GSA] ist das Google-Dienstkonto, das an Ihren Namespace gebunden ist.
  • [NAMESPACE] ist Ihr Namespace.

Workload Identity

Vorbereitung

Bevor Sie Config Connector in einem Cluster installieren, führen Sie die im Folgenden aufgeführten Schritte aus.

  • Erstellen oder ermitteln Sie einen GKE-Cluster, in dem Config Connector noch nicht installiert wurde.
  • Richten Sie Workload Identity in dem Cluster ein, in dem Sie Config Connector installieren. Wenn Sie dasselbe Google-Dienstkonto (GSA) und dasselbe Kubernetes-Dienstkonto (KSA) verwenden möchten, das Sie bei der Installation von Workload Identity erstellt haben, halten Sie die entsprechenden IDs bereit.

  • Konfigurieren Sie kubectl, um eine Verbindung zum Cluster herzustellen.

Identität erstellen

Das Einrichten von Identity umfasst folgende Schritte:

  • Erstellen eines IAM-Dienstkontos
  • Erstellen einer Bindung zwischen dem IAM-Dienstkonto und dem Kubernetes-Dienstkonto von Config Connector
  1. Erstellen Sie das cnrm-system-Dienstkonto mit gcloud:

    gcloud iam service-accounts create cnrm-system
  2. Gewähren Sie dem IAM-Dienstkonto erweiterte Berechtigungen für Ihr Projekt. Ersetzen Sie [PROJECT_ID] durch Ihre Projekt-ID.

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
    --member="serviceAccount:cnrm-system@[PROJECT_ID].iam.gserviceaccount.com" \
    --role="roles/owner"
    
  3. Erstellen Sie eine IAM-Richtlinienbindung zwischen dem IAM-Dienstkonto und dem vordefinierten Kubernetes-Dienstkonto, das von Config Connector ausgeführt wird. Ersetzen Sie [PROJECT_ID] durch Ihre Projekt-ID.

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

Config Connector bereitstellen

  1. Laden Sie die neueste TAR-Datei für das Installationspaket herunter:

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

    tar zxvf release-bundle.tar.gz
  3. Geben Sie Ihre Projekt-ID im Installationsmanifest des Controllers an. Ersetzen Sie vor der Ausführung des folgenden Befehls [PROJECT_ID] durch Ihre Projekt-ID.

    sed -i.bak 's/${PROJECT_ID?}/[PROJECT_ID]/' install-bundle-workload-identity/0-cnrm-system.yaml
  4. Wenden Sie die Manifeste auf Ihren Cluster an:

    kubectl apply -f install-bundle-workload-identity/

Ihre Installation prüfen

Config Connector führt alle Komponenten in einem Namespace namens "cnrm-system" aus. Sie können prüfen, ob die Pods bereit sind, indem Sie den folgenden Befehl ausführen:

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

Google Cloud Identity

Vorbereitung

Bevor Sie Config Connector installieren können, müssen Sie die folgenden Schritte ausführen:

  1. GKE-Cluster erstellen.
  2. Konfigurieren Sie kubectl, um eine Verbindung zum Cluster herzustellen.

Ein ClusterRoleBinding erstellen

Config Connector benötigt zum Erstellen von Kubernetes-Rollen entsprechende Berechtigungen.

Gewährleisten Sie, dass Sie Rollen erstellen können, indem Sie den folgenden Befehl ausführen.

kubectl auth can-i create roles

Wenn die Ausgabe yes ist, fahren Sie mit Identität erstellen fort.

Wenn die Ausgabe no lautet, erstellen Sie eine ClusterRoleBinding in Ihrem Cluster. Damit können Sie Rollen anlegen. Ersetzen Sie dabei [ACCOUNT_EMAIL] durch die E-Mail-Adresse, die mit Ihrem Google Cloud-Konto verknüpft ist.

kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole cluster-admin \
--user [ACCOUNT_EMAIL]

Die Ausgaben sollten den Text cluster-admin-binding created enthalten. Ist dies nicht der Fall, kontaktieren Sie Ihren Google Cloud-Konto- oder GKE-Clusteradministrator wegen der Berechtigungen.

Identität erstellen

Ein Config Connector-Cluster benötigt eine Google Cloud-Identität, um mit anderen Ressourcen kommunizieren zu können. Zum Einrichten der Identität erstellen Sie ein IAM-Dienstkonto und einen Dienstkontoschlüssel. Anschließend importieren Sie die Anmeldedaten des Schlüssels als Secret in jeden Cluster, der Config Connector ausführt.

Dienstkonto erstellen
  1. Erstellen Sie das cnrm-system-Dienstkonto mit gcloud:

    gcloud iam service-accounts create cnrm-system
  2. Gewähren Sie dem IAM-Dienstkonto erweiterte Berechtigungen für Ihr Projekt. Ersetzen Sie [HOST_PROJECT_ID] durch Ihre Projekt-ID.

    gcloud projects add-iam-policy-binding [HOST_PROJECT_ID] \
    --member serviceAccount:cnrm-system@[HOST_PROJECT_ID].iam.gserviceaccount.com \
    --role roles/owner
  3. Erstellen Sie einen Dienstkontoschlüssel und exportieren Sie dessen Anmeldedaten in eine Datei mit dem Namen key.json. Ersetzen Sie dabei [HOST_PROJECT_ID] durch Ihre Projekt-ID und führen Sie Folgendes aus:

    gcloud iam service-accounts keys create --iam-account \
    cnrm-system@[HOST_PROJECT_ID].iam.gserviceaccount.com key.json

Anmeldedaten auf Ihren Cluster anwenden

Wenden Sie die Anmeldedaten auf jeden Cluster an, in dem Sie Config Connector ausführen.

  1. Erstellen Sie den Namespace cnrm-system.

    kubectl create namespace cnrm-system
  2. Importieren Sie die Anmeldeinformationen des Schlüssels als Secret.

    kubectl create secret generic gcp-key --from-file key.json --namespace cnrm-system
  3. Entfernen Sie die Anmeldedaten aus Ihrem System:

    rm key.json

Config Connector installieren

Um Config Connector manuell zu installieren, laden Sie die Installations-TAR-Datei herunter und extrahieren Sie sie. Wenden Sie dann den Inhalt auf Ihren Cluster an.

  1. Laden Sie die neueste TAR-Datei für das Installationspaket herunter:

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

    tar zxvf release-bundle.tar.gz
  3. Wenden Sie die Manifeste auf Ihren Cluster an:

    kubectl apply -f install-bundle-gcp-identity/

Namespace-Modus

Der Namespace-Modus ist eine Erweiterung der Workload Identity-Installation. Er ermöglicht das Verwalten mehrerer Projekte mit mehreren Google-Dienstkonten, die an Ihren Config Connector-Cluster gebunden sind. Weitere Informationen finden Sie unter Installationstyp auswählen.

Vorbereitung

Bevor Sie Config Connector in einem Cluster installieren, führen Sie die im Folgenden aufgeführten Schritte aus.

Config Connector installieren

  1. Laden Sie die neueste TAR-Datei für Config Connector 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 
  4. Zum Installieren von Config Connector mithilfe des Operators erstellen Sie eine Konfigurationsdatei für die CustomResource ConfigConnector und wenden diese mit dem Befehl kubectl apply an.

  5. Kopieren Sie das folgende YAML-Manifest 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 ConfigConnector instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    
  6. Wenden Sie die Konfiguration mit kubectl apply auf Ihren Cluster an:

    kubectl apply -f configconnector.yaml
    

Config Connector für das Monitoring von Namespaces konfigurieren

Im folgenden Abschnitt wird das Google Cloud-Projekt, in dem Sie Config Connector installieren, als Hostprojekt oder mit [HOST_PROJECT_ID] bezeichnet. Die anderen Projekte, in denen Sie Ressourcen verwalten, werden als verwaltete Projekte oder mit [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 dabei [NAMESPACE] durch den Namespace, den Sie konfigurieren möchten.

Dienstkonto erstellen

Erstellen Sie als Nächstes ein Dienstkonto für die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM), um Ihr Google-Dienstkonto (Google Service Account, GSA) und Ihr Kubernetes-Dienstkonto (Kubernetes Service Account, KSA) zu binden.

  1. Konfigurieren Sie gcloud für die Verwendung Ihres Hostprojekts:

    gcloud config set project [HOST_PROJECT_ID]
    

    Ersetzen Sie dabei [HOST_PROJECT_ID] durch Ihre Hostprojekt-ID.

  2. Erstellen Sie ein Dienstkonto. 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]
    

    Ersetzen Sie dabei [NAMESPACE_GSA] durch das Google-Dienstkonto, das an Ihren Namespace gebunden ist.

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

    Wenn Sie Config Connector installieren, gewähren Sie einem Google Cloud-Dienstkonto Berechtigungen zur Identitäts- und Zugriffsverwaltung. Weitere Informationen zu Berechtigungen finden Sie unter IAM-Berechtigungen für Config Connector.

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

    Dabei gilt:

    • [MANAGED_PROJECT_ID] ist die ID Ihres verwalteten Projekts.
    • [NAMESPACE_GSA] ist das Google-Dienstkonto, das an Ihren Namespace gebunden ist.
    • [HOST_PROJECT_ID] ist die ID Ihres Hostprojekts.
ConfigConnectorContext erstellen

Zum Erstellen von Google Cloud-Ressourcen müssen Sie Config Connector so konfigurieren, dass Ihr Namespace überwacht wird. Fügen Sie dazu im gewünschten Namespace ein ConfigConnectorContext-CustomResource-Objekt hinzu.

  1. Kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen configconnectorcontext.yaml:

    # 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:
      # The Google Service Account used to authenticate Google Cloud APIs in this Namespace
      googleServiceAccount: "[NAMESPACE_GSA]@[HOST_PROJECT_ID].iam.gserviceaccount.com"
    

    Dabei gilt:

    • [NAMESPACE] ist Ihr Namespace.
    • [NAMESPACE_GSA] ist das Google-Dienstkonto, 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 dabei [NAMESPACE] durch Ihren Namespace-Namen.

  4. Prüfen Sie mit dem folgenden 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,cnrm.cloud.google.com/scoped-namespace=[NAMESPACE]
    

    Ersetzen Sie dabei [NAMESPACE] durch Ihren Namespace-Namen.

    Wenn der Config Connector-Controller ausgeführt wird, sieht die Ausgabe in etwa so aus: cnrm-controller-manager-abcdefghijk-0 condition met.

Config Connector-Kubernetes-Dienstkonto an das Google-Dienstkonto binden

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 config set project [HOST_PROJECT_ID]
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"

Dabei gilt:

  • [HOST_PROJECT_ID] ist die ID Ihres Hostprojekts.
  • [NAMESPACE_GSA] ist das Google-Dienstkonto, das an Ihren Namespace gebunden ist.
  • [NAMESPACE] ist Ihr Namespace.

Angeben, wo Sie Ihre Ressourcen erstellen möchten

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 die Ressource erstellt werden soll, nutzt Config Connector eine Annotation entweder in der Ressourcenkonfiguration oder im Namespace. Weitere Informationen finden Sie unter Ressourcen organisieren.

Sie können Ressourcen in einem Projekt, in einem Ordner oder in einer Organisation erstellen. Wählen Sie den Tab aus, in dem Config Connector Ressourcen anlegen soll.

Projekt

Zum Erstellen von Ressourcen in einem bestimmten Projekt führen Sie den unten aufgeführten Befehl aus. Ersetzen Sie dabei [NAMESPACE_NAME] durch den Namespace-Namen und [PROJECT_ID] durch die Google Cloud-Projekt-ID:

kubectl annotate namespace \
[NAMESPACE_NAME] cnrm.cloud.google.com/project-id=[PROJECT_ID]

Ordner

Mit dem unten aufgeführten Befehl können Sie Ressourcen in einem bestimmten Ordner erstellen. Ersetzen Sie dabei [NAMESPACE_NAME] durch Ihren Namespace-Namen und [FOLDER_ID] durch Ihre Google Cloud-Ordner-ID:

kubectl annotate namespace \
[NAMESPACE_NAME] cnrm.cloud.google.com/folder-id=[FOLDER_ID]

Organisation

Zum Erstellen von Ressourcen in einer bestimmten Organisation führen Sie den unten aufgeführten Befehl aus. Ersetzen Sie dabei [NAMESPACE_NAME] durch den Namespace-Namen und [ORGANIZATION_ID] durch die Google Cloud-Organisations-ID:

kubectl annotate namespace \
[NAMESPACE_NAME] cnrm.cloud.google.com/organization-id=[ORGANIZATION_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 Namespaces und Google Cloud-Projekte.

Ihre 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

Standard-Namespace festlegen

Sie können Befehle vereinfachen und ohne den Zusatz "--namespace" für jeden "kubectl"-Befehl eingeben. Dazu ändern Sie den Namespace des Standardkontexts. Führen Sie dafür den folgenden Befehl aus und ersetzen Sie dabei [NAMESPACE_NAME] durch Ihren Namespace-Namen:
kubectl config set-context --current --namespace [NAMESPACE_NAME]

Fehlerbehebung

Fehlerbehebung bei Google Cloud Identity-Installationen

Wenn der Pod mit einem Namen wie cnrm-controller-manager-X nicht den Status Running hat, versuchen Sie, die Anmeldedaten des Google Cloud-Dienstkontos neu zu installieren. Löschen Sie dazu zuerst das vorhandene Secret (kubectl --namespace=cnrm-system delete secret gcp-key) und folgen Sie dann der Anleitung zum Erstellen des Secret. Löschen Sie anschließend den Controller-Pod, um einen Neustart auszulösen:

kubectl delete pod --namespace=cnrm-system cnrm-controller-manager-0

Fehlerbehebung bei Config Connector-Add-on-Installationen

Wenn Sie das Add-on Config Creator nicht aktivieren können, wird die folgende Fehlermeldung angezeigt: Node version 1.15.x-gke.x s unsupported. Prüfen Sie, ob die Version des GKE-Clusters die erforderlichen Anforderungen erfüllt, um diesen Fehler zu beheben.

Führen Sie den folgenden Befehl aus, um alle gültigen Versionen für Ihre Cluster abzurufen. Ersetzen Sie [ZONE] durch die gewünschte Computing-Zone.

gcloud container get-server-config --format "yaml(validMasterVersions)" --zone [ZONE]

Wählen Sie eine Version aus der Liste aus, die den erforderlichen Anforderungen entspricht.

Diese Fehlermeldung wird auch angezeigt, wenn Workload Identity und Kubernetes Engine Monitoring deaktiviert sind. Aktivieren Sie diese Funktionen, um den Fehler zu beheben.

Fehler bei Berechtigungen für Ressourcenabgleiche beheben

Wenn Google Cloud Ressourcen nicht erfolgreich abgleichen kann, geben die Logs die folgende Fehlermeldung aus: The caller does not have permission, forbidden. So beheben Sie diesen Fehler:

  1. Öffnen Sie eine Shell mit dem cloud-sdk-Image:

     kubectl run -it \
       --image google/cloud-sdk:slim \
       --serviceaccount cnrm-controller-manager \
       --namespace cnrm-system \
       workload-identity-test
    
  2. Listen Sie Ihre Identität auf:

    gcloud auth list
    
  3. Prüfen Sie, ob die aufgeführte Identität mit dem Google-Dienstkonto übereinstimmt, das an Ihre Ressourcen gebunden ist.

  4. Prüfen Sie, ob das Google-Dienstkonto über die erforderlichen Rollen zur Verwaltung der GCP-Ressourcen verfügt.

Config Connector aktualisieren

Upgrade für Add-on

Das Add-on für Config Connector wurde auf eine neue Nebenversion mit Ihrem GKE-Cluster aktualisiert. Die Ressourcen in Ihrem Cluster bleiben dabei erhalten.

Upgrade für Namespace-Modus

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

Manuelles Upgrade

Beim Aktualisieren von Config Connector wird der Status der Google Cloud-Ressourcen in Ihrem Cluster beibehalten, während die Systemkomponenten aktualisiert werden.

So aktualisieren Sie Config Connector:

  1. Entfernen Sie die Systemkomponenten:
    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. Die manuellen Installationsschritte ausführen

Config Connector deinstallieren

Add-on deinstallieren

Mit kubectl delete können Sie CRDs für Google Cloud-Ressourcen zusammen mit Controller-Komponenten entfernen:

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

Config Connector-Add-on deaktivieren

Sie können das Config Connector-Add-on in Ihrem Cluster mit gcloud oder mit der Google Cloud Console deaktivieren.

gcloud

Zum Deaktivieren des Config Connector-Add-ons mit gcloud führen Sie folgenden Befehl aus:

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

Ersetzen Sie dabei [CLUSTER_NAME] durch den Namen des Clusters, in dem das Config Connector-Add-on installiert ist.

Cloud Console

Mit den im Folgenden aufgeführten Schritten deaktivieren Sie das Config Connector-Add-on über die Google Cloud Console.

  1. Rufen Sie in der Google Cloud Console die Seite für die Google Kubernetes Engine-Cluster auf und wählen Sie den Cluster aus, den Sie aktualisieren möchten.

    Zum Google Kubernetes Engine-Menü

  2. Klicken Sie auf Bearbeiten. Der Bildschirm Cluster bearbeiten wird angezeigt.

  3. Klicken Sie auf Add-ons.

  4. Wählen Sie Config Connector und dann Deaktiviert aus.

  5. Klicken Sie auf Speichern, um Ihren Cluster zu aktualisieren.

Namespace-Modus deinstallieren

Mit kubectl delete können Sie CRDs für Google Cloud-Ressourcen zusammen mit Controller-Komponenten entfernen:

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

Config Connector-Operator deinstallieren

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

Manuelle Deinstallation

Wenn Sie Config Connector ursprünglich ohne das Add-on installiert haben, entfernen Sie alle Config Connector-Artefakte aus dem Cluster:

kubectl delete sts,po -n cnrm-system -l cnrm.cloud.google.com/component=cnrm-controller-manager --wait=true
kubectl delete crds -l cnrm.cloud.google.com/system=true --wait=true
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
kubectl delete namespace cnrm-system --ignore-not-found --wait=true

Nächste Schritte

Erste Schritte mit Config Connector.