Container konfigurieren

Auf dieser Seite wird beschrieben, wie Sie den Containerport, den Einstiegspunktbefehl und die Argumente für Cloud Run-Dienste 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.

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.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung 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 wie gewünscht aus und klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Container.

    Image

    • 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.

Befehlszeile

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

Sie können vorhandene Dienstkonfigurationen mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie 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.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung 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 wie gewünscht aus und klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Container.

    Image

    • 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.

Befehlszeile

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

Sie können vorhandene Dienstkonfigurationen mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie 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"

  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. Öffnen Sie 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 Dienst erstellen.
  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 und klicken Sie dann auf Container, Volumes, Netzwerk, Sicherheit.

  3. Führen Sie für einen neuen Dienst 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.
  4. 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.
  5. 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.

Befehlszeile

Die container-Parameter in der Google Cloud CLI befinden sich in der Vorschau.

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. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  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' \
     --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 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

Sie können vorhandene Dienstkonfigurationen mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie 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

    • 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.
    • 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.

    Öffnen Sie 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.

Befehlszeile

  1. Verwenden Sie den folgenden Befehl:

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