Container konfigurieren

Auf dieser Seite wird beschrieben, wie Sie den Containerport, den Einstiegspunktbefehl und die Argumente für einen Cloud Run-Dienst konfigurieren.

Wenn Cloud Run einen Container startet, werden der Standardeinstiegspunktbefehl und die Standardbefehlsargumente des Images ausgeführt. Wenn Sie den Standardeinstiegspunkt und die Befehlsargumente des Images überschreiben möchten, können Sie die Felder command und args in der Containerkonfiguration verwenden. Das Feld command gibt den tatsächlichen Befehl an, der vom Container ausgeführt wird. Das Feld args gibt die Argumente an, die an diesen Befehl übergeben werden.

Pro Dienst können maximal 1.000 Argumente pro Container verwendet werden.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Konfigurieren und Bereitstellen von Cloud Run-Diensten benötigen:

Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run Service mit Google Cloud APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.

Containerport konfigurieren

Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.

Bei Cloud Run-Diensten fügt Cloud Run die Umgebungsvariable PORT in den Container ein. Wenn Sie mehrere Container für einen Dienst bereitstellen, ist dies der Container mit eingehendem Traffic. Der Container beobachtet den von der PORT-Umgebungsvariable definierten Port und nicht einen bestimmten hartcodierten Port. Wenn dies nicht möglich ist, konfigurieren Sie das Überwachen des Ports, der Anfragen an den Container sendet. Beachten Sie, dass die Porteinstellungen nicht für Cloud Run-Jobs gelten.

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Zu Cloud Run

  2. Klicken Sie auf Container bereitstellen und wählen Sie Dienst aus, um einen neuen Dienst zu konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen aus und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Container.

    Bild

    • Geben Sie den Port an, an den Anfragen gesendet werden sollen, sofern Sie nicht den Standardwert 8080 verwenden möchten. Dadurch wird auch die Umgebungsvariable PORT festgelegt.
  5. Klicken Sie auf Erstellen oder Bereitstellen.

gcloud

Mit dem folgenden Befehl können Sie die Portkonfiguration eines Dienstes aktualisieren:

gcloud run services update SERVICE --port PORT

Ersetzen

  • SERVICE durch den Namen des Dienstes.
  • PORT durch den Port, an den Anfragen gesendet werden. Der Standardport ist 8080.

Sie können Ports auch während der Bereitstellung mit dem folgenden Befehl konfigurieren:

gcloud run deploy --image IMAGE_URL --port PORT

Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aktualisieren Sie das Attribut containerPort::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: PORT
    

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes
    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PORT durch den Port, an den Anfragen gesendet werden.
    • REVISION durch einen neuen Überarbeitungsnamen oder löschen (falls vorhanden). Wenn Sie einen neuen Überarbeitungsnamen angeben, muss er die folgenden Kriterien erfüllen:
      • Beginnt mit SERVICE-
      • Enthält nur Kleinbuchstaben, Ziffern und -
      • Endet nicht mit -
      • Darf nicht mehr als 63 Zeichen enthalten
      .
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Einstiegspunkt und Argumente konfigurieren

Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.

Der angegebene Containerbefehl und die angegebenen Argumente überschreiben das Standard-Image ENTRYPOINT und CMD.

Sie können Einstiegspunktbefehl und -argumente über die Google Cloud Console, die Google Cloud CLI oder eine YAML-Datei festlegen, wenn Sie einen neuen Dienst erstellen oder eine neue Überarbeitung bereitstellen:

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Zu Cloud Run

  2. Klicken Sie auf Container bereitstellen und wählen Sie Dienst aus, um einen neuen Dienst zu konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen aus und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Container.

    Bild

    • Geben Sie den Befehl an, den der Container ausführen soll, wenn dieser von dem Befehl abweicht, der in Ihrem Container definiert ist. Geben Sie optional die Argumente für den Einstiegspunktbefehl an.
  5. Klicken Sie auf Erstellen oder Bereitstellen.

gcloud

So aktualisieren Sie den Startbefehl und die Argumente für einen vorhandenen Dienst:

gcloud run services update SERVICE --command COMMAND --args ARG1,ARG-N

