Ein GKE-Cluster (Google Kubernetes Engine) besteht aus einer Steuerungsebene und Worker-Maschinen, die Knoten genannt werden. Sie können Ihre containerisierten Kubernetes-Arbeitslasten in einem GKE-Cluster ausführen. Knoten sind die Worker-Maschinen, auf denen Ihre Containeranwendungen und anderen Arbeitslasten ausgeführt werden. Die Steuerungsebene ist der einheitliche Endpunkt für Ihren Cluster. Weitere Informationen finden Sie unter GKE-Clusterarchitektur.
Der Kubernetes API-Server wird auf der Steuerungsebene ausgeführt. So können Sie über Kubernetes API-Aufrufe mit Kubernetes-Objekten im Cluster interagieren. Objekte sind persistente Entitäten im Kubernetes-System und repräsentieren den Status Ihres Clusters. Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter Objekte in Kubernetes und in der API-Übersicht, die Links zu den Seiten der Kubernetes API-Referenz enthält.
In diesem Dokument erfahren Sie, wie Sie den Kubernetes API-Connector in einem Workflow verwenden, um Anfragen an den Kubernetes-Dienstendpunkt zu senden, der auf der Steuerungsebene eines GKE-Clusters gehostet wird. Sie können den Connector beispielsweise verwenden, um Kubernetes-Deployments zu erstellen, Jobs auszuführen, Pods zu verwalten oder über einen Proxy auf bereitgestellte Apps zuzugreifen. Weitere Informationen finden Sie unter Kubernetes API-Connector – Übersicht.
Hinweise
Bevor Sie mit den Aufgaben in diesem Dokument fortfahren, müssen Sie bestimmte Voraussetzungen erfüllen.
APIs aktivieren
Bevor Sie über den Kubernetes API-Connector auf Kubernetes API-Objekte zugreifen können, müssen Sie die folgenden APIs aktivieren:
- Google Kubernetes Engine API: zum Erstellen und Verwalten containerbasierter Anwendungen mit GKE
Workflows APIs: zum Verwalten von Workflowdefinitionen und -ausführungen; durch Aktivieren der Workflows API wird automatisch die Workflow Executions API aktiviert
Console
APIs aktivieren:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
APIs aktivieren:
gcloud services enable container.googleapis.com workflows.googleapis.com
Dienstkonto erstellen
Erstellen Sie ein vom Nutzer verwaltetes Dienstkonto, das als Identität Ihres Workflows dient, und weisen Sie ihm die Rolle Kubernetes Engine-Entwickler (roles/container.developer
) zu, damit der Workflow auf Kubernetes API-Objekte in Clustern zugreifen kann.
Console
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Wählen Sie ein Projekt aus und klicken Sie auf Dienstkonto erstellen.
Geben Sie im Feld Dienstkontoname einen Namen ein. Die Google CloudConsole füllt das Feld Dienstkonto-ID anhand dieses Namens aus.
Geben Sie im Feld Dienstkontobeschreibung eine Beschreibung ein. Beispiel:
Service account for Kubernetes API
Klicken Sie auf Erstellen und fortfahren.
Filtern Sie in der Liste Rolle auswählen nach der Rolle Kubernetes Engine-Entwickler und wählen Sie sie aus.
Klicken Sie auf Weiter.
Klicken Sie zum Abschließen der Erstellung des Kontos auf Fertig.
gcloud
Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ersetzen Sie
SERVICE_ACCOUNT_NAME
durch den Namen des Dienstkontos.Weisen Sie Ihrem Dienstkonto die Rolle
container.developer
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/container.developer
Ersetzen Sie
PROJECT_ID
durch Ihre Google CloudProjekt-ID.
Sie können sowohl IAM als auch die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) von Kubernetes verwenden, um den Zugriff auf Ihren GKE-Cluster zu steuern:
IAM ist kein spezifisches Kubernetes-Produkt. Es bietet eine Identitätsverwaltung für mehrere Google Cloud Produkte und wird hauptsächlich auf Ebene des Google Cloud Projekts verwendet.
Die rollenbasierte Zugriffssteuerung (RBAC) von Kubernetes ist eine Kernkomponente von Kubernetes und ermöglicht es Ihnen, Rollen (Sätze von Berechtigungen) für jedes Objekt oder jeden Objekttyp im Cluster zu erstellen und zu gewähren. Wenn Sie hauptsächlich GKE verwenden und für jedes Objekt und jeden Vorgang innerhalb des Clusters detaillierte Berechtigungen benötigen, ist Kubernetes RBAC die beste Wahl.
Weitere Informationen finden Sie unter Zugriffssteuerung.
GKE-Cluster erstellen
Wenn Sie den Kubernetes API-Connector verwenden möchten, müssen Sie bereits einen öffentlichen oder privaten GKE-Cluster erstellt haben. In einem privaten Cluster haben Knoten nur interne IP-Adressen. Das heißt, Knoten und Pods sind standardmäßig vom Internet isoliert. Weitere Informationen finden Sie unter Private Cluster.
Sie können auch den Betriebsmodus angeben, der Ihnen unterschiedliche Flexibilität, Verantwortung und Kontrolle bietet. Sie können beispielsweise einen Autopilot-Cluster erstellen. Dabei handelt es sich um einen Betriebsmodus in GKE, in dem Google Ihre Clusterkonfiguration verwaltet, einschließlich Knoten, Skalierung, Sicherheit und anderer vorkonfigurierter Einstellungen. Weitere Informationen finden Sie unter GKE-Betriebsmodus auswählen.
Wenn Sie noch keinen GKE-Cluster erstellt haben, können Sie eine containerisierte Webanwendung in einem GKE-Cluster bereitstellen. Wenn Sie die Anleitung in diesem Dokument ausprobieren möchten, können Sie auch einen Autopilot-Cluster erstellen. Gehen Sie dazu so vor:
Console
Rufen Sie in der Google Cloud Console die Seite mit den Kubernetes-Clustern auf.
Klicken Sie auf add_box Erstellen.
Wenn Sie aufgefordert werden, einen Clustermodus auszuwählen, wählen Sie Autopilot aus.
Geben Sie im Bereich Clustergrundlagen Folgendes ein:
- Geben Sie den Namen für den Cluster ein, z. B.
hello-cluster
. - Wählen Sie eine Region für den Cluster aus, z. B.
us-central1
.
- Geben Sie den Namen für den Cluster ein, z. B.
Klicken Sie auf Weiter: Netzwerk.
Wählen Sie im Bereich IPv4-Netzwerkzugriff die Option Öffentlicher Cluster aus, um einen Cluster mit einem öffentlich zugänglichen Endpunkt zu erstellen.
Übernehmen Sie für alle anderen Einstellungen die Standardeinstellungen.
Klicken Sie auf Erstellen.
Es kann einige Minuten dauern, bis der Cluster erstellt ist. Nachdem der Cluster erstellt wurde, weist ein Häkchen
darauf hin, dass er ausgeführt wird.gcloud
Führen Sie dazu diesen Befehl aus:
gcloud container clusters create-auto CLUSTER_NAME \ --location=LOCATION \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
CLUSTER_NAME
: Name Ihres GKE-Clusters, z. B.hello-cluster
LOCATION
: Die Region für Ihren Cluster, z. B.us-central1
PROJECT_ID
: Ihre Google Cloud Projekt-ID
Es kann einige Minuten dauern, bis der Cluster erstellt ist. Nachdem der Cluster erstellt wurde, sollte die Ausgabe in etwa so aussehen:
Creating cluster hello-cluster...done.
Created [https://container.googleapis.com/v1/projects/MY_PROJECT
/zones/us-central1/clusters/hello-cluster].
[...]
STATUS: RUNNING
Über den Connector eine HTTP-Anfrage senden
Mit dem Kubernetes API-Connector können Sie eine HTTP-Anfrage an die Steuerungsebene eines GKE-Clusters senden. Mit dem folgenden Workflow wird beispielsweise ein Deployment mit dem Namen nginx-deployment
im angegebenen Kubernetes-Cluster erstellt. Das Deployment beschreibt einen erforderlichen Status. In diesem Fall ist es erforderlich, drei Pods mit dem nginx:1.14.2
-Image auszuführen und den Dienst über Port 80 verfügbar zu machen. Wenn nicht angegeben, werden project
und location
standardmäßig auf die Werte des Workflows festgelegt.
Weitere Informationen finden Sie auf der Referenzseite für die Kubernetes API-Connectorfunktion gke.request.
Wichtige Hinweise:
- Das Feld
path
entspricht dem Pfad der Kubernetes API-Methode. Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter API-Übersicht, die Links zu den Seiten „Kubernetes API-Referenz“ enthält. - Sie können HTTP-Anfragefehler in Ihrem Workflow abfangen und verarbeiten. Weitere Informationen finden Sie unter Workflowfehler.
Workflow bereitstellen
Bevor Sie einen Workflow ausführen können, müssen Sie ihn erstellen und bereitstellen.
Console
Öffnen Sie in der Google Cloud Console die Seite Workflows.
Klicken Sie auf
Erstellen.Geben Sie einen Namen für den neuen Workflow ein, z. B.
kubernetes-api-request
.Wählen Sie in der Liste Region die Option us-central1 aus.
Wählen Sie das zuvor erstellte Dienstkonto aus.
Klicken Sie auf Weiter.
Geben Sie im Workflow-Editor die Definition für Ihren Workflow ein:
YAML
JSON
Ersetzen Sie Folgendes:
CLUSTER_NAME
: Name Ihres GKE-Clusters, z. B.hello-cluster
PROJECT_ID
: Ihre Google Cloud Projekt-IDLOCATION
: Die Region für Ihren Cluster, z. B.us-central1
Klicken Sie auf Bereitstellen.
gcloud
Erstellen Sie eine Quellcodedatei für Ihren Workflow:
touch kubernetes-api-request.JSON_OR_YAML
Ersetzen Sie
JSON_OR_YAML
durchyaml
oderjson
, je nach Format des Workflows.Kopieren Sie den folgenden Workflow in einen Texteditor und fügen Sie ihn in Ihre Quellcodedatei ein:
YAML
JSON
Ersetzen Sie Folgendes:
CLUSTER_NAME
: Name Ihres GKE-Clusters, z. B.hello-cluster
LOCATION
: Die Region für Ihren Cluster, z. B.us-central1
Stellen Sie den Workflow bereit:
gcloud workflows deploy kubernetes-api-request \ --source=kubernetes-api-request.
JSON_OR_YAML
\ --location=LOCATION
\ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Workflow ausführen
Nachdem Sie den Workflow bereitgestellt haben, können Sie ihn ausführen. Bei der Ausführung eines Workflows wird die aktuelle Workflowdefinition ausgeführt, die dem Workflow zugeordnet ist.
Console
Öffnen Sie in der Google Cloud Console die Seite Workflows.
Wählen Sie auf der Seite Workflows den gewünschten Workflow aus, um die Detailseite aufzurufen.
Klicken Sie auf der Seite Workflow-Details auf play_arrow Ausführen.
Klicken Sie noch einmal auf Ausführen.
Sehen Sie sich die Ergebnisse des Workflows im Bereich Ausgabe an.
Bei Erfolg sollte der Ausführungsstatus
Succeeded
sein und der Antworttext wird zurückgegeben.
gcloud
Führen Sie den Workflow aus:
gcloud workflows run kubernetes-api-request \ --location=LOCATION
Bei Erfolg sollte der Status SUCCEEDED
sein und der Antworttext wird zurückgegeben.
Kubernetes-Job mit dem Connector ausführen
Mit dem Kubernetes API-Connector können Sie einen Kubernetes-Job in einem GKE-Cluster bereitstellen und ausführen. Im folgenden Workflow wird ein Kubernetes-Job erstellt, der ein Bash-Script ausführt, das eine Zahlensequenz durchläuft. Der Workflow wartet bis zu 90 Sekunden, bis der Kubernetes-Job abgeschlossen ist. Andernfalls wird ein Fehler ausgegeben. Wenn der Job abgeschlossen ist, wird er gelöscht.
Ein Job gilt als abgeschlossen, wenn sein Status den Bedingungstyp Complete
enthält. Beispiel:
"status": { "conditions": [ { "type": "Complete", "status": "True" } ] }
Wenn der Job fehlschlägt, wird ein FailedJobError
-Tag zurückgegeben. Beispiel:
{ "tags": ["FailedJobError"] "job": {...} "message":"Kubernetes job failed" }
Weitere Informationen finden Sie auf den Referenzseiten für die folgenden Kubernetes API-Connector-Funktionen:
Workflow bereitstellen
Bevor Sie einen Workflow ausführen können, müssen Sie ihn erstellen und bereitstellen.
Console
Öffnen Sie in der Google Cloud Console die Seite Workflows.
Klicken Sie auf
Erstellen.Geben Sie einen Namen für den neuen Workflow ein, z. B.
kubernetes-api-job
.Wählen Sie in der Liste Region die Option us-central1 aus.
Wählen Sie das zuvor erstellte Dienstkonto aus.
Klicken Sie auf Weiter.
Geben Sie im Workflow-Editor die Definition für Ihren Workflow ein:
YAML
JSON
Ersetzen Sie Folgendes:
LOCATION
: Die Region für Ihren Cluster, z. B.us-central1
CLUSTER_NAME
: Name Ihres GKE-Clusters, z. B.hello-cluster
JOB_NAME
: der Name des Kubernetes-Jobs, z. B.hello-job
Klicken Sie auf Bereitstellen.
gcloud
Erstellen Sie eine Quellcodedatei für Ihren Workflow:
touch kubernetes-api-job.JSON_OR_YAML
Ersetzen Sie
JSON_OR_YAML
durchyaml
oderjson
, je nach Format des Workflows.Kopieren Sie den folgenden Workflow in einen Texteditor und fügen Sie ihn in Ihre Quellcodedatei ein:
YAML
JSON
Ersetzen Sie Folgendes:
LOCATION
: Die Region für Ihren Cluster, z. B.us-central1
CLUSTER_NAME
: Name Ihres GKE-Clusters, z. B.hello-cluster
JOB_NAME
: der Name des Kubernetes-Jobs, z. B.hello-job
Stellen Sie den Workflow bereit:
gcloud workflows deploy kubernetes-api-job \ --source=kubernetes-api-job.
JSON_OR_YAML
\ --location=LOCATION
\ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Workflow ausführen
Nachdem Sie den Workflow bereitgestellt haben, können Sie ihn ausführen. Bei der Ausführung eines Workflows wird die aktuelle Workflowdefinition ausgeführt, die dem Workflow zugeordnet ist.
Console
Öffnen Sie in der Google Cloud Console die Seite Workflows.
Wählen Sie auf der Seite Workflows den gewünschten Workflow aus, um die Detailseite aufzurufen.
Klicken Sie auf der Seite Workflow-Details auf play_arrow Ausführen.
Klicken Sie noch einmal auf Ausführen.
Die Ausführung des Workflows kann einige Minuten dauern.
Sehen Sie sich die Ergebnisse des Workflows im Bereich Ausgabe an.
Die Ergebnisse sollten in etwa so aussehen:
{ ... }, "status": { "completionTime": "2023-10-31T17:04:32Z", "conditions": [ { "lastProbeTime": "2023-10-31T17:04:33Z", "lastTransitionTime": "2023-10-31T17:04:33Z", "status": "True", "type": "Complete" } ], "ready": 0, "startTime": "2023-10-31T17:04:28Z", "succeeded": 1, "uncountedTerminatedPods": {} } }
gcloud
Führen Sie den Workflow aus:
gcloud workflows run kubernetes-api-job \ --location=LOCATION
Die Ausführung des Workflows kann einige Minuten dauern. Die Ergebnisse sollten in etwa so aussehen:
{
...
},
"status": {
"completionTime": "2023-10-31T17:04:32Z",
"conditions": [
{
"lastProbeTime": "2023-10-31T17:04:33Z",
"lastTransitionTime": "2023-10-31T17:04:33Z",
"status": "True",
"type": "Complete"
}
],
"ready": 0,
"startTime": "2023-10-31T17:04:28Z",
"succeeded": 1,
"uncountedTerminatedPods": {}
}
}