Développer un service Cloud Run localement dans Cloud Code pour VS Code

Avant de déployer un service sur Cloud Run, vous pouvez le développer localement à l'aide d'un émulateur Cloud Run.

Configurer votre service pour le développement

Si vous n'avez pas défini de fichier .vscode/launch.json, la boîte de dialogue Run/Debug on Cloud Run Emulator (Exécuter/Déboguer sur l'émulateur Cloud Run) vous permet de configurer votre lancement, puis d'enregistrer vos paramètres dans .vscode/launch.json. Si vous avez configuré un fichier .vscode/launch.json, vous pouvez le modifier directement.

Pour exécuter votre service localement, spécifiez votre configuration:

  1. Ouvrez la palette de commandes (appuyez sur Ctrl/Cmd+Shift+P ou cliquez sur Afficher > Palette de commandes), puis exécutez la commande Exécuter sur Cloud Run.
  2. Dans la boîte de dialogue "Run/Debug" (Exécuter/Déboguer) de l'émulateur Cloud Run, définissez les spécifications de votre configuration:

    • Seuls les outils de compilation installés localement sont disponibles pour l'émulateur Cloud Run.
    • Choisissez Docker ou Buildpacks comme compilateur, puis spécifiez la source
    • (Facultatif) Pour spécifier des variables d'environnement à transmettre aux conteneurs en cours d'exécution, développez Paramètres de compilation avancés, puis cliquez pour spécifier des paires clé/valeur.
      Nom Description Exemple
      PORT Port du serveur HTTP à écouter. 8080
      K_SERVICE Nom du service Cloud Run en cours d'exécution. hello-world
      K_RÉVISION Nom de la révision Cloud Run en cours d'exécution. hello-world.1
      K_CONFIGURATION Nom de la configuration Cloud Run qui a créé la révision. hello-world
    • (Facultatif) Pour spécifier les connexions Cloud SQL, développez les paramètres de service avancés, cliquez sur Connexions, puis spécifiez une connexion Cloud SQL par ligne.
    • (Facultatif) Cochez l'option Rendre le service accessible depuis d'autres appareils sur le réseau local.
    • (Facultatif) Si vous souhaitez uniquement recompiler et exécuter votre service manuellement, au lieu d'effectuer automatiquement une modification, décochez la case Recompiler automatiquement et réexécuter en cas de modifications.

