In diesem Dokument wird beschrieben, wie Sie Ihre Anwendungen in Google Kubernetes Engine-Clustern bereitstellen.
Mit Cloud Deploy können Sie Ihre containerbasierten Arbeitslasten in beliebigen Google Kubernetes Engine-Clustern bereitstellen. Alle Cloud Deploy-Funktionen werden unterstützt, wenn Sie eine Bereitstellung auf GKE-Zielen vornehmen.
Hinweise
Sie haben einen oder mehrere GKE-Cluster, in denen Sie eine Bereitstellung vornehmen möchten.
Wenn Sie keine GKE-Cluster zum Bereitstellen haben, können Sie sie erstellen.
Prüfen Sie, ob Ihr Ausführungs-Dienstkonto die erforderlichen Rollen und Berechtigungen hat.
In dieser skaffold.yaml
-Datei enthält die deploy
-Strophe kubectl
, was darauf hinweist, dass Skaffold für Kubernetes (GKE) rendert und dort bereitstellt. Die Manifeste, die Sie für diese Anwendung verwenden, sind dort aufgeführt.
Zielkonfiguration erstellen
Jedes Ziel kann in der YAML-Datei der Bereitstellungspipeline oder in einer separaten Datei konfiguriert werden. Sie können auch mehrere Ziele in derselben Datei konfigurieren. Sie müssen sich jedoch in verschiedenen kind: Target
-Strophen befinden.
Ziele müssen im selben Projekt und in derselben Region wie die Bereitstellungspipeline definiert werden. Die Cluster, in denen die Ziele bereitgestellt werden, können sich jedoch in verschiedenen Projekten und Regionen befinden, solange das Dienstkonto Zugriff auf diese Projekte hat.
Erstellen Sie in der Zieldefinition einen gke
-Abschnitt, der auf den GKE-Cluster verweist:
gke:
cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
Diese GKE-Ressourcen-ID verwendet die folgenden Elemente:
[
project_name
] ist der Name des Google Cloud-Projekts, in dem Sie diesen Cluster ausführen.Der Cluster, in dem Sie bereitstellen, muss sich nicht im selben Projekt wie Ihre Bereitstellungspipeline befinden.
[
location
] ist die Region, in der der Cluster erstellt wurde.[
cluster_name
] ist der Name, der dem Cluster bei seiner Erstellung gegeben wurde.Sie finden diesen Namen in der Liste der Cluster für Ihr Projekt in der Google Cloud Console.
Im Folgenden finden Sie ein Beispiel für eine Zielkonfiguration, die auf einen GKE-Cluster verweist:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development cluster
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
Skaffold-Konfiguration erstellen
In diesem Abschnitt wird ein Beispiel für eine einfache Skaffold-Konfiguration erläutert, die für die Bereitstellung in einem GKE-Cluster verwendet werden kann.
Das folgende Beispiel für eine skaffold.yaml
-Datei für die Bereitstellung in einem GKE-Cluster:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: gke-application
manifests:
rawYaml:
- deployment.yaml
deploy:
kubectl: {}
Im Artikel Skaffold mit Cloud Deploy verwenden wird ausführlicher beschrieben, wie Sie Skaffold mit Ihrer Bereitstellungspipeline verwenden.
Kubernetes-Manifeste vorbereiten
Wenn Sie Ihre Anwendung in GKE bereitstellen möchten, stellen Sie Cloud Deploy ein oder mehrere Kubernetes-Manifeste zur Verfügung. Diese werden gerendert und dann auf den Zielcluster oder die Zielcluster angewendet, um Ihre Anwendung bereitzustellen.
Wenn Sie diese Manifeste nicht haben, erstellen Sie sie, bevor Sie versuchen, eine Bereitstellung mit einer Cloud Deploy-Bereitstellungspipeline durchzuführen.
Sie können Kustomize oder Helm verwenden, um Manifeste zu erstellen. Sie können auch Kustomize oder Helm verwenden, wenn Ihre Manifeste als Vorlagen vorliegen und gerendert werden müssen.
Zusammenfassung
Sie haben Ihre Kubernetes-Manifeste, Ihre skaffold.yaml
-Konfiguration und Ihre Cloud Deploy-Zieldefinitionen erstellt und Ihre Ziele als Cloud Deploy-Ressourcen registriert. Jetzt können Sie die Lieferpipeline aufrufen, um einen Release zu erstellen und ihn durch die in der Pipeline definierten Ziele zu leiten.
Mit einem Proxy bereitstellen
Sie können einen Proxy für Ihren Ziel-GKE-Cluster angeben. Diese Option ist für Organisationen gedacht, die nur über einen Proxy auf ihre Cluster zugreifen können.
Fügen Sie dazu der gke
-Strophe in der Zielkonfiguration die Eigenschaft proxyUrl
hinzu:
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
proxyUrl: [URL]
Dabei ist URL
die URL des Proxys.
In einem privaten Cluster bereitstellen
Sie haben zwei Möglichkeiten, Ihre Anwendung in einem privaten GKE-Cluster bereitzustellen:
Virtual Private Cloud-Netzwerk verwenden
Sie können ein Ziel für die Bereitstellung in einem privaten GKE-Cluster konfigurieren, der mit einem Virtual Private Cloud-Netzwerk verbunden ist:
-
Ein privater Cluster ist ein VPC-nativer Cluster, dessen Knoten und Pods standardmäßig vom öffentlichen Internet isoliert sind.
Wenn Sie die interne IP-Adresse des Ziels des privaten Clusters verwenden möchten, legen Sie in der Zielkonfiguration unter
gke
dieinternalIp
auftrue
fest. Erstellen Sie in Cloud Build einen privaten Worker-Pool, den Sie für die Bereitstellung in diesem privaten Cluster verwenden können.
Konfigurieren Sie die Ausführungsumgebung für die Verwendung dieses privaten Pools.
Sie müssen diesen Pool für
RENDER
verwenden. Sie können sie auch fürDEPLOY
undVERIFY
verwenden. Hier ein Beispiel mitRENDER
undDEPLOY
:executionConfigs: - usages: - RENDER - DEPLOY workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
Weitere Informationen finden Sie unter Über Identity Service for GKE auf private GKE-Cluster aus privaten Cloud Build-Pools zugreifen und Auf private GKE-Cluster mit privaten Cloud Build-Pools zugreifen.
Hinweise zu Projekten und Berechtigungen
Sie können ein Ziel für die Verwendung eines privaten Worker-Pools konfigurieren, der in einem privaten Cluster Bereitstellungen ausführen kann. Es sind jedoch einige Dinge zu beachten, wenn sich Ressourcen in verschiedenen Projekten befinden.
- Wenn sich Cloud Deploy und der Worker-Pool in separaten Projekten befinden
Damit Cloud Deploy mit einem privaten Pool kommunizieren kann, der Zugriff auf eine VPC hat und sich in einem anderen Projekt als das Ziel befindet, benötigt der Dienstagent von Cloud Deploy ausreichend Berechtigungen für die Kommunikation mit diesem Projekt.
Das Ausführungsdienstkonto benötigt außerdem Berechtigungen für den Zugriff auf den Cloud Storage-Bucket.
- Wenn sich der Worker-Pool und der Cluster in separaten Projekten befinden
Befindet sich der private GKE-Cluster in einem anderen Projekt als der private Worker-Pool, benötigt das Ausführungs-Dienstkonto ausreichende Berechtigungen zur Kommunikation mit dem Projekt, in dem sich der Cluster befindet.
GKE Enterprise-Ziele verwenden und Gateway verbinden
Sie können ein Ziel mithilfe von Anthos-Zielen und dem Connect-Gateway für die Bereitstellung in einem privaten GKE-Cluster konfigurieren.
Für diesen Ansatz ist keine Virtual Private Cloud oder eine Verbindung zu einem virtuellen privaten Netzwerk erforderlich.
Nächste Schritte
Lieferpipeline aufrufen, um einen Release zu erstellen
Weitere Informationen zum Konfigurieren von Cloud Deploy-Zielen
Weitere Informationen zur Verwendung von Skaffold mit Cloud Deploy
Weitere Informationen zu Ausführungsumgebungen für Cloud Deploy