Lorsqu'une instance de conteneur reçoit des requêtes, Cloud Run les rétrograde de HTTP/2 à HTTP/1. Cette page vous explique comment configurer votre service pour qu'il utilise HTTP/2 de bout en bout, ce qui empêche Cloud Run de rétrograder les requêtes vers HTTP/1.
Pour en savoir plus sur l'appel de services à l'aide de HTTP, consultez Appeler avec une requête HTTPS.
Avant de configurer
Votre service Cloud Run doit gérer les requêtes au format HTTP/2 texte clair (h2c
). L'infrastructure de diffusion d'interface de Google interrompt le protocole TLS, puis transfère le trafic h2c
à Cloud Run et à votre conteneur via un canal chiffré.
Pour vérifier que votre service accepte les requêtes h2c
, testez-le localement à l'aide de la commande curl :
curl -i --http2-prior-knowledge http://localhost:PORT
Rôles requis
Pour obtenir les autorisations nécessaires pour configurer et déployer des services Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Développeur Cloud Run (
roles/run.developer
) sur le service Cloud Run -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur l'identité du service
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec les APIGoogle Cloud , telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Services HTTP/2 compatibles
HTTP/2 est idéal pour diverses applications. Voici quelques cas d'utilisation courants :
- Websockets : permettent la communication en temps réel sur plusieurs connexions pour des applications telles que le chat, les jeux et les flux de données en direct.
- Services gRPC : créez des microservices hautes performances à faible latence qui communiquent à l'aide de gRPC.
- API à haut débit : réduisez la surcharge pour les applications qui nécessitent un traitement efficace de nombreuses petites requêtes ou qui doivent envoyer des données aux clients.
Définir et mettre à jour HTTP/2 de bout en bout
Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.
Vous pouvez spécifier l'utilisation de HTTP/2 de bout en bout à l'aide de la console Google Cloud , de Google Cloud CLI ou de YAML lorsque vous créez un service ou déployez une nouvelle révision :
Console
Dans la console Google Cloud , accédez à Cloud Run :
Sélectionnez Services dans le menu, puis cliquez sur Déployer un conteneur pour configurer un nouveau service. Si vous configurez un service existant, cliquez sur celui-ci puis sur Modifier et déployer la nouvelle révision.
Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service, puis cliquez sur Conteneur(s), volumes, mise en réseau et sécurité pour développer la page de configuration du service.
Cliquez sur l'onglet Réseau.
- Sélectionnez Activer les connexions HTTP/2.
Cliquez sur Créer ou Déployer.
gcloud
Vous pouvez mettre à jour un service donné pour qu'il utilise HTTP/2 à l'aide de la commande suivante :
gcloud run services update SERVICE --use-http2
Remplacez SERVICE
par le nom du service.
Vous pouvez également configurer votre service pour qu'il utilise HTTP/2 lors du déploiement à l'aide de la commande suivante :
gcloud run deploy --image IMAGE_URL --use-http2
Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest
. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
YAML
Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :
gcloud run services describe SERVICE --format export > service.yaml
Mettez à jour
ports
avec le nomh2c
etcontainerPort
avec le port de votre choix, comme indiqué dans l'exemple suivant :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
Remplacer
- SERVICE par le nom de votre service Cloud Run
- IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante :LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- REVISION par un nouveau nom de révision ou supprimez-le (le cas échéant). Si vous indiquez un nouveau nom de révision, il doit répondre aux critères suivants :
- Commencer par
SERVICE-
- Ne contenir que des lettres minuscules, des chiffres et
-
- Ne pas se terminer par
-
- Ne pas dépasser 63 caractères
- Commencer par
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Ajoutez les éléments suivants à une ressourcegoogle_cloud_run_v2_service
dans votre configuration Terraform :Si votre conteneur écoute les requêtes HTTP sur un port autre que 8080
, remplacez 8080
par ce numéro de port.
Afficher les paramètres http/2
Pour afficher les paramètres http/2 actuels de votre service Cloud Run, procédez comme suit :
Console
Dans la console Google Cloud , accédez à Cloud Run :
Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.
Cliquez sur l'onglet Révisions.
Dans le panneau de détails sur la droite, le paramètre http/2 est répertorié sous l'onglet Réseau.
gcloud
Exécutez la commande suivante :
gcloud run services describe SERVICE
Recherchez le paramètre http/2 dans la configuration renvoyée.
Utiliser HTTP/2 derrière un équilibreur de charge
Lorsqu'il est configuré pour écouter HTTP/2, Cloud Run gère automatiquement le trafic HTTP/2 ou gRPC provenant de l'équilibreur de charge d'application. Aucune configuration spécifique n'est requise sur le service de backend de l'équilibreur de charge.
Pour configurer Cloud Run afin qu'il utilise HTTP/2 ou gRPC, utilisez l'une des méthodes suivantes :
- Définir et mettre à jour HTTP/2 de bout en bout
- Configurez un équilibreur de charge d'application externe avec votre service Cloud Run comme backend.