Pour accélérer votre développement local dans Cloud Code pour IntelliJ, profitez de la synchronisation des fichiers, du hot reload, du déploiement automatique à l'enregistrement, et utilisez des modules Skaffold pour développer des parties d'une application séparément.
Activer la synchronisation des fichiers Skaffold et le hot reload
Pour améliorer l'efficacité de votre workflow de développement local et éviter de devoir 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 voir vos modifications prendre effet en quelques secondes, ce qui accélère la 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 avec le conteneur en cours d'exécution sur votre cluster. Les modifications apportées aux types de fichiers non compatibles avec le hot reload déclenchent la recompilation de l'image et le 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 le 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
: Skaffold configure automatiquement la synchronisation. (uniquement pour les artefacts Jib et Buildpacks). Il s'agit de l'option par défaut pour 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 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.
Ajout de 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 des fonctionnalités à votre projet. Vos modifications sont déployées sur votre cluster Kubernetes sans arrêter et supprimer le déploiement, sans créer ni ajouter manuellement des tags à l'image, ni mettre à jour le cluster.
Un cycle d'itération standard se présente comme suit:
Apportez une modification à votre projet. Par exemple, si vous utilisez l'application de livre d'or Java Cloud Code, ajoutez un nouveau point de terminaison à la classe
FrontendController
comme suit:Ouvrez le fichier
FrontendController.java
à partir desrc/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); }
Ajoutez les importations nécessaires pour les nouvelles annotations,
RequestMapping
etResponseBody
.
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.
Pour mettre fin à la session de développement continu, cliquez sur l'icône Stop (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 de configurations Skaffold
Lors du développement d'applications de microservices, il peut être utile de travailler sur des sections distinctes indépendamment pour simplifier le débogage et le déploiement.
Vous pouvez développer et déboguer des parties de votre application indépendamment en la divisant en modules Skaffold. Par exemple, l'exemple Bank of Anthos est une application contenant dix microservices. Le fichier skaffold.yaml
de l'exemple 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 :
Ouvrez le projet dans lequel vous souhaitez définir les modules.
Ouvrez le fichier
skaffold.yaml
.Si votre fichier
skaffold.yaml
comporte plusieurs configurations, spécifiez la ligne suivante pour créer une configuration en tant que module Skaffold:metadata: name: MODULE_NAME_1
Par exemple, dans le
skaffold.yaml
Bank of Anthos, le moduledb
définit les déploiements de base de données:Pour les configurations qui reposent sur une autre configuration en cours de déploiement avant le déploiement de la configuration actuelle, vous devez ajouter la configuration à vos dépendances. Pour spécifier une dépendance de configuration, ajoutez une liste
configs
à la sectionrequires
de votre fichierskaffold.yaml
.Par exemple, le fichier
skaffold.yaml
de Bank of Anthos inclut la dépendance de configurationsetup
.Pour définir une dépendance, ajoutez ce qui suit à 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 manière peuvent faire référence à des dépendances définies dans le même fichier ou à d'autres fichiers
skaffold.yaml
du projet actuel.Testez vos dépendances de configuration en compilant chacun des modules Skaffold séparément pour vous assurer qu'ils sont déployés avec leurs dépendances en suivant les étapes décrites dans la section Créer 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 que vous souhaitez exécuter dans l'onglet Build/Deploy (Compiler/Déployer) lorsque vous sélectionnez Run > Edit configurations (Exécuter > Modifier les configurations).Installez les derniers builds Insiders.
Accédez à Run > Edit configurations (Exécuter > Modifier les configurations), puis ouvrez l'onglet Build / Deploy (Compiler/Déployer).
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
- Créez et déployez avec (si des modules sont disponibles), puis sélectionnez les modules que vous souhaitez compiler et déployer.
Votre sélection est conservée pour les déploiements ultérieurs. Si vous sélectionnez un sous-ensemble de modules, Cloud Code affiche un avertissement sur le déploiement d'un sous-ensemble de modules et non de 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 un cycle d'itération de développement sur votre IDE pour propager les modifications apportées à votre source et aux dépendances à votre application active.
La cible d'exécution Develop on Kubernetes (Développer sur Kubernetes) lance le cycle de développement sur votre cluster Kubernetes. Une fois que vous avez démarré le cycle de développement, Cloud Code crée, à l'aide de Skaffold, une image pour le projet, ajoute un tag à celle-ci, la transfère dans le dépôt configuré et utilise kubectl pour déployer les fichiers manifestes Kubernetes du projet.
- 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.
- Personnalisez votre déploiement à l'aide des options de configuration disponibles.
- 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. L'option À la demande est sélectionnée par défaut pour les nouvelles applications Kubernetes. Pour en savoir plus sur les modes de la montre, consultez la section Modes de la montre.
- Si votre application est configurée pour utiliser des modules Skaffold, vous pouvez créer ou déployer uniquement des modules spécifiques.
- Une fois que vous êtes satisfait de votre configuration, cliquez sur OK, puis sur l'icône Exécuter.
Étapes suivantes
- Utilisez le cluster Minikube intégré de Cloud Code pour le développement local.
- Déboguer votre application dans Cloud Code
- Lisez les détails sur la fonctionnalité de synchronisation de fichiers de Skaffold.