Accélérez le développement dans Cloud Code pour IntelliJ

Pour accélérer le développement en local dans Cloud Code pour IntelliJ, tirez parti de la documentation la synchronisation et le hot reload, le déploiement automatique lors de l'enregistrement et l'utilisation des modules Skaffold ; pour développer séparément certaines parties d'une application.

Activer la synchronisation des fichiers et le hot reload Skaffold

Pour améliorer l'efficacité de votre workflow de développement local et éviter devoir recompiler, redéployer et redémarrer vos pods, Skaffold accepte en copiant les fichiers modifiés vers un conteneur déployé. Ainsi, lorsque vous modifiez des données statiques et les fichiers de code source, les modifications sont appliquées en quelques secondes 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 hot reload configuré, Skaffold détecte les modifications apportées aux fichiers compatibles et les synchronise du conteneur en cours d'exécution sur votre cluster. Modifications apportées aux types de fichiers non compatibles avec la version à chaud et l'actualisation déclenche une recompilation de l'image 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 d'autres constructeurs tels que Docker, vous pouvez spécifier une section sync dans votre fichier skaffold.yaml pour l'élément artefact que vous personnalisez.

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

  • auto: Skaffold configure automatiquement la synchronisation. (uniquement pour Jib et Buildpacks) artifacts.) Il s'agit du paramètre par défaut pour les Buildpacks.
  • infer: les destinations de chaque fichier modifié sont déduites du compilateur.
  • manual: vous devez spécifier les fichiers de votre espace de travail local et leur destination dans le conteneur en cours d'exécution.

L'exemple de section sync suivant d'un fichier skaffold.yaml spécifie un Synchronisation de manual pour synchroniser tous les fichiers HTML /static-html avec static dans 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.

Ajouter de nouvelles fonctionnalités lors du développement sur Kubernetes

Après avoir configuré la synchronisation des fichiers et le hot reload, démarrez un cycle d'itération et ajoutez plus de fonctionnalités à votre projet. Les modifications sont déployées sans arrêter ni supprimer le déploiement, en construisant et en supprimant manuellement ajouter des tags à l'image ou mettre à jour le cluster.

Un cycle d'itération standard se présente comme suit:

  1. Apportez une modification à votre projet. Par exemple, si vous utilisez l'application de livre d'or Java Cloud Code, ajoutez un point de terminaison au FrontendController comme suit:

    1. Ouvrez le fichier FrontendController.java depuis src/main/java/cloudcode/guestbook/frontend et ajoutez ce qui suit:

      @RequestMapping("/greeting")
      @ResponseBody
      public String greeting(@RequestParam(value="name", defaultValue="World") String name) {
         return String.format("Hello from Kubernetes with IntelliJ, %s!", name);
      }
      
    2. Ajoutez les importations nécessaires pour les nouvelles annotations, RequestMapping et ResponseBody

  2. Enregistrez vos modifications (Ctrl/Cmd+S) ou créez le projet.

    Vous pouvez suivre les journaux de progression et de déploiement dans la fenêtre de la console. Une fois les modifications déployées, confirmez les mises à jour.

  3. Pour mettre fin à la session de développement continu, cliquez sur l'icône Arrêter.

    Cloud Code supprime toutes les ressources Kubernetes utilisées pour la session de développement.

Développer des applications de microservices à l'aide des configurations Skaffold

Lorsque vous développez des applications de microservices, il peut être utile de travailler sur des de façon indépendante pour simplifier le débogage et le déploiement.

Vous pouvez développer et déboguer des parties de votre application indépendamment en divisant votre application dans des modules Skaffold. Par exemple, Exemple Bank of Anthos est une application contenant 10 microservices. L'exemple skaffold.yaml "file" regroupe ces services en cinq modules Skaffold nommés setup, db, frontend, backend et loadgenerator.

Définir les modules Skaffold et les dépendances de configuration

