Anwendung in GKE in Azure bereitstellen

Auf dieser Seite wird beschrieben, wie Sie einen Cluster und einen Knotenpool erstellen und dann mit GKE on Azure eine Beispielanwendung bereitstellen.

Terraform-Unterstützung

Wenn Sie mit Terraform vertraut sind, können Sie die auf GitHub verfügbaren Terraform-Skripts verwenden, um die Voraussetzungen zu automatisieren und einen Cluster zu erstellen.

Hinweise

Bevor Sie einen Cluster erstellen, müssen Sie die Voraussetzungen erfüllen. Insbesondere müssen Sie die folgenden Ressourcen bereitstellen:

  • Ein virtuelles Azure-Netzwerk, in dem der Cluster ausgeführt wird.
  • Ein Subnetz für die Replikate der Kubernetes-Steuerungsebene.
  • Azure-Rollenzuweisungen, die GKE on Azure über ein Dienstprinzip Zugriff auf Ihre Azure-Umgebung gewähren.
  • Eine AzureClient-Ressource, die GKE on Azure verwendet, um sich bei Azure-Diensten zu authentifizieren und Ressourcen in Ihrem Azure-Konto zu verwalten.
  • Ein SSH-Schlüsselpaar für den Zugriff auf virtuelle Azure-Maschinen im Cluster.

Es liegt in Ihrer Verantwortung, diese Ressourcen zu erstellen und zu verwalten, die von allen Clustern gemeinsam genutzt werden können. Alle anderen zugrunde liegenden Azure-Ressourcen für Ihren Cluster werden von GKE on Azure verwaltet.

Standardeinstellungen für die gcloud CLI festlegen

Verwenden Sie die gcloud CLI, um die Standardeinstellungen für Ihr Standardprojekt und Ihre Google Cloud-Region zu konfigurieren.

Ihr Projekt hat eine Projekt-ID als eindeutige Kennzeichnung. Wenn Sie ein Projekt erstellen, können Sie die automatisch generierte Projekt-ID verwenden oder eine eigene erstellen.

Ihre Google Cloud-Region ist ein Standort, von dem aus Ihre Cluster verwaltet werden. z. B. us-west1. Weitere Informationen finden Sie unter Verwaltungsregionen.

Wenn Sie diese Standardeinstellungen konfigurieren, müssen Sie sie beim Ausführen der Google Cloud CLI nicht angeben. Um Einstellungen festzulegen oder Standardeinstellungen zu überschreiben können Sie auch die Flags --project und --location an die Google Cloud CLI übergeben.

Wenn Sie GKE on Azure-Ressourcen nach der Konfiguration des Standardprojekts und -standorts erstellen, werden die Ressourcen automatisch in diesem Projekt und an diesem Standort erstellt.

So legen Sie Standardeinstellungen fest:

  1. Legen Sie das Standardprojekt fest:

    gcloud config set project PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  2. Legen Sie den standardmäßigen Verwaltungsort fest:

    gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION
    

    Ersetzen Sie GOOGLE_CLOUD_LOCATION durch Ihren Standort, z. B. us-west1.

Azure-Ressourcen-IDs für Ihren Cluster auswählen

Ressourcengruppen-ID auswählen

Speichern Sie die Ressourcengruppe des Clusters in einer Umgebungsvariablen, die den folgenden Befehl ausführt:

CLUSTER_RESOURCE_GROUP_ID=$(az group show --query id --output tsv \
    --resource-group=CLUSTER_RESOURCE_GROUP_NAME)

Ersetzen Sie CLUSTER_RESOURCE_GROUP_NAME durch den Namen der Ressourcengruppe, in der Sie Ihre Clusterressourcen bereitstellen möchten. Diese müssen Sie im vorherigen Schritt Azure-Ressourcengruppe erstellen eingerichtet haben.

Virtuelle Netzwerk-ID auswählen

Speichern Sie die VNet-ID Ihres Clusters in einer Umgebungsvariablen, indem Sie den folgenden Befehl ausführen:

VNET_ID=$(az network vnet show --query id --output tsv \
    --resource-group=VNET_RESOURCE_GROUP_NAME \
    --name=VNET_NAME)

Ersetzen Sie Folgendes:

Subnetz-ID auswählen

Speichern Sie die Subnetz-ID des Clusters in einer Umgebungsvariablen, indem Sie den folgenden Befehl ausführen:

SUBNET_ID=$(az network vnet subnet show --query id --output tsv \
    --resource-group VNET_RESOURCE_GROUP_NAME \
    --vnet-name VNET_NAME \
    --name SUBNET_NAME)