Ersetzen

  • COMMAND durch den Befehl, mit dem der Container gestartet werden soll, wenn Sie nicht den Standardbefehl verwenden.
  • ARG1 durch das Argument, das Sie an den Containerbefehl senden, und verwenden Sie für mehr als ein Argument eine durch Kommas getrennte Liste.

So geben Sie Einstiegspunkt und Argumente während der Bereitstellung eines neuen oder vorhandenen Dienstes an:

gcloud run deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Wenn Sie alle festgelegten Einstiegspunktbefehle und -argumente löschen (die Containerstandardeinstellungen wiederherstellen) möchten, geben Sie leere Strings so an:

gcloud run deploy --image IMAGE_URL --command "" --args ""

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aktualisieren Sie die Attribute command und args:

    spec:
      containers:
      - image: IMAGE_URL
        command:
        - COMMAND
        args:
        - "ARG1"
        - "ARG-N"
    

    Ersetzen

    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • COMMAND durch den Befehl, mit dem der Container gestartet werden soll, wenn Sie nicht den Standardbefehl verwenden.
    • ARG1 durch das Argument, das Sie an den Containerbefehl senden. Wenn Sie mehrere Argumente verwenden, geben Sie jedes Argument in einer eigenen Zeile an, z. B. ARG-N.
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Terraform

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Die folgende google_cloud_run_v2_service-Ressource gibt einen Befehl und Argumente an. Ersetzen Sie /server durch den Befehl, der zum Starten des Containers verwendet wird, und fügen Sie alle erforderlichen Argumente dem Array args hinzu.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-containers"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      # Container "entry-point" command
      command = ["/server"]

      # Container "entry-point" args
      args = []
    }
  }
}

Gleichheitszeichen oder Kommas in Argumenten verwenden

Wenn Sie in Ihren Argumenten Gleichheitszeichen verwenden, geben Sie diese im folgenden Format an:

gcloud run deploy  \
  --args="--repo-allowlist=github.com/example/example_demo"

Wenn Ihre Argumente Kommas verwenden, finden Sie unter Umgebungsvariablen konfigurieren ausführliche Informationen zur Maskierung.

Container-Startreihenfolge für Sidecar-Bereitstellungen konfigurieren

Verwenden Sie die Funktion für Containerabhängigkeiten, um die Startreihenfolge für Container in einer Sidecar-Bereitstellung anzugeben. Sie geben alle Container mit Abhängigkeiten an und listen die Container auf, von denen sie abhängig sind: Diese Container werden zuerst gestartet. Die Container, die keine Abhängigkeiten haben, werden immer zuerst und gleichzeitig gestartet.

Sie müssen Systemdiagnose-Starttests verwenden, wenn Sie dieses Feature erfolgreich verwenden möchten. Mit der Startprüfung kann Cloud Run den Status eines abhängigen Containers prüfen. So wird sichergestellt, dass dieser erfolgreich durchlaufen wird, bevor er den nächsten Container startet. Wenn Sie keine Systemdiagnosen verwenden, werden Container in der angegebenen Reihenfolge auch dann gestartet, wenn die Container, von denen sie abhängen, nicht gestartet werden können.

Beachten Sie, dass Container für eingehenden Traffic eine Standardprüfung der Start-Systemdiagnose haben.

