Exécuter une application Kubernetes dans Cloud Code pour VS Code

Cloud Code vous permet d'exécuter facilement votre application sur un cluster Kubernetes et de l'afficher en direct à l'aide de skaffold dev. Vous pouvez exécuter votre application sur un cluster local (par exemple, Minikube ou Docker Desktop), Google Kubernetes Engine ou tout autre fournisseur cloud.

Exécuter l'application

  1. Ouvrez la palette de commandes (Ctrl/Cmd+Shift+P), puis exécutez la commande Cloud Code : Run on Kubernetes (Cloud Code : Exécuter sur Kubernetes).
  2. Confirmez que vous souhaitez utiliser le contexte Kubernetes actuel pour exécuter l'application (ou basculez vers le contexte de votre choix). Pour en savoir plus sur la définition d'un contexte Kubernetes, consultez la section Définir la configuration.
  3. Si vous avez choisi un cluster distant comme contexte, lorsque vous y êtes invité, choisissez un registre d'images vers lequel transférer les images. Si vous utilisez Container Registry, vous pouvez accéder à un registre existant ou spécifier le nom d'un registre à créer. Si l'API Artifact Registry est activée et au moins un dépôt Artifact Registry pour votre projet, vous pouvez parcourir et sélectionner un dépôt Artifact Registry existant.

    Les exemples suivants montrent comment spécifier l'emplacement de stockage des images de conteneurs pour certains registres courants :

    Artifact Registry {region}-docker.pkg.dev/{projet_id}/{nom-dépôt}
    Container Registry gcr.io/{project_id}
    Docker Hub docker.io/{account}
    Assurez-vous d'avoir correctement authentifié si vous utilisez un dépôt Docker Hub privé.
    AWS Container Repository (ECR) {aws_account_id}.dkr.ecr.{region}.amazonaws.com/{mon-app}
    Azure Container Registry (ACR) {my_acr_name}.azurecr.io/{mon-appli}

    Cloud Code concatène ce registre d'images avec le nom d'image spécifié dans les fichiers manifeste Kubernetes afin de générer le nom final du dépôt d'images.

    Pour en savoir plus, consultez le guide de gestion des registres d'images.

    Ce choix est stocké dans votre configuration de lancement cloudcode.kubernetes (disponible dans .vscode/launch.json).

    Cloud Code crée ensuite vos conteneurs, les transfère dans le registre, applique les configurations Kubernetes au cluster et attend le déploiement.

    Une fois le déploiement terminé, Cloud Code redirige automatiquement tous les ports de conteneur déclarés vers votre machine et affiche les URL dans la fenêtre de sortie afin de vous permettre d'accéder à votre application en ligne.

  4. Une fois la session terminée, vous pouvez utiliser les commandes du menu contextuel suivantes :

    • Ouvrir les journaux de déploiement:ouvrez les journaux d'une application dans un journal spécifique à l'aide de l'explorateur de journaux Cloud Code.
    • Ouvrir une URL de service : ouvrez l'URL du service d'application d'un service spécifique dans un navigateur Web.
  5. Si vous avez désactivé le mode de surveillance dans votre configuration de lancement et que vous souhaitez apporter des modifications à votre application, puis recompiler et redéployer l'application, dans le volet des sessions de développement, mettez en pause l'action d'exécution, puis cliquez sur Icône Recréer et redéployerRecompiler et redéployer l'application.

  6. Pour arrêter l'exécution de l'application, cliquez sur Icône de débogage Arrêter dans la barre d'outils de débogage.

    Une fois l'application arrêtée, toutes les ressources Kubernetes déployées sont supprimées du cluster. Vous pouvez modifier ce comportement à l'aide de l'option cleanUp dans votre configuration de lancement.

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 devoir recréer, redéployer et redémarrer vos pods, Skaffold permet de copier des fichiers modifiés vers un conteneur déployé. Cela signifie que lorsque vous apportez des modifications à des fichiers de code statique et source, vous pouvez constater que vos modifications prennent effet en quelques secondes, ce qui permet d'accélérer l'exécution d'une boucle de rétroaction.

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

Une fois le rechargement à chaud configuré, Skaffold détecte les modifications apportées aux fichiers compatibles et les synchronise avec le conteneur en cours d'exécution sur 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.

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, nous vous recommandons de les stocker en tant que secrets. Avec Cloud Code, vous pouvez stocker ces secrets en toute sécurité dans Secret Manager et les récupérer de manière automatisée lorsque vous en avez besoin. Pour plus d'informations sur la création et la gestion des secrets avec Cloud Code, consultez le guide de Secret Manager.

Choisir un compilateur et un environnement de compilation

Dans un projet qui ne contient pas de fichier skaffold.yaml à la racine ou qui ne référence pas skaffold.yaml dans son fichier .vscode/launch.json, vous pouvez utiliser l'interface utilisateur de Cloud Code pour choisir un compilateur et un environnement de compilation. La compilation en local est gratuite car elle utilise vos propres ressources. Compiler avec Cloud Build convient aux machines plus lentes ou qui ne correspondent pas à l'architecture de processeur du cluster cible. Pour en savoir plus sur le coût de la création de votre application à l'aide de Cloud Build, consultez la page Tarifs de Cloud Build.

Si vous utilisez l'un des exemples pour supprimer l'interface utilisateur, supprimez le fichier skaffold.yaml avant d'exécuter une action de compilation. Pour savoir comment choisir un compilateur et un environnement de compilation sans interface utilisateur, consultez la section Créer manuellement une configuration Skaffold.

  1. Dans un projet sans fichier skaffold.yaml, ouvrez la palette de commandes (appuyez sur Ctrl/Cmd+Shift+P ou cliquez sur Afficher &gt ; Palette de commandes), puis exécutez Cloud Code: Exécuter sur Kubernetes ou Cloud Code: Débogage sur Kubernetes.

  2. Choisissez un environnement de compilation.

    Si vous choisissez Cloud Build, spécifiez le registre d'images.

  3. Spécifiez un compilateur (Docker ou Buildpack) pour chaque image et ses paramètres.

  4. Cochez ou décochez les options de configuration, puis cliquez sur Debug (Débogage) ou Run (Exécuter).

Les options que vous choisissez sont enregistrées dans un fichier skaffold.yaml que vous pouvez modifier directement pour une personnalisation plus avancée.

Personnaliser la configuration de lancement

Pour configurer le mode d'exécution de votre application, vous pouvez personnaliser votre fichier skaffold.yaml.

Vous pouvez également configurer votre lancement en spécifiant les champs suivants dans la configuration cloudcode.kubernetes de votre fichier .vscode/launch.json :

  • skaffoldConfig : spécifiez le fichier de configuration skaffold, qui contient les paramètres de compilation et de déploiement.
  • profil : indiquez votre profil skaffold préféré. S'il n'est pas défini, le profil par défaut est utilisé.
  • imageRegister : spécifiez le registre d'images vers lequel transférer les images.
  • watch : spécifiez s'il faut surveiller les modifications apportées à l'espace de travail et réexécuter l'application. À moins qu'il ne soit défini explicitement sur "false", "true" par défaut.
  • cleanUp : spécifiez s'il faut supprimer les ressources Kubernetes déployées dans le cluster après l'arrêt de l'application. À moins qu'il ne soit défini explicitement sur "false", "true" par défaut.
  • portForward : spécifiez s'il faut transférer les ports des ressources Kubernetes exposées de votre cluster vers votre ordinateur local. À moins qu'il ne soit défini explicitement sur "false", "true" par défaut.

Obtenir de l'aide

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