Exécuter votre service en local

  1. Après avoir défini les paramètres de votre choix, exécutez votre service en cliquant sur Run (Exécuter).
  2. Surveillez l'état de votre déploiement dans la fenêtre de sortie.

    Une fois le déploiement terminé, vous pouvez afficher votre service en cours d'exécution en ouvrant l'URL affichée dans la fenêtre de sortie.

  3. Pour afficher les journaux détaillés, passez à la vue détaillée de Cloud Run dans la fenêtre de sortie.

    Volet de sortie avec "hello-world-5 - Detailed" sélectionné dans la liste déroulante de canal de sortie.

  4. Une fois la session terminée, effectuez un clic droit pour utiliser les commandes suivantes:

    • Afficher les journaux:à l'aide de l'explorateur de journaux Cloud Code, ouvrez les journaux d'application d'un déploiement spécifique
    • Open URL (Ouvrir l'URL) : permet d'ouvrir l'URL d'un service spécifique d'une application dans un navigateur Web.
  5. Si vous avez désactivé le mode montre dans votre configuration de lancement et que vous souhaitez apporter des modifications à votre application, puis recompiler et redéployer l'application, cliquez sur la barre d'état Cloud Code, puis sur Activer le mode montre.

  6. Pour arrêter votre déploiement, vous pouvez cliquer sur le bouton Stop (Arrêter) dans la barre d'action correspondant à votre déploiement actuel.

    Barre d'actions pour le déploiement Cloud Run

Stocker des secrets

Si votre code inclut des données potentiellement sensibles telles que des clés API, des mots de passe et des certificats, les stocker en tant que secrets peut les protéger. L'intégration de Cloud Code à Secret Manager vous permet de stocker ces secrets de manière sécurisée et de les récupérer par programmation. Pour découvrir en détail comment créer et gérer des secrets avec Cloud Code, consultez le guide Secret Manager.

Personnaliser une configuration launch.json existante

Le plug-in Cloud Code met automatiquement à jour le fichier de configuration launch.json lorsque vous choisissez une action d'exécution. Pour personnaliser davantage votre service, vous pouvez spécifier les champs suivants dans votre fichier .vscode/launch.json:

  • watch : surveille les modifications apportées à l'espace de travail et réexécute le service. Vrai par défaut.

    L'exemple de montre ci-dessous est défini sur true:

    "watch": true,
    
  • build: spécifiez le compilateur (docker, jibMaven, jibGradle ou buildpacks) avec lequel créer vos images.

    L'exemple suivant illustre un compilateur Docker:

    "build": {
      "docker": {
        "path": "Dockerfile"
      }
    },
    

    L'exemple suivant illustre un compilateur Buildpack:

    "build": {
      "buildpacks": {
        "path": "src/requirements.txt",
        "builder": "gcr.io/buildpacks/builder:v1"
      }
    },
    
  • image : indiquez le nom de l'image à utiliser.

    L'exemple suivant montre comment spécifier le nom d'une image:

      "image": "hello-world",
    
  • service: spécifiez le service Cloud Run à utiliser.

    L'exemple suivant montre comment spécifier un nom de service, un port et des limites de ressources:

    "service": {
      "name": "hello-world",
      "containerPort": 8080,
      "resources": {
        "limits": {
          "memory": "256Mi"
        }
      }
    },
    
  • debug : spécifiez des paramètres de débogage tels que le mappage de chemin distant pour mapper un chemin d'accès local à un chemin d'accès sur le conteneur distant.

    L'exemple suivant montre une section de débogage indiquant les fichiers sources:

    "debug": {
      "sourceFileMap": {
        "${workspaceFolder}": "/app"
      }
    }
    

Activer la synchronisation des fichiers Skaffold et le rechargement à chaud

Pour améliorer l'efficacité de votre workflow de développement local et éviter de recompiler, redéployer et redémarrer vos pods, Skaffold permet de copier les fichiers modifiés dans un conteneur déployé. Cela signifie que lorsque vous apportez des modifications à des fichiers statiques et de code source, vous pouvez constater que vos modifications prennent effet en quelques secondes, ce qui entraîne une boucle de rétroaction accélérée.

Pour les fichiers statiques (tels que les fichiers HTML et CSS), ce comportement de copie de fichiers est appelé synchronisation de fichiers.

Pour les fichiers de code source, ce comportement est appelé rechargement à chaud et est compatible avec les types de fichiers suivants :

  • Go : *.go
  • Java : *.java, *.kt, *.scala, *.groovy, *.clj
  • NodeJS : *.js, *.mjs, *.coffee, *.litcoffee, *.json

Grâce à l'actualisation à chaud configurée, Skaffold détecte les modifications apportées aux fichiers compatibles et les synchronise avec le conteneur en cours d'exécution de votre cluster. Les modifications apportées aux types de fichiers non compatibles avec l'actualisation à chaud déclenchent une recompilation d'images et un redémarrage du pod.

La synchronisation automatique des fichiers et le rechargement à chaud sont activés par défaut lorsque vous utilisez Buildpacks comme compilateur préféré. Pour les autres compilateurs, tels que Docker, vous pouvez spécifier une section sync dans votre fichier skaffold.yaml pour l'artefact que vous personnalisez.

Vous pouvez choisir l'un des paramètres de synchronisation suivants (par ordre de préférence) :

  • auto (uniquement pour les artefacts Jib et Buildpacks, Il s'agit du paramètre par défaut s'il n'est pas spécifié pour Buildpacks
  • infer
  • manual

L'exemple de section sync suivant dans un fichier skaffold.yaml spécifie une synchronisation manual pour synchroniser tous les fichiers HTML /static-html avec le dossier static d'un conteneur:

build:
  artifacts:
    - image: gcr.io/k8s-skaffold/node-example
      context: node
      sync:
        manual:
          - src: 'static-html/*.html'
            dest: static

Pour en savoir plus sur la synchronisation des fichiers et la spécification des règles de synchronisation, consultez le guide Skaffold sur la synchronisation des fichiers.

Obtenir de l'aide

Pour envoyer des commentaires, signalez des problèmes sur GitHub ou posez une question sur Stack Overflow.