Ersetzen Sie:

  • VNET_RESOURCE_GROUP_NAME: ein vorhandener Ressourcengruppenname, der Ihr virtuelles Netzwerk enthält. Dies kann der Name der Ressourcengruppe sein, die Sie unter Virtuelles Azure-Netzwerk erstellen eingerichtet haben.
  • VNET_NAME: der Name des virtuellen Netzwerks. Das kann der Name Ihres virtuellen Netzwerks sein, das Sie unter Virtuelles Azure-Netzwerk erstellen eingerichtet haben.
  • SUBNET_NAME: der Name Ihres Subnetzes, z. B. default

CIDR-Bereiche für den Cluster auswählen

Kubernetes erfordert zwei CIDR-Bereiche, die für den Cluster bereitgestellt werden müssen. Diese CIDR-Bereiche sollten so ausgewählt werden, dass sie sich nicht mit den von Ihren VPC-Subnetzen verwendeten CIDR-Bereichen überschneiden. Sie sollten groß genug für die maximal erwartete Größe Ihres Clusters sein.

  • CIDR-Bereich der Pod-Adresse: Wenn ein neuer Pod erstellt wird, wird ihm eine IP-Adresse aus diesem Bereich zugewiesen. Beispielbereich: 192.168.208.0/20

  • CIDR-Bereich der Adresse: Wenn ein neuer Dienst erstellt wird, wird ihm eine IP-Adresse aus diesem Bereich zugewiesen. Beispielbereich: 192.168.224.0/20

Cluster erstellen

Verwenden Sie den folgenden Befehl, um einen Cluster in GKE on Azure zu erstellen.

gcloud container azure clusters create azure-cluster-0 \
    --cluster-version 1.28.7-gke.1700 \
    --azure-region AZURE_REGION \
    --fleet-project FLEET_PROJECT_ID \
    --client CLIENT_NAME \
    --resource-group-id $CLUSTER_RESOURCE_GROUP_ID \
    --vnet-id $VNET_ID \
    --subnet-id $SUBNET_ID \
    --pod-address-cidr-blocks POD_CIDR_BLOCK \
    --service-address-cidr-blocks SERVICE_CIDR_BLOCK \
    --ssh-public-key "SSH_PUBLIC_KEY" \
    --tags "google:gkemulticloud:cluster=azure-cluster-0"

Ersetzen Sie:

  • AZURE_REGION: eine unterstützte Azure-Region, die Ihrer Google Cloud-Region zugeordnet ist
  • FLEET_PROJECT_ID durch das Flotten-Hostprojekt, in dem der Cluster registriert wird.
  • CLIENT_NAME: der Name Ihres AzureClient
  • POD_CIDR_BLOCK: der Pod-Adressbereich Ihres Clusters
  • SERVICE_CIDR_BLOCK: der Dienstadressbereich Ihres Clusters
  • SSH_PUBLIC_KEY durch den Text Ihres öffentlichen SSH-Schlüssels, wie im vorherigen Schritt SSH-Schlüsselpaar erstellen erstellt. Wenn Sie in diesem Schritt Ihren öffentlichen Schlüssel in einer Umgebungsvariablen gespeichert haben, können Sie ${SSH_PUBLIC_KEY} verwenden.

Weitere Informationen und optionale Parameter finden Sie auf der Referenzseite für gcloud-Container, die Azure-Cluster erstellen.

Knotenpool erstellen

Erstellen Sie mit der Google Cloud CLI einen Knotenpool:

gcloud container azure node-pools create pool-0 \
    --cluster azure-cluster-0 \
    --node-version 1.28.7-gke.1700 \
    --vm-size Standard_B2s \
    --max-pods-per-node 110 \
    --min-nodes 1 \
    --max-nodes 5 \
    --ssh-public-key "SSH_PUBLIC_KEY" \
    --subnet-id $SUBNET_ID \
    --tags "google:gkemulticloud:cluster=azure-cluster-0"

Ersetzen Sie SSH_PUBLIC_KEY durch den Text Ihres öffentlichen SSH-Schlüssels, wie im vorherigen Schritt SSH-Schlüsselpaar erstellen erstellt. Wenn Sie Ihren öffentlichen Schlüssel in einer Umgebungsvariablen gespeichert haben, können Sie ${SSH_PUBLIC_KEY} verwenden.

Clusterstatus ansehen

Nachdem Sie einen Cluster und einen Knotenpool erstellt haben, können Sie den Status eines Clusters über die Google Cloud-Befehlszeile oder die Google Cloud Console ansehen. Wählen Sie zum Aufrufen des Clusterstatus aus, ob Sie die Google Cloud-Befehlszeile oder die Google Cloud Console verwenden, und führen Sie die folgenden Schritte aus:

gcloud

