In einem Google Kubernetes Engine-Cluster bereitstellen

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

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.

    Liste der Cluster 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:

  1. Privaten Cluster erstellen

    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 die internalIp auf true fest.

  2. Erstellen Sie in Cloud Build einen privaten Worker-Pool, den Sie für die Bereitstellung in diesem privaten Cluster verwenden können.

  3. 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ür DEPLOY und VERIFY verwenden. Hier ein Beispiel mit RENDER und DEPLOY:

    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