Associez Cloud Run à Firebase Hosting pour générer et diffuser votre contenu dynamique ou créer des API REST en tant que microservices.
Avec Cloud Run, vous pouvez déployer une application empaquetée dans une image de conteneur. Ensuite, à l'aide de Firebase Hosting, vous pouvez diriger les requêtes HTTPS pour déclencher votre application conteneurisée.
- Cloud Run est compatible avec plusieurs langages (y compris Go, Node.js, Python et Java), ce qui vous permet d'utiliser le langage de programmation et le framework de votre choix.
- Cloud Run effectue un scaling automatique et horizontal de votre image de conteneur pour traiter les requêtes reçues, puis évolue à la baisse lorsque la demande diminue.
- Vous ne payez que pour le processeur, la mémoire et le réseau utilisés lors du traitement des requêtes.
Pour obtenir des exemples de cas d'utilisation et d'intégration de Cloud Run à Firebase Hosting, consultez notre présentation du sans serveur.
Ce guide vous explique comment:
- Écrire une application Hello World simple
- Conteneuriser une application et l'importer dans Artifact Registry
- Déployer l'image de conteneur sur Cloud Run
- Diriger les requêtes Hosting vers votre application conteneurisée
Notez que pour améliorer les performances de la diffusion de contenu dynamique, vous pouvez éventuellement ajuster vos paramètres de cache.
Avant de commencer
Avant d'utiliser Cloud Run, vous devez effectuer certaines tâches initiales, y compris configurer un compte Cloud Billing, activer l'API Cloud Run et installer l'outil de ligne de commande gcloud
.
Configurer la facturation de votre projet
Cloud Run propose un quota d'utilisation sans frais, mais vous devez tout de même disposer d'un compte Cloud Billing associé à votre projet Firebase pour utiliser ou tester Cloud Run.
Activer l'API et installer le SDK
Activez l'API Cloud Run dans la console Google APIs:
Ouvrez la page API Cloud Run dans la console Google APIs.
Lorsque vous y êtes invité, sélectionnez votre projet Firebase.
Cliquez sur Activer sur la page de l'API Cloud Run.
Installez et initialisez le SDK Cloud.
Vérifiez que l'outil
gcloud
est configuré pour le bon projet:gcloud config list
Étape 1: Écrire l'exemple d'application
Notez que Cloud Run est compatible avec de nombreuses autres langues en plus de celles présentées dans l'exemple suivant.
Créez un répertoire nommé
helloworld-go
, puis modifiez les sous-répertoires comme suit:mkdir helloworld-go
cd helloworld-go
Créez un fichier nommé
helloworld.go
, puis ajoutez le code suivant:Ce code crée un serveur Web de base qui écoute le port défini par la variable d’environnement
PORT
.
Votre application est terminée et prête à être conteneurisée, puis importée dans Artifact Registry.
Créez un répertoire nommé
helloworld-nodejs
, puis modifiez les sous-répertoires comme suit:mkdir helloworld-nodejs
cd helloworld-nodejs
Créez un fichier
package.json
avec le contenu suivant :Créez un fichier nommé
index.js
, puis ajoutez le code suivant:Ce code crée un serveur Web de base qui écoute le port défini par la variable d’environnement
PORT
.
Votre application est terminée et prête à être conteneurisée, puis importée dans Artifact Registry.
Créez un répertoire nommé
helloworld-python
, puis modifiez les sous-répertoires comme suit:mkdir helloworld-python
cd helloworld-python
Créez un fichier nommé
app.py
, puis ajoutez le code suivant:Ce code crée un serveur Web de base qui écoute le port défini par la variable d’environnement
PORT
.
Votre application est terminée et prête à être conteneurisée, puis importée dans Artifact Registry.
Installez Java SE 8 ou une version ultérieure du JDK et CURL.
Notez que nous n'avons à le faire que pour créer le projet Web à l'étape suivante. Le fichier Docker, décrit ultérieurement, chargera toutes les dépendances dans le conteneur.
À partir de la console, créez un projet Web vide à l'aide des commandes cURL et unzip:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Un projet SpringBoot est créé.
Mettez à jour la classe
SpringBootApplication
danssrc/main/java/com/example/helloworld/HelloworldApplication.java
en ajoutant une valeur@RestController
pour gérer le mappage/
, et ajoutez également un champ@Value
pour fournir la variable d'environnementTARGET
:Ce code crée un serveur Web de base qui écoute le port défini par la variable d’environnement
PORT
.
Votre application est terminée et prête à être conteneurisée, puis importée dans Artifact Registry.
Étape 2: Containerisez une application et importez-la dans Artifact Registry
Conteneurisez l'application exemple en créant un fichier nommé
Dockerfile
dans le même répertoire que les fichiers sources. Copiez le contenu suivant dans votre fichier.Créez votre image de conteneur à l'aide de Cloud Build en exécutant la commande suivante à partir du répertoire contenant votre fichier Dockerfile:
gcloud builds submit --tag gcr.io/
PROJECT_ID /helloworldEn cas de réussite, un message SUCCESS apparaît contenant le nom de l'image
(gcr.io/PROJECT_ID/helloworld
).
L'image du conteneur est désormais stockée dans Artifact Registry et peut être réutilisée si vous le souhaitez.
Notez qu'au lieu de Cloud Build, vous pouvez utiliser une version de Docker installée en local pour créer votre conteneur en local.
Étape 3: Déployez l'image du conteneur sur Cloud Run
Régions Cloud Run autorisées
Pour des performances optimales, colocatez votre service Cloud Run avec Hosting à l'aide des régions suivantes:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Les réécritures vers Cloud Run à partir de Hosting sont acceptées dans les régions suivantes:
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
asia-southeast2
australia-southeast1
australia-southeast2
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west12
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
me-central1
me-west1
northamerica-northeast1
northamerica-northeast2
southamerica-east1
southamerica-west1
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
us-west1
us-central1
us-east1
europe-west1
asia-east1
Utilisez la commande suivante pour effectuer le déploiement :
gcloud run deploy --image gcr.io/
PROJECT_ID /helloworldLorsque vous y êtes invité :
- Sélectionnez une région (par exemple,
us-central1
). - Confirmez le nom du service (par exemple,
helloworld
). - Répondez
Y
pour autoriser les appels non authentifiés.
- Sélectionnez une région (par exemple,
Patientez quelques instants que le déploiement soit terminé. En cas de réussite, la ligne de commande affiche l'URL du service. Par exemple :
https://helloworld-RANDOM_HASH-us-central1.a.run.app Accédez à votre conteneur déployé en ouvrant l'URL du service dans un navigateur Web.
L'étape suivante vous explique comment accéder à cette application conteneurisée à partir d'une URL Firebase Hosting afin qu'elle puisse générer du contenu dynamique pour votre site hébergé par Firebase.
Étape 4:Diriger les requêtes d'hébergement vers votre application conteneurisée
Les règles de réécriture vous permettent de rediriger les requêtes correspondant à des modèles spécifiques vers une seule destination.
L'exemple suivant montre comment diriger toutes les requêtes de la page /helloworld
sur votre site Hosting pour déclencher le démarrage et l'exécution de votre instance de conteneur helloworld
.
Vérifiez les points suivants :
Vous disposez de la dernière version de la CLI Firebase.
Vous avez initialisé Firebase Hosting.
Pour obtenir des instructions détaillées sur l'installation de la CLI et l'initialisation de Hosting, consultez le guide de démarrage pour Hosting.
Ouvrez votre fichier
firebase.json
.Ajoutez la configuration
rewrite
suivante sous la sectionhosting
:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1", // optional (if omitted, default is us-central1) "pinTag": true // optional (see note below) } } ] }
Déployez votre configuration d'hébergement sur votre site en exécutant la commande suivante à partir de la racine du répertoire de votre projet:
firebase deploy --only hosting
Fonctionnement de pinTag
dans le bloc run
Grâce à cette fonctionnalité, vous pouvez vous assurer que la révision de votre service Cloud Run pour générer le contenu dynamique de votre site est synchronisée avec vos ressources Hosting statiques et votre configuration Hosting. De plus, cette fonctionnalité vous permet de prévisualiser vos réécritures en Cloud Run sur les canaux de prévisualisation Hosting.
Si vous ajoutez
"pinTag": true
à un blocrun
de la configurationhosting.rewrites
, vos ressources et votre configuration Hosting statiques seront épinglées à la dernière révision du service Cloud Run au moment du déploiement. Si vous annulez une version de votre site, la révision du service Cloud Run "épinglé" est également annulée.Cette fonctionnalité s'appuie sur les tags Cloud Run, qui sont limités à 1 000 tags par service et 2 000 tags par région. Cela signifie qu'après des centaines de déploiements, les versions les plus anciennes d'un site peuvent cesser de fonctionner.
Votre conteneur est désormais accessible via les URL suivantes:
Vos sous-domaines Firebase:
PROJECT_ID.web.app/
etPROJECT_ID.firebaseapp.com/
Domaines personnalisés connectés:
CUSTOM_DOMAIN/
Pour en savoir plus sur les règles de réécriture, consultez la page de configuration de Hosting. Vous pouvez également découvrir l'ordre de priorité des réponses pour différentes configurations Hosting.
Tester en local
Pendant le développement, vous pouvez exécuter et tester votre image de conteneur localement. Pour obtenir des instructions détaillées, consultez la documentation Cloud Run.
Étapes suivantes
Configurez la mise en cache de votre contenu dynamique sur un CDN mondial.
Interagissez avec d'autres services Firebase à l'aide du SDK Admin Firebase.
En savoir plus sur Cloud Run, y compris des guides détaillés pour configurer, gérer et configurer des conteneurs
Consultez les tarifs et les quotas et limites pour Cloud Run.