In einem Google Kubernetes Engine-Cluster bereitstellen

In diesem Dokument wird beschrieben, wie Sie Ihre Anwendungen in Google Kubernetes Engine-Clustern bereitstellen.

Mit Google Cloud Deploy können Sie Ihre containerbasierten Arbeitslasten in einem beliebigen Google Kubernetes Engine-Cluster bereitstellen. Alle Google Cloud Deploy-Features werden unterstützt, wenn Sie GKE-Ziele bereitstellen.

Hinweis

In dieser skaffold.yaml-Datei enthält die deploy-Stanza kubectl, was bedeutet, dass Skaffold für Kubernetes (GKE) gerendert und bereitgestellt wird. Die Manifeste, die Sie für diese Anwendung verwenden, sind dort aufgeführt.

Zielkonfiguration erstellen

Jedes Ziel kann in der YAML-Datei für die Bereitstellungspipeline oder in einer separaten Datei konfiguriert werden. Sie können auch mehr als ein Ziel in derselben Datei konfigurieren. Diese müssen sich jedoch in unterschiedlichen kind: Target-Stanzas befinden.

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

Die Syntax zum Angeben eines GKE-Clusters sieht so aus:

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 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, der dem Cluster beim Erstellen 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

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

Dieser Abschnitt enthält ein Beispiel für eine einfache Skaffold-Konfiguration, die bei der Bereitstellung in einem GKE-Cluster verwendet wird.

Im Folgenden finden Sie ein Beispiel für eine skaffold.yaml-Datei zur Bereitstellung in einem GKE-Cluster:

apiVersion: skaffold/v3alpha1
kind: Config
metadata:
  name: gke-application
deploy:
  kubectl:
    manifests:
      - [MANIFEST]

Unter Skatffold mit Google Cloud Deploy verwenden wird beschrieben, wie Skaffold mit Ihrer Bereitstellungspipeline verwendet wird.

Kubernetes-Manifeste vorbereiten

Zum Bereitstellen Ihrer Anwendung in GKE stellen Sie Google Cloud Deploy ein oder mehrere Kubernetes-Manifeste zur Verfügung, die gerendert und dann auf den Zielcluster oder die Zielcluster angewendet werden, um Ihre Anwendung bereitzustellen.

Wenn diese Manifeste nicht vorhanden sind, erstellen Sie sie, bevor Sie sie mit einer Bereitstellungspipeline von Google Cloud Deploy bereitstellen.

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

Zusammenfassung

Nachdem Sie nun Ihre Kubernetes-Manifeste, Ihre skaffold.yaml-Konfiguration und Ihre Google Cloud Deploy-Zieldefinitionen erstellt und Ihre Ziele als Google Cloud Deploy-Ressourcen registriert haben, können Sie jetzt Ihre Bereitstellungspipeline aufrufen, um einen Release zu erstellen und ihn im Verlauf der in der Pipeline definierten Ziele fortzuführen.

In einem privaten Cluster bereitstellen

Sie haben zwei Möglichkeiten, die 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 privaten Clusterziels verwenden möchten, setzen Sie internalIp in der Zielkonfiguration unter gke auf true.

  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, um diesen privaten Pool zu verwenden.

    Sie müssen diesen Pool für RENDER verwenden. Sie können sie auch für DEPLOY und VERIFY verwenden. In diesem Beispiel werden RENDER und DEPLOY verwendet:

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

Weitere Informationen finden Sie unter 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 bereitgestellt werden kann. Beachten Sie jedoch, dass sich die Ressourcen in verschiedenen Projekten befinden.

  • Wenn sich Google 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 Google Cloud Deploy-Dienst-Agent ausreichende Berechtigungen, um mit diesem Projekt zu kommunizieren.

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.

Anthos-Ziele verwenden und Gateway verbinden

Sie können ein Ziel für die Bereitstellung in einem privaten GKE-Cluster mithilfe von Anthos-Zielen und einem Verbindungsgateway konfigurieren.

Für diesen Ansatz müssen Sie keine Virtual Private Cloud-Verbindungen oder Virtual Private Network-Verbindungen verwenden.

Nächste Schritte