Verwenden Sie den Befehl gcloud container azure clusters describe, um Details zu Ihrem Cluster abzurufen:

gcloud container azure clusters describe CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

Dabei gilt:

  • CLUSTER_NAME: der Name des Clusters
  • GOOGLE_CLOUD_LOCATION: der Name des Google Cloud-Standorts, der den Cluster verwaltet.

Google Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Übersicht über Google Kubernetes Engine-Cluster auf.

    Zu GKE-Clustern

  2. Die Cluster werden nach Name und Standort aufgelistet.

  3. Klicken Sie auf den Namen des Clusters. Es wird ein Bereich mit Informationen zum Cluster angezeigt, einschließlich dessen Status und aktivierter Features.

Authentifizierungsdaten für den Cluster abrufen

Nach dem Erstellen des Clusters müssen Sie Anmeldedaten für die Authentifizierung abrufen, damit Sie mit dem Cluster interagieren können.

gcloud container azure clusters get-credentials azure-cluster-0

Mit diesem Befehl wird kubectl für den Zugriff auf den Cluster konfiguriert, den Sie mit Connect-Gateway erstellt haben. Sie benötigen mindestens einen Knotenpool, um das Connect-Gateway zu verwenden, da es auf dem Connect-Agent basiert, der als Deployment im Cluster ausgeführt wird.

Anwendung im Cluster bereitstellen

Nachdem Sie einen Cluster erstellt haben, können Sie eine containerisierte Anwendung bereitstellen. Für diese Kurzanleitung können Sie unsere Beispielwebanwendung hello-app bereitstellen.

Sie verwenden Kubernetes-Objekte, um die Clusterressourcen zu erstellen und zu verwalten. Sie verwenden das Deployment-Objekt für die Bereitstellung zustandsloser Anwendungen wie Webserver. Über Dienstobjekte werden Regeln und Load-Balancer für den Zugriff auf Ihre Anwendung aus dem Internet festgelegt.

Deployment erstellen

Zum Ausführen von hello-app in Ihrem Cluster müssen Sie die Anwendung mit folgendem Befehl bereitstellen:

kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

Der Kubernetes-Befehl kubectl create deployment erstellt ein Deployment namens hello-server. Der Pod des Deployments führt das Container-Image hello-app aus.

Dabei gilt:

  • --image gibt das bereitzustellende Container-Image an. In diesem Fall ruft der Befehl das Beispiel-Image aus einem us-docker.pkg.dev/google-samples/containers/gke/hello-app-Artifact Registry-Repository ab. :1.0 gibt die jeweils abzurufende Image-Version an. Wenn Sie keine Version angeben, wird das mit latest getaggte Image verwendet.

Deployment freigeben

Nach dem Deployment der Anwendung müssen Sie sie für das Internet freigeben, damit Nutzer darauf zugreifen können. Sie können Ihre Anwendung bereitstellen, indem Sie einen Dienst erstellen, eine Kubernetes-Ressource, die Ihre Anwendung für externen Datenverkehr verfügbar macht.

Führen Sie den folgenden kubectl expose-Befehl aus, um die Anwendung freizugeben:

kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080

Wenn Sie das Flag --type LoadBalancer übergeben, wird ein Azure-Load-Balancer für den Container erstellt. Das Flag --port initialisiert den öffentlichen Port 80 für das Internet und das Flag --target-port leitet den Traffic zu Port 8080 der Anwendung weiter.

Load-Balancer werden nach den Preisen für Azure-Load-Balancer abgerechnet.

Anwendung prüfen und ansehen

  1. Sehen Sie sich die ausgeführten Pods mit kubectl get pods an:

    kubectl get pods
    

    Auf dem Cluster müsste ein hello-server-Pod ausgeführt werden.

  2. Sehen Sie sich den Dienst hello-server mit kubectl get service an:

    kubectl get service hello-server
    

    Kopieren Sie in der Ausgabe dieses Befehls die externe IP-Adresse aus der Spalte EXTERNAL-IP.

  3. Rufen Sie die Anwendung in Ihrem Webbrowser auf. Geben Sie dazu die externe IP-Adresse mit dem freigegebenen Port ein:

    http://EXTERNAL-IP
    

Sie haben gerade eine containerisierte Webanwendung in GKE on Azure bereitgestellt.

Bereinigen

  1. Löschen Sie den Dienst und das Deployment der Anwendung:

    kubectl delete service hello-server
    kubectl delete deployment hello-server
    
  2. Löschen Sie den Knotenpool mit gcloud container azure node-pools delete:

    gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0
    
  3. Löschen Sie den Cluster mit gcloud container azure clusters delete:

    gcloud container azure clusters delete azure-cluster-0
    

Nächste Schritte