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 jedem Google Kubernetes Engine Cluster bereitstellen. Alle Cloud Deploy-Funktionen werden unterstützt, wenn Sie in GKE-Zielen bereitstellen.

Hinweis

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

Erstellen Sie Ihre Zielkonfiguration

Jedes Ziel kann in der YAML-Datei der Bereitstellungspipeline konfiguriert werden oder sich in einer separaten Datei befinden. Sie können auch mehrere Ziele in derselben Datei konfigurieren. Sie müssen sich jedoch in verschiedenen kind: Target-Abschnitten 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, sofern das Dienstkonto Zugriff auf diese Projekte hat.

Erstellen Sie in der Zieldefinition einen gke-Abschnitt, um auf den GKE-Cluster zu verweisen:

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 ausführen, 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 der Erstellung gegeben wurde.

    Sie finden diesen Namen in der Liste der Cluster für Ihr Projekt in der Google Cloud Konsole.

    Liste der Cluster in der Google Cloud Console

Hier sehen Sie eine Beispielkonfiguration für ein Ziel, das 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 finden Sie ein Beispiel für eine einfache Skaffold-Konfiguration, die Sie bei der Bereitstellung in einem GKE-Cluster verwenden können.

Das folgende Beispiel zeigt eine Beispiel 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: {}

Unter 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 Ziel cluster oder die Zielcluster angewendet, um Ihre Anwendung bereitzustellen.

Wenn Sie diese Manifeste nicht haben, erstellen Sie sie, bevor Sie versuchen, die Bereitstellung mit einer Cloud Deploy-Bereitstellungspipeline auszuführen.

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

Zusammenfassung

Nachdem Sie Ihre Kubernetes-Manifeste, Ihre skaffold.yaml Konfiguration, Ihre Cloud Deploy-Zieldefinitionen erstellt und Ihre Ziele als Cloud Deploy-Ressourcen registriert haben, können Sie jetzt Ihre Bereitstellungspipeline aufrufen, um einen Release zu erstellen und ihn durch die in der Pipeline definierten Ziele zu bewegen.

Bereitstellung über einen Proxy

Sie können einen Proxy für Ihren Ziel-GKE-Cluster angeben. Dies ist für Organisationen gedacht, die so eingerichtet sind, dass sie nur über einen HTTP-Proxy auf ihre Cluster zugreifen können.

Fügen Sie dazu in der Zielkonfiguration eine proxyUrl-Property zum Abschnitt gke hinzu:

gke:
 cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
 proxyUrl: [URL]

Dabei ist URL die URL des Proxys.

Bereitstellung in einem privaten Cluster

Sie können Ihre Anwendung mit einer von drei Optionen in einem privaten GKE-Cluster bereitstellen:

DNS-Endpunkt verwenden

Dies ist die einfachste Möglichkeit, eine Verbindung zu einem privaten Cluster herzustellen.

  1. Aktivieren Sie den DNS-basierten Endpunkt in Ihrem Cluster.

  2. Legen Sie in der Zielkonfiguration unter gke für dnsEndpoint den Wert true fest.

    Wenn für Ihren Cluster kein IP-basierter Endpunkt konfiguriert ist, können Sie diesen Schritt überspringen. Cloud Deploy stellt standardmäßig eine Verbindung zum DNS-Endpunkt her, da dies der einzige Endpunkt der Steuerungsebene ist.

Virtual Private Cloud-Netzwerk verwenden

Sie können ein Ziel so konfigurieren, dass die Bereitstellung in einem privaten GKE-Cluster erfolgt, der mit einem Virtual Private Cloud-Netzwerk verbunden ist:

  1. Erstellen Sie Ihren privaten Cluster.

    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 internalIp für true unter gke in der Zielkonfiguration fest.

  2. Erstellen Sie in Cloud Build, einen privaten Worker-Pool mit dem Sie die Bereitstellung in diesem privaten Cluster ausführen können.

  3. Konfigurieren Sie die Ausführungsumgebung so, dass dieser private Pool verwendet wird.

    Sie müssen diesen Pool für RENDER verwenden. Sie können ihn auch für DEPLOY und VERIFY verwenden. Hier sehen Sie 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 Auf private GKE-Cluster über private Cloud Build-Pools mit Identity Service for GKE zugreifen und Auf private GKE-Cluster mit privaten Cloud Build-Pools zugreifen.

Hinweise zu Projekten und Berechtigungen

Sie können ein Ziel so konfigurieren, dass ein privater Worker-Pool verwendet wird, der die Bereitstellung in einem privaten Cluster 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

Um mit einem privaten Pool zu kommunizieren, der Zugriff auf eine VPC hat und sich in einem anderen Projekt als Ihr Ziel befindet, benötigt der Cloud Deploy Dienst-Agent ausreichende Berechtigungen zur Kommunikation mit diesem Projekt.

Das Ausführungs-Dienstkonto 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.

An GKE angehängte Clusterziele und Connect-Gateway verwenden

Sie können ein Ziel so konfigurieren, dass die Bereitstellung in einem privaten GKE-Cluster mit Zielen erfolgt, die an GKE angehängte Cluster und das Connect-Gatewayverwenden.

Bei dieser Methode müssen Sie keine Virtual Private Cloud- oder VPN-Verbindungen verwenden.

Nächste Schritte