Für Cloud Run-Dienste führt Cloud Run standardmäßig ein Downgrade von HTTP/2-Anfragen auf HTTP/1 aus, wenn diese Anfragen an den Container gesendet werden. Wenn Sie Ihren Dienst explizit so einrichten möchten, dass er HTTP/2 von Anfang bis Ende (End-to-End) verwendet, können Sie ihn für HTTP/2 konfigurieren. Auf dieser Seite wird die Konfiguration beschrieben.
Weitere Informationen zum Aufrufen von Diensten mit HTTP finden Sie unter Mit einer HTTPS-Anfrage aufrufen.
Vor der Konfiguration
Ihr Cloud Run-Dienst muss Anfragen im HTTP/2-Klartext-Format (h2c
) verarbeiten. Die Frontend-Infrastrukturinfrastruktur von Google beendet TLS und leitet den h2c
-Traffic dann über einen verschlüsselten Kanal an Cloud Run und an Ihren Container weiter.
Testen Sie, ob Ihr Dienst h2c
-Anfragen unterstützt. Testen Sie dazu den Dienst lokal mit diesem cURL-Befehl:
curl -i --http2-prior-knowledge http://localhost:PORT
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:
-
Rolle Cloud Run Entwickler (
roles/run.developer
) im Cloud Run-Job -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für die Dienstidentität
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.
HTTP/2-End-to-End einrichten und aktualisieren
Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.
Sie können die Nutzung von HTTP/2-End-to-End mit der Google Cloud Console, der gcloud-Befehlszeile oder einer YAML-Datei festlegen, wenn Sie einen neuen Dienst erstellen oder eine neue Überarbeitung bereitstellen:
Console
Rufen Sie in der Google Cloud Console Cloud Run auf.
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.
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.
Klicken Sie auf den Tab Netzwerk.
- Aktivieren Sie das Kästchen HTTP/2-Verbindungen aktivieren.
Klicken Sie auf Erstellen oder Bereitstellen.
gcloud
Mit dem folgenden Befehl können Sie einen bestimmten Dienst aktualisieren, um HTTP/2 zu verwenden:
gcloud run services update SERVICE --use-http2
Ersetzen Sie SERVICE
durch den Namen Ihres Dienstes.
Sie können Ihren Dienst mit dem folgenden Befehl auch so einrichten, dass bei der Bereitstellung HTTP/2 verwendet wird:
gcloud run deploy --image IMAGE_URL --use-http2
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
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
Aktualisieren Sie die
ports
mit den Namenh2c
undcontainerPort
mit dem Port Ihrer Wahl, wie im folgenden Beispiel gezeigt:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL ports: - name: h2c containerPort: 8080
Ersetzen
- 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 FormLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - 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
- Beginnt mit
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie einer google_cloud_run_v2_service
-Ressource in Ihrer Terraform-Konfiguration unter template.containers
Folgendes hinzu: Wenn Ihr Container HTTP-Anfragen an einem anderen Port als 8080
überwacht, ersetzen Sie 8080
durch diese Portnummer.
HTTP/2-Einstellungen aufrufen
So rufen Sie die aktuellen HTTP/2-Einstellungen für Ihren Cloud Run-Dienst auf:
Console
Rufen Sie in der Google Cloud Console Cloud Run auf.
Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.
Klicken Sie auf den Tab Überarbeitungen.
Im Detailbereich auf der rechten Seite ist die http/2-Einstellung auf dem Tab Netzwerk aufgelistet.
gcloud
Verwenden Sie den folgenden Befehl:
gcloud run services describe SERVICE
Suchen Sie in der zurückgegebenen Konfiguration nach der http/2-Einstellung.