Container-Images bereitstellen

Auf dieser Seite wird beschrieben, wie Sie neue Dienste und neue Überarbeitungen in Cloud Run for Anthos in Google Cloud bereitstellen.

Vorbereitung

Zur Verwendung des gcloud-Befehlszeilentools muss das Cloud SDK installiert und konfiguriert sein.

Für das Deployment erforderliche Berechtigungen

Sie benötigen Berechtigungen zum Erstellen, Aktualisieren und Löschen für die apiGroup serving.knative.dev und die Art Service. Darüber hinaus benötigen Sie EINE der folgenden Rollen:

  • Inhaber
  • Bearbeiter
  • GKE-Administrator
  • GKE-Entwickler

Bereitstellbare Images

Es gibt keine Größenbeschränkung für Container-Images, die Sie bereitstellen können.

Sie können Container aus jeder Container-Registry wie Docker Hub verwenden. Informationen zum Bereitstellen privater Images aus anderen Registries als Container Registry oder Artifact Registry finden Sie unter Private Container-Images aus anderen Container Registries bereitstellen.

Neuen Dienst bereitstellen

Sie können ein Container-Image mit einem Tag (z. B. gcr.io/my-project/my-image:latest) oder mit einem genauen Digest (z. B. gcr.io/my-project/my-image@sha256:41f34ab970ee...) angeben.

Wenn Sie einen Dienst zum ersten Mal bereitstellen, wird die erste Überarbeitung erstellt. Überarbeitungen können nach der Erstellung nicht mehr geändert werden. Wenn Sie den Dienst aus einem Container-Image-Tag bereitstellen, wird er in einen Digest aufgelöst. Die Überarbeitung bedient anschließend immer diesen speziellen Digest.

Sie können einen Container über die Cloud Console, die gcloud-Befehlszeile oder eine YAML-Konfigurationsdatei bereitstellen.

Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.

Standardkonfiguration des gcloud-Standorts

Wenn Sie zuvor einen Standort in der default-Konfiguration des Cloud SDK konfiguriert haben, verwenden Ihre gcloud-Befehle diese Werte standardmäßig, u. a.:

  • compute/region
  • compute/zone
  • run/cluster
  • run/cluster_location
  • run/platform
  • run/region

Führen Sie den folgenden gcloud config-Befehl aus, um die Einstellungen für die Konfiguration default aufzurufen:

gcloud config configurations describe default

Console

So stellen Sie ein Container-Image bereit:

  1. Rufen Sie Cloud Run for Anthos in der Cloud Console auf:

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, um die entsprechende Seite aufzurufen.

    Füllen Sie das Formular aus:

    1. Wählen Sie die Cloud Run for Anthos-Plattform aus, auf der Sie Folgendes bereitstellen:

      • Cloud Run for Anthos für die Bereitstellung in GKE- oder Anthos-Clustern auf VMware-Cluster mit aktiviertem Cloud Run for Anthos.
    2. Wählen Sie im Drop-down-Menü einen der verfügbaren GKE-Cluster für Ihren Dienst aus.

    3. Geben Sie den gewünschten Dienstnamen ein. Dienstnamen dürfen pro Region und Projekt oder pro Cluster nur einmal vorkommen. Ein Dienstname kann später nicht mehr geändert werden.

    4. Unter Verbindung:

      • Wählen Sie Intern aus, wenn Sie den Zugriff auf andere Cloud Run for Anthos-Dienste oder Dienste im Cluster beschränken möchten, die Istio verwenden.
      • Wählen Sie Extern aus, um externen Zugriff auf Ihren Dienst zuzulassen.

      Sie können die Verbindungsoption jederzeit ändern. Eine Beschreibung hierzu finden Sie unter Verbindungseinstellungen für Cloud Run in GKE-Dienst ändern.

    5. Klicken Sie auf Weiter, um mit der zweiten Seite des Diensterstellungsformulars fortzufahren:

      Bild

      Füllen Sie das Formular aus:

      1. Geben Sie im Textfeld Container-Image-URL die URL eines Images ein. Beispiel: gcr.io/myproject/my-image:latest

        Zur Verwendung von Artifact Registry mit Ihren privaten Container-Images müssen Sie den Image-Digest nutzen. Wenn Sie das Image-Tag Ihrer privaten Container-Images verwenden möchten, müssen Sie ein imagePullSecret erstellen und verwenden, bis das bekannte Problem behoben ist.

      2. Optional können Sie auf Erweiterte Einstellungen anzeigen und die nachfolgenden Tabs klicken, um diese Einstellungen vorzunehmen:

      3. Klicken Sie auf Erstellen, um das Image in Cloud Run for Anthos bereitzustellen. Warten Sie dann, bis die Bereitstellung abgeschlossen ist.

    Sie haben jetzt einen Dienst in einem für Cloud Run for Anthos aktivierten Cluster bereitgestellt.

