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:
- Erstellen oder identifizieren Sie einen GKE-Cluster, in dem Config Connector noch nicht installiert ist und für den Workload Identity und Kubernetes Engine-Monitoring aktiviert sind.
- Konfigurieren Sie
kubectl
, um eine Verbindung zum Cluster herzustellen.
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:
Laden Sie die neueste Config Connector-Operator TAR-Datei herunter:
gsutil cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
Extrahieren Sie die TAR-Datei:
tar zxvf release-bundle.tar.gz
Installieren Sie den Config Connector-Operator in Ihrem Cluster:
Für GKE Autopilot-Cluster:
kubectl apply -f operator-system/autopilot-configconnector-operator.yaml
Für GKE-Standardcluster:
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:
-
IAM-Dienstkonto erstellen. Wenn Sie ein vorhandenes Dienstkonto verwenden möchten, können Sie das tun und diesen Schritt überspringen.
Erstellen Sie mit folgendem Befehl das Dienstkonto:gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ersetzen SieSERVICE_ACCOUNT_NAME
durch einen Namen für Ihr Dienstkonto. -
Weisen Sie dem IAM-Dienstkonto erweiterte Berechtigungen für das Projekt zu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/editor"
Ersetzen Sie Folgendes:PROJECT_ID
durch Ihre Projekt-ID,SERVICE_ACCOUNT_NAME
durch den Namen Ihres Dienstkontos.
-
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,
Weitere Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.
Config Connector konfigurieren
Um die Installation abzuschließen, erstellen Sie eine Konfigurationsdatei für die CustomResource-ConfigConnector
und wenden diese dann mit dem Befehl kubectl apply
an. Der Config Connector Operator installiert Google Cloud-Ressourcen-CRDs und Config Connector-Komponenten in Ihrem Cluster.
So konfigurieren Sie den Operator:
-
Kopieren Sie die 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,
-
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 keinen für diesen Zweck geeigneten Namespace haben, erstellen Sie einen mitkubectl
.
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
Dabei gilt:
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
Dabei gilt:
NAMESPACE
durch Ihren Namespace-Namen.FOLDER_ID
durch Ihre 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
Dabei gilt:
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 in 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
So aktivieren Sie den Namespace-Modus:
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
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 Sie Ressourcen verwalten, 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:
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
Dabei gilt:
- 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.
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"
Dabei gilt:
- 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.
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
Dabei gilt:
- 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.
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"
Dabei gilt:
- 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 zur Überwachung Ihres Namespace konfigurieren. Dazu fügen Sie dem zu verwendenden Namespace ein ConfigConnectorContext
-Objekt hinzu.
Führen Sie folgende Schritte aus, um eine ConfigConnectorContext
zu erstellen.
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"
Dabei gilt:
- 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.
Wenden Sie die Datei mit
kubectl
auf Ihren Cluster an:kubectl apply -f configconnectorcontext.yaml
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:
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 so konfigurieren, dass Ressourcen nicht mehr in Ihrem Namespace verwaltet werden
Wenn Sie 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 den ConfigConnectorContext
in Ihrem Namespace.
Config Connector-Ressourcen aus Ihrem Namespace entfernen
Entfernen Sie alle Config Connector-Ressourcen aus Ihrem Namespace, um das Entfernen von ConfigConnectorContext
abzuschließen.
Listen Sie alle Ressourcen der einzelnen benutzerdefinierten Config Connector-Ressourcendefinitionen auf, um alle Config Connector-Ressourcen in Ihrem Namespace zu ermitteln.
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:
Wenn Sie alle Config Connector-Ressourcen pro Ressource in der Ausgabe des vorherigen Schritts entfernen möchten, geben Sie einen Löschbefehl aus.
kubectl delete -n NAMESPACE KIND NAME
Dabei gilt:
NAMESPACE
ist der Name Ihres NamespaceKIND
ist die Art der Ressource, die im vorherigen Schritt ermittelt wurdeNAME
ist der Name der im vorherigen Schritt erkannten Ressource
ConfigConnectorContext entfernen
Wenn Sie Config Connector so konfigurieren möchten, dass er die Config Connector-Ressourcen in Ihrem Namespace nicht mehr verwaltet, löschen Sie ConfigConnectorContext
in Ihrem Namespace.
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, nachdem alle Config Connector-Ressourcen aus Ihrem Namespace entfernt wurden.
Config Connector deinstallieren
Entfernen Sie mit kubectl delete
die Config Connector-CRDs und die Controllerkomponenten:
kubectl delete ConfigConnectorContext --all -A –wait=false
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
Upgrades von Installationen ohne Operatoren
Config Connector Version 1.33.0 und höher unterstützt nur die Installation mit dem GKE-Add-on oder dem Operator.
Wenn Sie ein Upgrade auf den Operator durchführen und alle Config Connector-Ressourcen beibehalten möchten, müssen Sie alle Config Connector-Systemkomponenten mit Ausnahme der CRDs entfernen und dann den Operator installieren.
Führen Sie folgenden Befehle aus, um Nicht-CRD-Komponenten des Config Connector-Systems 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
Installieren Sie Config Connector mit dem GKE-Add-on oder dem Operator.
Wechsel vom Add-on zu einer manuellen Installation
Bei der Installation als Add-on wird die Version von Config Connector direkt mit der installierten GKE-Version verknüpft.
Die manuelle Installation ermöglicht schnellere Aktualisierungen zu den Kosten der manuellen Upgrades.
So wechseln Sie unter Beibehaltung aller Ressourcen:
Deaktivieren Sie das Add-on, ohne irgendwelche
ConfigConnector
- oderConfigConnectorContext
-Objekte 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.Folgen Sie der Anleitung zum Installieren des manuellen Operators der gewünschten Version.
Nächste Schritte
- Erste Schritte mit Config Connector.
- Informationen zur Fehlerbehebung für Config Connector.