Pour définir des modules Skaffold et des dépendances de configuration, procédez comme suit :

  1. Ouvrez le projet dans lequel vous souhaitez définir les modules.

  2. Ouvrez le fichier skaffold.yaml.

  3. Si votre fichier skaffold.yaml comporte plusieurs configurations, pour créer configuration d'un module Skaffold, spécifiez la ligne suivante:

    metadata:
      name: MODULE_NAME_1
    

    Par exemple, dans le skaffold.yaml Bank of Anthos, le module db définit déploiements de bases de données:

    apiVersion: skaffold/v3
    kind: Config
    metadata:
      name: db # module defining database deployments
    requires:
    - configs:
      - setup
    build:
      artifacts:
      - image: accounts-db
        context: src/accounts-db
      - image: ledger-db
        context: src/ledger-db
    manifests:
      rawYaml:
      - dev-kubernetes-manifests/accounts-db.yaml
      - dev-kubernetes-manifests/ledger-db.yaml
    deploy:
      kubectl: {}
  4. Pour les configurations qui reposent sur une autre configuration déployée avant la configuration actuelle peut être déployée, vous devez ajouter la configuration les dépendances. Pour spécifier une dépendance de configuration, ajoutez une liste configs au requires de votre fichier skaffold.yaml.

    Par exemple, le fichier skaffold.yaml de la Bank of Anthos inclut le la dépendance de configuration setup.

    Pour définir une dépendance, ajoutez le code suivant à votre fichier skaffold.yaml, où DEPENDENCY_NAME est le nom de votre dépendance.

    requires:
        - configs: DEPENDENCY_NAME
    

    Les configurations répertoriées de cette façon peuvent faire référence aux dépendances définies dans le même fichier ou d'autres fichiers skaffold.yaml dans le projet actuel.

  5. Testez vos dépendances de configuration en créant chaque instance de Skaffold séparément pour vous assurer qu'ils sont déployés avec leur les dépendances en suivant les étapes décrites dans Créez des modules Skaffold spécifiques et leurs dépendances.

Créer des modules Skaffold spécifiques et leurs dépendances

Après avoir défini vos modules et leurs dépendances, vous pouvez spécifier les modules modules que vous souhaitez exécuter dans l'onglet Build / Deploy (Compilation/Déploiement) lorsque vous sélectionnez Exécuter > Modifiez les configurations.

  1. Installez les derniers builds Insiders.

  2. Accédez à Exécuter > Edit configurations (Modifier les configurations) et ouvrez l'onglet Build / Deploy (Compiler/Déployer).

  3. Dans le champ Configuration Skaffold, sélectionnez skaffold.yaml.

    Choisissez l'une des options suivantes :

    • Compiler et déployer avec tous les modules et dépendances
    • Build and deploy with (Compiler et déployer avec) (si des modules sont disponibles) et sélectionnez le modules que vous souhaitez créer et déployer.

Votre sélection est conservée pour les déploiements ultérieurs. Si vous sélectionnez un sous-ensemble modules, Cloud Code affiche un avertissement concernant le déploiement d'un sous-ensemble de modules, et non l'ensemble du système.

Développement continu sur Kubernetes

Une fois que vous avez configuré votre cible d'exécution avec les options de votre choix, vous pouvez opter pour une exécution régulière de votre application ou lancer une phase de développement d'itération sur votre IDE pour propager les modifications apportées à votre source les dépendances à votre application active.

La cible d'exécution Develop on Kubernetes (Développer sur Kubernetes) lance le cycle de développement cluster Kubernetes. Une fois le cycle de développement lancé, À l'aide de Skaffold, Cloud Code crée une image pour la du projet, lui ajoute un tag, le transfère vers le dépôt configuré et l'utilise kubectl pour déployer les fichiers manifestes Kubernetes du projet.

  1. Cliquez sur l'icône Develop on Kubernetes (Développer sur Kubernetes), puis sur Edit Configurations (Modifier les configurations) pour ouvrir la boîte de dialogue Run/Debug Configurations (Configurations d'exécution/de débogage).
  2. Personnalisez votre déploiement à l'aide des options de configuration disponibles.
  3. Si vous souhaitez que Cloud Code redéploie automatiquement votre application après l'enregistrement de vos modifications, sous Mode de surveillance - recompilation et redéploiement, sélectionnez Lors de l'enregistrement du fichier. Les nouvelles applications Kubernetes L'option À la demande est sélectionnée par défaut. Pour en savoir plus sur les modes de montre, consultez la section Modes de la montre.
  4. Si votre application est configurée pour utiliser modules Skaffold, vous pouvez Choisissez de ne créer ou déployer que des modules spécifiques.
  5. Une fois que vous êtes satisfait de votre configuration, cliquez sur OK, puis sur l'icône Run (Exécuter).

Étape suivante

Obtenir de l'aide

Pour envoyer des commentaires ou signaler un problème dans votre IDE IntelliJ, accédez à Outils > Cloud Code > Aide / À propos > Envoyer des commentaires ou signaler un problème pour signaler un problème sur GitHub, ou posez une question sur Stack Overflow.