Befehlszeile

So stellen Sie ein Container-Image bereit:

  1. Führen Sie den Befehl gcloud run deploy aus:

    gcloud run deploy SERVICE --image IMAGE_URL

    • Ersetzen Sie SERVICE durch den Namen des Dienstes, für den Sie die Bereitstellung durchführen möchten. Wenn der angegebene Dienst nicht existiert, wird ein neuer Dienst erstellt.

    • Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. gcr.io/myproject/my-image:latest.

    • Zusätzliche Bereitstellungsoptionen:

      • Für die Bereitstellung in einem anderen Namespace als dem Standard müssen Sie diesen Namespace mit dem Parameter --namespace angeben.

      • Für Bereitstellungen an einem anderen Standort als der Standardkonfiguration, müssen Sie das Argument name und location des Clusters mit den Parametern --cluster und --cluster-location angeben:

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Mit dem Flag --connectivity können Sie Verbindungsoptionen für den internen und externen Zugriff festlegen. Eine Beschreibung hierzu finden Sie unter Verbindungseinstellungen für Dienste ändern.

      • Für Cloud Run for Anthos auf VMware müssen Sie den Parameter --kubeconfig einfügen und Ihre Konfigurationsdatei angeben:

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Warten Sie, bis die Bereitstellung abgeschlossen ist. Nach erfolgreichem Abschluss wird eine Bestätigung zusammen mit der URL des bereitgestellten Dienstes angezeigt.

YAML

Sie können Ihre Dienstspezifikation in einer YAML-Datei speichern und dann über die gcloud-Befehlszeile bereitstellen.

  1. Erstellen Sie eine neue service.yaml-Datei mit folgendem Inhalt:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    Ersetzen Sie

    • SERVICE durch den Namen Ihres Cloud Run for Anthos-Dienstes.
    • IMAGE durch die URL Ihres Container-Images. Zur Verwendung von Artifact Registry mit Ihren privaten Container-Images müssen Sie den Image-Digest nutzen. Wenn Sie das Image-Tag Ihrer privaten Container-Images verwenden möchten, müssen Sie ein imagePullSecret erstellen und verwenden, bis das bekannte Problem behoben ist.

    Sie können auch weitere Konfigurationen angeben, z. B. Umgebungsvariablen oder Speicherlimits.

  2. Stellen Sie den neuen Dienst mit dem folgenden Befehl bereit:

    gcloud beta run services replace service.yaml

Cloud Code

Lesen Sie für die Bereitstellung mit Cloud Code die Anleitungen zu IntelliJ und Visual Studio Code.

Neue Überarbeitung eines vorhandenen Dienstes bereitstellen

Sie können eine neue Überarbeitung über die Cloud Console, die gcloud-Befehlszeile oder eine YAML-Konfigurationsdatei bereitstellen.

Beachten Sie, dass beim Ändern von Konfigurationseinstellungen eine neue Überarbeitung erstellt wird, auch wenn das Container-Image nicht geändert wird. Überarbeitungen können nach der Erstellung nicht mehr geändert werden.

Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.

Console

