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 einem beliebigen Google Kubernetes Engine-Cluster bereitstellen. Wenn Sie auf GKE-Zielen bereitstellen, werden alle Cloud Deploy-Features unterstützt.

Hinweise

In dieser skaffold.yaml-Datei enthält die Stanza deploy kubectl. Dies weist darauf hin, dass Skaffold für Kubernetes (GKE) rendert und in diesem bereitstellt. Darunter sind die für diese Anwendung verwendeten Manifeste aufgeführt.

Zielkonfiguration erstellen

Jedes Ziel kann in der YAML-Datei Ihrer Bereitstellungspipeline konfiguriert oder in einer separaten Datei gespeichert werden. Außerdem können Sie mehrere Ziele in derselben Datei konfigurieren, die sich aber in verschiedenen kind: Target-Stanzas befinden müssen.

Erstellen Sie in der Zieldefinition eine gke-Stanza, die auf den GKE-Cluster verweist:

Die Syntax zum Angeben eines GKE-Cluster lautet:

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, für den Sie die Bereitstellung vornehmen, 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, den der Cluster bei seiner Erstellung gegeben hat.

    Sie finden den Namen in der Liste der Cluster für Ihr Projekt in der Google Cloud Console.

    Liste der Cluster in der Google Cloud Console

Das folgende Beispiel zeigt 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 für die Bereitstellung in einem GKE-Cluster erläutert.

Im Folgenden finden Sie eine Beispieldatei skaffold.yaml für die Bereitstellung in einem GKE-Cluster:

apiVersion: skaffold/v4beta7
kind: Config
metadata:
  name: gke-application
manifests:
  rawYaml:
  - deployment.yaml
deploy:
  kubectl: {}

Unter Skatffold mit Cloud Deploy verwenden wird ausführlicher beschrieben, wie Sie Skaffold mit Ihrer Bereitstellungspipeline verwenden.

Kubernetes-Manifeste vorbereiten

Zum Bereitstellen der Anwendung in GKE stellen Sie Cloud Deploy ein oder mehrere Kubernetes-Manifeste bereit. Diese werden gerendert und dann zur Bereitstellung der Anwendung auf den oder die Zielcluster angewendet.

Wenn Sie diese Manifeste nicht haben, erstellen Sie sie, bevor Sie die Bereitstellung über eine Cloud Deploy-Bereitstellungspipeline ausführen.

Sie können Kustomize oder Helm verwenden, um Manifeste zu erstellen. Sie können auch Kustomize oder Helm verwenden, wenn Ihre Manifeste Vorlagen haben und gerendert werden müssen.

Zusammenfassung

Da Sie jetzt Ihre Kubernetes-Manifeste, Ihre skaffold.yaml-Konfiguration und Ihre Cloud Deploy-Zieldefinitionen haben und Ihre Ziele als Cloud Deploy-Ressourcen registriert haben, können Sie jetzt Ihre Bereitstellungspipeline aufrufen, um einen Release zu erstellen und den Fortschritt der in der Pipeline definierten Ziele zu durchlaufen.

In einem privaten Cluster bereitstellen

Für die Bereitstellung der Anwendung in einem privaten GKE-Cluster haben Sie zwei Möglichkeiten:

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 privaten Clusterziels verwenden möchten, legen Sie in der Zielkonfiguration unter gke für internalIp den Wert true fest.

  2. Erstellen Sie in Cloud Build einen privaten Worker-Pool, den Sie zum Bereitstellen 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 für VERIFY verwenden. Hier ein Beispiel, in dem RENDER und DEPLOY verwendet werden:

    executionConfigs:
    - usages:
      - RENDER
      - DEPLOY
      workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
    

Weitere Informationen finden Sie unter Mit Identity Service for GKE über private GKE-Cluster auf private GKE-Cluster zugreifen und Mit privaten Cloud Build-Pools auf private GKE-Cluster zugreifen.

Hinweise zu Projekten und Berechtigungen

Sie können ein Ziel so konfigurieren, dass ein privater Worker-Pool verwendet wird, der in einem privaten Cluster bereitstellen kann. Wenn sich Ressourcen in verschiedenen Projekten befinden, sind jedoch einige Dinge zu beachten.

  • Wenn sich Cloud Deploy und der Worker-Pool in separaten Projekten befinden

Für die Kommunikation mit einem privaten Pool, der Zugriff auf eine VPC hat und sich in einem anderen Projekt als Ihr Ziel befindet, benötigt der Dienst-Agent von Cloud Deploy ausreichende Berechtigungen für die Kommunikation mit diesem Projekt.

Das Ausführungsdienstkonto benötigt ebenfalls 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 für die Bereitstellung in einem privaten GKE-Cluster mithilfe von Anthos-Zielen und Connect-Gateway konfigurieren.

Für diesen Ansatz müssen Sie keine Virtual Private Cloud oder virtuelle private Netzwerkverbindungen verwenden.

Nächste Schritte