Pour les services Cloud Run, Cloud Run rétrograde par défaut les requêtes HTTP/2 à HTTP/1 lorsque ces requêtes sont envoyées au conteneur. Si vous souhaitez définir explicitement votre service pour qu'il utilise le protocole HTTP/2 de bout en bout sans ce type de rétrogradation, vous pouvez le configurer pour HTTP/2. Cette page vous explique comment procéder.
Pour plus d'informations sur l'appel de services via HTTP, reportez-vous à la section 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
), car TLS est toujours arrêté automatiquement par Cloud Run.
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
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 la ligne de commande gcloud ou d'un fichier YAML lorsque vous créez un service ou déployez une nouvelle révision :
Console
Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. 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 selon vos besoins, puis cliquez sur Conteneur, mise en réseau, sécurité pour développer la page de configuration du service.
Cliquez sur l'onglet Réseau.
Cochez la case Activer les connexions HTTP/2.
Cliquez sur Créer ou Déployer.
Ligne de commande
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
YAML
Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export
, qui renvoie les résultats nettoyés au format YAML.
Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace
.
Veillez à ne modifier que les champs indiqués.
Pour afficher et télécharger la configuration, exécutez la commande suivante :
gcloud run services describe SERVICE --format export > service.yaml
Mettez à jour
ports
avec le nomh2c
etcontainerPort
avec le port de votre choix, comme indiqué ci-dessous :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 du conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
; - 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
Remplacez la configuration du service en utilisant la commande suivante :
gcloud run services replace service.yaml
Terraform
Ajoutez les éléments suivants à une ressource google_cloud_run_service
dans votre configuration Terraform, sous template.spec.containers
. Si votre conteneur écoute les requêtes HTTP sur un port autre que 8080
, remplacez 8080
par ce numéro de port.
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.
Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.
Préparer le répertoire
Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).
-
Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension
.tf
, par exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.
Copiez l'exemple de code dans le fichier
main.tf
que vous venez de créer.Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
terraform init
Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option
-upgrade
:terraform init -upgrade
Appliquer les modifications
-
Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
terraform plan
Corrigez les modifications de la configuration si nécessaire.
-
Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant
yes
lorsque vous y êtes invité :terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
- Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.
Afficher les paramètres http/2
Pour afficher les paramètres http/2 actuels de votre service Cloud Run, procédez comme suit :
Console
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.
Ligne de commande
Exécutez la commande suivante :
gcloud run services describe SERVICE
Recherchez le paramètre http/2 dans la configuration renvoyée.