So stellen Sie eine neue Überarbeitung eines vorhandenen Dienstes bereit:

  1. Rufen Sie Cloud Run for Anthos in der Cloud Console auf:

    Öffnen Sie Cloud Run.

  2. Klicken Sie in der Übersicht auf den zu aktualisierenden Dienst, um dessen Details anzuzeigen.

  3. Klicken Sie auf NEUE ÜBERARBEITUNG BEARBEITEN UND BEREITSTELLEN. Dadurch wird das Formular für die Bereitstellung der Überarbeitung angezeigt:

    Bild

  4. Geben Sie bei Bedarf die URL des neu bereitzustellenden Container-Images an.

  5. Legen Sie optional Folgendes fest:

  6. Um den gesamten Traffic an die neue Überarbeitung zu senden, aktivieren Sie das Kästchen Diese Überarbeitung sofort bereitstellen. Wenn Sie eine neue Überarbeitung nach und nach einführen möchten, entfernen Sie das Häkchen aus diesem Kästchen. Dadurch erhalten Sie eine Bereitstellung, bei der kein Traffic an die neue Überarbeitung gesendet wird. Folgen Sie der Anleitung für schrittweise Einführungen nach der Bereitstellung.

  7. Klicken Sie auf BEREITSTELLEN und warten Sie, bis die Bereitstellung abgeschlossen ist.

Befehlszeile

So stellen Sie ein Container-Image bereit:

  1. Führen Sie den Befehl gcloud run services update aus:

    gcloud run services update SERVICE --image IMAGE_URL
    • Für jede Überarbeitung wird automatisch ein Überarbeitungssuffix zugewiesen. Wenn Sie ein eigenes Überarbeitungssuffix angeben möchten, fügen Sie den Parameter --revision-suffix hinzu.

    • Ersetzen Sie SERVICE durch den Namen des Dienstes, für den Sie die Bereitstellung durchführen möchten. Wenn der angegebene Dienst nicht existiert, wird ein neuer Dienst erstellt.

    • Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. gcr.io/myproject/my-image:latest.

    • Zusätzliche Bereitstellungsoptionen:

      • Für die Bereitstellung in einem anderen Namespace als dem Standard müssen Sie diesen Namespace mit dem Parameter --namespace angeben.

      • Für Bereitstellungen an einem anderen Standort als der Standardkonfiguration, müssen Sie das Argument name und location des Clusters mit den Parametern --cluster und --cluster-location angeben:

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Mit dem Flag --connectivity können Sie Verbindungsoptionen für den internen und externen Zugriff festlegen. Eine Beschreibung hierzu finden Sie unter Verbindungseinstellungen für Dienste ändern.

      • Für Cloud Run for Anthos auf VMware müssen Sie den Parameter --kubeconfig einfügen und Ihre Konfigurationsdatei angeben:

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Warten Sie, bis die Bereitstellung abgeschlossen ist. Nach erfolgreichem Abschluss wird eine Bestätigung zusammen mit der URL des bereitgestellten Dienstes angezeigt.

YAML

Sie können die Konfiguration eines vorhandenen Dienstes in eine YAML-Datei herunterladen mit dem gcloud run services describe Befehl mithilfe von Flag --format=export. Sie können diese YAML-Datei dann ändern und mit dem Befehl gcloud beta run services replace diese Änderungen bereitstellen. Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.

  1. Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen service.yaml in dem lokalen Arbeitsbereich herunter:

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE durch den Namen Ihres Cloud Run for Anthos-Dienstes.

    1. Aktualisieren Sie in Ihrer lokalen Datei die Revisionseinstellungen in jedem untergeordneten Attribut von spec.template.

    2. Stellen Sie die neue Überarbeitung bereit:

      gcloud beta run services replace service.yaml

Cloud Code

Weitere Informationen zum Bereitstellen einer neuen Version eines vorhandenen Dienstes mit Cloud Code finden Sie in den Anleitungen zu IntelliJ und Visual Studio Code.

Images aus anderen Google Cloud-Projekten bereitstellen

Sie können Container-Images aus anderen Google Cloud-Projekten bereitstellen, wenn Sie die richtigen IAM-Berechtigungen festlegen:

  1. Öffnen Sie in der Cloud Console das Projekt für den Cloud Run for Anthos-Dienst.

  2. Zur IAM-Seite

  3. Führen Sie je nach verwendetem Dienst Folgendes aus:

  4. Öffnen Sie das Projekt mit der gewünschten Container Registry.

  5. Zur IAM-Seite

  6. Klicken Sie auf Hinzufügen, um ein neues Mitglied hinzuzufügen.

  7. Fügen Sie in das Textfeld Neue Mitglieder die zuvor kopierte E-Mail-Adresse des Dienstkontos ein.

  8. Wählen Sie in der Drop-down-Liste Rolle auswählen die Rolle Storage -> Storage-Objekt-Betrachter aus.

  9. Stellen Sie das Container-Image für das Projekt bereit, das den Cloud Run for Anthos-Dienst enthält.