Sie können die Google Cloud Console, die Google Cloud-Befehlszeile oder YAML verwenden, um die Startreihenfolge anzugeben:

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud Run.

    Zu Cloud Run

    • Klicken Sie für einen vorhandenen Dienst auf den Dienst in der Liste und wählen Sie Neue Überarbeitung bearbeiten und bereitstellen aus, um das Formular für die Bereitstellung der Überarbeitung anzuzeigen.
    • Klicken Sie für einen neuen Dienst auf Container bereitstellen und wählen Sie Dienst aus, um das Formular Dienst erstellen aufzurufen.
  2. Geben Sie für einen neuen Dienst den Dienstnamen, die URL des eingehenden Containers, die CPU-Zuordnung, die Steuerung des eingehenden Traffics und die Authentifizierung an. Führen Sie auf dem Tab Container, Volumes, Netzwerk, Sicherheit die folgenden Schritte aus:

    1. Konfigurieren Sie den Container für eingehenden Traffic.
    2. Klicken Sie auf Container hinzufügen, um alle anderen Container hinzuzufügen, die Sie bereitstellen.
    3. Konfigurieren Sie für alle Container mit Ausnahme des Containers mit eingehendem Traffic eine Start-Systemdiagnose. Container mit eingehendem Traffic haben eine standardmäßige Systemdiagnose für den Start.
    4. Wenn ein Container zuerst andere Container starten muss, bevor er gestartet werden kann, wählen Sie im Menü Reihenfolge des Containerstarts die Container aus, die zuerst gestartet werden müssen.
  3. Führen Sie für einen vorhandenen Dienst die folgenden Schritte aus:

    1. Konfigurieren Sie für alle Container mit Ausnahme des Containers mit eingehendem Traffic eine Start-Systemdiagnose. Container mit eingehendem Traffic haben eine standardmäßige Systemdiagnose für den Start.
    2. Jeder Container hat ein eigenes Menü für die Containerstartreihenfolge. Wenn ein Container zuerst andere Container starten muss, bevor er gestartet werden kann, wählen Sie im Menü Container-Startreihenfolge die Container aus, die zuerst gestartet werden müssen.
  4. Schließen Sie alle anderen erforderlichen Konfigurationen ab und klicken Sie dann für einen neuen Dienst auf Erstellen oder für einen vorhandenen Dienst auf Bereitstellen. Warten Sie, bis die Bereitstellung abgeschlossen ist.

gcloud

Bevor Sie die Google Cloud CLI zum Angeben der Startreihenfolge verwenden, müssen Sie für alle Container außer dem Container mit eingehendem Traffic eine Start-Systemdiagnose konfigurieren. Container mit eingehendem Traffic haben eine standardmäßige Systemdiagnose für den Start. Sie können Systemdiagnosen nicht über die Google Cloud CLI konfigurieren.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Führen Sie den folgenden Befehl aus, um mehrere Container mit einer angegebenen Startreihenfolge für einen Dienst bereitzustellen:

gcloud run deploy SERVICE \
     --container CONTAINER_1_NAME --image='INGRESS_IMAGE' --port='CONTAINER_PORT' \
     --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
     --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAMECONTAINER_2_NAME
  • Ersetzen Sie SERVICE durch den Namen des für die Bereitstellung verwendeten Dienstes. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Dienstnamen gefragt.
  • Ersetzen Sie CONTAINER_PORT durch den Port, an dem der Ingress-Container auf eingehende Anfragen wartet. Im Gegensatz zu einem Dienst mit einem einzelnen Container gibt es für einen Dienst mit Sidecars keinen Standardport für den Ingress-Container. Sie müssen den Containerport für den Ingress-Container explizit konfigurieren und nur ein Container kann den Port freigeben.
  • Ersetzen Sie INGRESS_IMAGE durch einen Verweis auf das Container-Image, das Anfragen erhalten soll, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest.
  • Ersetzen Sie SIDECAR_IMAGE durch einen Verweis auf das Sidecar-Container-Image.

    Wenn Sie jeden Container im Bereitstellungsbefehl konfigurieren möchten, geben Sie die Konfiguration jedes Containers nach den Parametern container an.

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aktualisieren Sie das Attribut container-dependencies:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
    

    Ersetzen

    • Ersetzen Sie CONTAINER1 durch den Namen des ersten Containers, der von einem oder mehreren Containern abhängt. Beachten Sie, dass Sie den Containernamen in der YAML-Datei festlegen können: Cloud Run generiert automatisch einen Namen, wenn keiner angegeben wird.
    • Ersetzen Sie CONTAINER2 durch den Namen des Containers, der vor CONTAINER1 gestartet werden muss.
    • CONTAINER3 durch den Namen des zweiten Containers, der von einem oder mehreren Containern abhängt.

    Im Beispiel im YAML-Snippet wird CONTAINER2 als erstes, CONTAINER1 als zweites und CONTAINER3 als letztes gestartet.

  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Container-Einstellungen aufrufen

So rufen Sie die aktuellen Container-Einstellungen für Ihren Cloud Run-Dienst auf:

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Zu Cloud Run

  2. Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.

  3. Klicken Sie auf den Tab Überarbeitungen.

  4. Im Detailbereich auf der rechten Seite ist die Containereinstellung auf dem Tab Container aufgelistet.

gcloud

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie in der zurückgegebenen Konfiguration nach der Containereinstellung.