Vorbereitung
GKE-Clusteranforderungen
Der Cluster sollte Kf zugeordnet werden. Diese Einstellung ist optional, wird aber empfohlen. Wir empfehlen, nur Kf und dessen Abhängigkeiten zu installieren, damit die Kompatibilitätsmatrix erhalten bleibt.
Mindestens vier Knoten. Informationen zum Hinzufügen von Knoten finden Sie unter Größe eines Clusters anpassen.
Der minimale Maschinentyp mit mindestens vier vCPUs, z. B.
e2-standard-4. Wenn der Maschinentyp für Ihren Cluster nicht mindestens vier vCPUs hat, ändern Sie den Maschinentyp, wie unter Arbeitslasten zu anderen Maschinentypen migrieren beschrieben.Es wird empfohlen, den Cluster in einer Release-Version zu registrieren. Dies ist jedoch optional. Folgen Sie der Anleitung unter Vorhandenen Cluster in einer Release-Version registrieren, wenn Sie eine statische GKE-Version haben.
Workload Identity ist aktiviert.
Kf-Anforderungen
Zugriffsberechtigungen von Komponenten in Kf auf der Seite Abhängigkeiten und Architektur von Kf ansehen und verstehen.
In der Abhängigkeitsmatrix werden die einzelnen Versionen aufgelistet.
Tekton zur Verwendung durch Kf; dieser Dienst ist für Nutzer nicht sichtbar
Ein dediziertes Google-Dienstkonto
Unterstützung für Compute Engine aktivieren
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Google Cloud-Kunde sind, erstellen Sie ein Konto, um zu sehen, wie sich unsere Produkte in realen Szenarien schlagen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Aktivieren Sie die Compute Engine API.
Unterstützung für Artifact Registry aktivieren
- Aktivieren Sie die Artifact Registry API.
GKE aktivieren und konfigurieren
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diesen Task verwenden möchten,
installieren und dann
initialisieren Sie die
gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste
Version mit dem
gcloud components updateBefehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
Neuen GKE-Cluster und zugehörige Dienste vorbereiten
Umgebungsvariablen einrichten
Linux und Mac
export PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_NAME=kf-cluster
export COMPUTE_ZONE=us-central1-a
export COMPUTE_REGION=us-central1
export CLUSTER_LOCATION=${COMPUTE_ZONE} # Replace ZONE with REGION to switch
export NODE_COUNT=4
export MACHINE_TYPE=e2-standard-4
export NETWORK=default
Windows PowerShell
Set-Variable -Name PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_NAME -Value kf-cluster Set-Variable -Name COMPUTE_ZONE -Value us-central1-a Set-Variable -Name COMPUTE_REGION -Value us-central1 Set-Variable -Name CLUSTER_LOCATION -Value $COMPUTE_ZONE # Replace ZONE with REGION to switch Set-Variable -Name NODE_COUNT -Value 4 Set-Variable -Name MACHINE_TYPE -Value e2-standard-4 Set-Variable -Name NETWORK -Value default
Dienstkonto einrichten
Erstellen Sie ein Google Cloud -Dienstkonto, das über Workload Identity mit einem Kubernetes-Dienstkonto verknüpft wird. Dadurch müssen Sie keinen Dienstkontoschlüssel erstellen und einfügen.
Erstellen Sie das von Kf verwendete Dienstkonto.
gcloud iam service-accounts create ${CLUSTER_NAME}-sa \ --project=${CLUSTER_PROJECT_ID} \ --description="GSA for Kf ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"Erstellen Sie eine neue benutzerdefinierte IAM-Rolle.
gcloud iam roles create serviceAccountUpdater \ --project=${CLUSTER_PROJECT_ID} \ --title "Service Account Updater" \ --description "This role only updates members on a GSA" \ --permissions iam.serviceAccounts.get,iam.serviceAccounts.getIamPolicy,iam.serviceAccounts.list,iam.serviceAccounts.setIamPolicyLegen Sie fest, dass das Dienstkonto seine eigene Richtlinie ändern darf. Der Kf-Controller verwendet diese Option, um der Richtlinie neue (Name)spaces hinzuzufügen und die Wiederverwendung von Workload Identity zuzulassen.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="projects/${CLUSTER_PROJECT_ID}/roles/serviceAccountUpdater"Weisen Sie den Monitoring-Messwerten eine Rolle für den Schreibzugriff auf Cloud Monitoring zu.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"Weisen Sie Logging eine Rolle für den Schreibzugriff auf Cloud Logging zu.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
GKE-Cluster erstellen
gcloud container clusters create ${CLUSTER_NAME} \
--project=${CLUSTER_PROJECT_ID} \
--zone=${CLUSTER_LOCATION} \
--num-nodes=${NODE_COUNT} \
--machine-type=${MACHINE_TYPE} \
--disk-size "122" \
--network=${NETWORK} \
--addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver \
--enable-dataplane-v2 \
--enable-stackdriver-kubernetes \
--enable-ip-alias \
--enable-autorepair \
--enable-autoupgrade \
--scopes cloud-platform \
--release-channel=regular \
--workload-pool="${CLUSTER_PROJECT_ID}.svc.id.goog" \
--service-account="${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"Firewallregeln festlegen
Für Kf müssen einige Firewallports geöffnet sein. Der Masterknoten muss mit Pods über die Ports 80, 443, 8080, 8443 und 6443 kommunizieren können.
Workload Identity aktivieren
Nachdem Sie nun ein Dienstkonto und einen GKE-Cluster haben, verknüpfen Sie den Identitäts-Namespace des Clusters mit dem Cluster.
gcloud iam service-accounts add-iam-policy-binding \
--project=${CLUSTER_PROJECT_ID} \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]" \
"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
gcloud iam service-accounts add-iam-policy-binding \
--project=${CLUSTER_PROJECT_ID} \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"GKE-Zielcluster
Konfigurieren Sie den Zugriff auf die kubectl-Befehlszeile mit dem folgenden Befehl:
gcloud container clusters get-credentials ${CLUSTER_NAME} \
--project=${CLUSTER_PROJECT_ID} \
--zone=${CLUSTER_LOCATION}Artifact Registry-Repository erstellen
Erstellen Sie eine Artifact Registry, in der Container-Images gespeichert werden.
gcloud artifacts repositories create ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --repository-format=docker \ --location=${COMPUTE_REGION}Gewähren Sie dem Dienstkonto die Berechtigung für das Artifact Registry-Repository.
gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --location=${COMPUTE_REGION} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'
Softwareabhängigkeiten auf einem Cluster installieren
Installieren Sie Cloud Service Mesh Version 1.12.
- Folgen Sie der Installationsanleitung für Cloud Service Mesh, einschließlich der Schritte zum Erstellen eines Gateways für eingehenden Traffic.
Installieren Sie Config Connector.
Laden Sie die erforderliche TAR-Datei für den Config Connector-Operator herunter:
Extrahieren Sie die TAR-Datei.
tar zxvf release-bundle.tar.gzInstallieren Sie den Config Connector-Operator in Ihrem Cluster:
kubectl apply -f operator-system/configconnector-operator.yamlKonfigurieren Sie den Config Connector-Operator.
Kopieren Sie den folgenden YAML-Inhalt 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: "KF_SERVICE_ACCOUNT_NAME" # Replace with the full service account resolved from ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Wenden Sie die Konfiguration auf Ihren Cluster an.
kubectl apply -f configconnector.yaml
Prüfen Sie, ob Config Connector vollständig installiert ist, bevor Sie fortfahren.
Config Connector führt alle seine Komponenten in einem Namespace mit dem Namen
cnrm-systemaus. Prüfen Sie mit dem folgenden Befehl, ob die Pods bereit sind:kubectl wait -n cnrm-system --for=condition=Ready pod --all
Wenn Config Connector richtig installiert ist, sieht die Ausgabe in etwa so aus:
pod/cnrm-controller-manager-0 condition met pod/cnrm-deletiondefender-0 condition met pod/cnrm-resource-stats-recorder-86858dcdc5-6lqzb condition met pod/cnrm-webhook-manager-58c799b8fb-kcznq condition met pod/cnrm-webhook-manager-58c799b8fb-n2zpx condition met
Workload Identity einrichten
kubectl annotate serviceaccount \ --namespace cnrm-system \ --overwrite \ cnrm-controller-manager \ iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Installieren Sie Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.29.0/release.yaml"
Kf installieren
Installieren Sie die Kf-Befehlszeile:
Linux
Mit diesem Befehl wird die Kf-Befehlszeile für alle Nutzer im System installiert. Folgen Sie der Anleitung auf dem Cloud Shell-Tab, um Kf nur für die eigene Nutzung zu installieren.
gcloud storage cp gs://kf-releases/v2.7.3/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
Mit diesem Befehl wird
kffür alle Nutzer im System installiert.gcloud storage cp gs://kf-releases/v2.7.3/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
Mit diesem Befehl wird
kfauf Ihrer Cloud Shell-Instanz installiert, wenn Siebashverwenden. Für andere Shells muss die Anleitung möglicherweise angepasst werden.mkdir -p ~/bingcloud storage cp gs://kf-releases/v2.7.3/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
Mit diesem Befehl wird
kfin das aktuelle Verzeichnis heruntergeladen. Fügen Sie es dem Pfad hinzu, wenn Sie es von außerhalb des aktuellen Verzeichnisses aufrufen möchten.gcloud storage cp gs://kf-releases/v2.7.3/kf-windows.exe kf.exeInstallieren Sie den Operator:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/operator.yaml"
Konfigurieren Sie den Operator für Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/kfsystem.yaml"
Richten Sie Secrets und Standardeinstellungen ein:
export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME} kubectl patch \ kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
Installation prüfen
kf doctor --retries=20
Bereinigen
Bei diesen Schritten werden alle Komponenten entfernt, die im Abschnitt Neuen GKE-Cluster erstellen und vorbereiten erstellt wurden.
Löschen Sie das Google-Dienstkonto:
gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.comLöschen Sie IAM-Richtlinienbindungen:
gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountAdmin"gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"Löschen Sie das Container-Image-Repository:
gcloud artifacts repositories delete ${CLUSTER_NAME} \ --location=${COMPUTE_REGION}Deinstallieren Sie Kf:
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': false, }}]"(Optional) Löschen Sie den GKE-Cluster:
gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}