Private Container-Images aus anderen Container Registries bereitstellen

In diesem Abschnitt wird beschrieben, wie Sie die richtigen Berechtigungen zum Bereitstellen von Container-Images aus einer beliebigen privaten Registry in Cloud Run for Anthos einrichten. Eine private Container-Registry erfordert Anmeldedaten, um auf das Container-Image zuzugreifen. Beachten Sie, dass Sie diese Schritte nicht ausführen müssen, wenn Sie private Container-Images aus Container Registry oder Artifact Registry im selben Projekt wie Ihren Cluster bereitstellen.

Damit Sie ein privates Container-Image bereitstellen können, müssen Sie ein Kubernetes-Secret vom Typ imagePullSecret erstellen und mit einem Dienstkonto verknüpfen:

  1. Erstellen Sie ein imagePullSecret-Secret mit dem Namen container-registry:

    kubectl create secret docker-registry container-registry \
      --docker-server=DOCKER_REGISTRY_SERVER \
      --docker-email=REGISTRY_EMAIL \
      --docker-username=REGISTRY_USER \
      --docker-password=REGISTRY_PASSWORD
    • Ersetzen Sie DOCKER_REGISTRY_SERVER durch Ihren privaten Registry-FQDN (z. B. https://gcr.io/ für Container Registry oder https://hub.docker.com für DockerHub).
    • Ersetzen Sie REGISTRY_EMAIL durch Ihre E-Mail-Adresse.
    • Ersetzen Sie REGISTRY_USER durch Ihren Container Registry-Nutzernamen.

      Wenn Sie Container Registry oder Artifact Registry verwenden und langlebige Anmeldedaten speichern und abrufen möchten, anstatt kurzlebige Zugriffstokens zu übergeben, finden Sie weitere Informationen unter Authentifizierungsmethoden: JSON-Schlüsseldatei.

    • Ersetzen Sie REGISTRY_PASSWORD durch Ihr Container Registry-Passwort.

  2. Öffnen Sie Ihr Standarddienstkonto:

    kubectl edit serviceaccount default --namespace default

    Jeder Namespace in Ihrem Kubernetes-Cluster hat ein Standarddienstkonto namens default. Dieses Standarddienstkonto wird verwendet, um Ihr Container-Image abzurufen, sofern Sie beim Bereitstellen des Cloud Run for Anthos-Dienstes nichts anderes angegeben haben.

  3. Fügen Sie das neu erstellte imagePullSecret-Secret Ihrem Standarddienstkonto hinzu:

    imagePullSecrets:
    - name: container-registry
    

    Ihr Dienstkonto sollte nun so aussehen:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: default
      namespace: default
      ...
    secrets:
    - name: default-token-zd84v
    # The secret we just created:
    imagePullSecrets:
    - name: container-registry
    

Jetzt ist für alle neuen Pods, die im aktuellen default-Namespace erstellt werden, das imagePullSecret-Secret definiert.

Mit aktivierter automatischer Istio-Sidecar-Einfügung bereitstellen

Um Ihren Dienst im Namespace mit aktivierter automatischer Istio-Sidecar-Einfügung bereitzustellen, müssen Sie eine separate Istio-Installation verwenden.

Dienste in einem internen Netzwerk bereitstellen

Die Bereitstellung von Diensten in einem internen Netzwerk ist nützlich für Unternehmen, die ihren Mitarbeitern interne Anwendungen zur Verfügung stellen, und für Dienste, die von Clients verwendet werden, die außerhalb des Cloud Run for Anthos-Clusters ausgeführt werden.

Weitere Informationen zum Bereitstellen von Diensten in einem internen Netzwerk finden Sie unter Privates internes Netzwerk einrichten.

Nächste Schritte

Nachdem Sie einen neuen Dienst bereitgestellt haben, können Sie Folgendes tun:

Mithilfe von Cloud Build-Triggern können Sie die Builds und Bereitstellungen Ihrer Cloud Run for Anthos-Dienste automatisieren.