L’auteur a sélectionné le Fonds pour le Logiciel Libre et Open Source pour recevoir un don dans le cadre du programme Écrire pour les Dons.
Introduction
Avec les outils de développement se déplaçant vers le cloud, la création et l’adoption de plates-formes d’IDE (Environnement de Développement Intégré) cloud sont en plein essor. Les IDE cloud sont accessibles depuis tous les types d’appareils modernes via des navigateurs web, et ils offrent de nombreux avantages pour les scénarios de collaboration en temps réel. Travailler dans un IDE cloud fournit un environnement de développement et de test unifié pour vous et votre équipe, tout en minimisant les incompatibilités de plateforme. Parce qu’ils sont nativement basés sur les technologies cloud, ils peuvent utiliser le cluster pour accomplir des tâches, ce qui peut grandement dépasser la puissance et la fiabilité d’un seul ordinateur de développement.
Eclipse Theia est un IDE cloud extensible fonctionnant sur un serveur distant et accessible depuis un navigateur web. Visuellement, il est conçu pour ressembler et se comporter de manière similaire à Microsoft Visual Studio Code, ce qui signifie qu’il prend en charge de nombreux langages de programmation, dispose d’une disposition flexible et d’un terminal intégré. Ce qui distingue Eclipse Theia des autres logiciels d’IDE cloud, c’est son extensibilité ; il peut être modifié à l’aide de extensions personnalisées, ce qui vous permet de créer un IDE cloud adapté à vos besoins.
Dans ce tutoriel, vous allez configurer la version par défaut de la plateforme d’IDE cloud Eclipse Theia sur votre cluster Kubernetes de DigitalOcean et l’exposer à votre domaine, sécurisé avec des certificats Let’s Encrypt et nécessitant une authentification du visiteur. À la fin, vous aurez Eclipse Theia qui s’exécute sur votre cluster Kubernetes disponible via HTTPS et nécessitant que le visiteur se connecte.
Prérequis
- A DigitalOcean Kubernetes cluster with your connection configured as the
kubectl
default. Instructions on how to configurekubectl
are shown under the Connect to your Cluster step when you create your cluster. To create a Kubernetes cluster on DigitalOcean, read the Kubernetes Quickstart. - Le gestionnaire de packages Helm 3 installé sur votre machine locale. Complétez l’étape 1 du tutoriel Comment installer des logiciels sur des clusters Kubernetes avec le gestionnaire de packages Helm 3.
- Le contrôleur Nginx Ingress installé sur votre cluster à l’aide de Helm afin d’utiliser ExternalDNS avec des ressources Ingress. Pour ce faire, suivez Comment configurer un Ingress Nginx sur DigitalOcean Kubernetes à l’aide de Helm.
- A fully registered domain name. This tutorial will use
theia.your_domain
throughout. You can purchase a domain name on Namecheap, get one for free on Freenom, or use the domain registrar of your choice.
Étape 1 — Installation et exposition d’Eclipse Theia
Pour commencer, vous installerez Eclipse Theia sur votre cluster Kubernetes DigitalOcean. Ensuite, vous l’exposerez à votre domaine souhaité en utilisant un Ingress Nginx.
Étant donné que vous avez créé deux déploiements d’exemple et une ressource dans le cadre des prérequis, vous pouvez les supprimer librement en exécutant les commandes suivantes :
Pour ce tutoriel, vous stockerez la configuration du déploiement sur votre machine locale, dans un fichier nommé eclipse-theia.yaml
. Créez-le en utilisant la commande suivante :
Ajoutez les lignes suivantes au fichier :
Cette configuration définit un Namespace, un Déploiement, un Service et un Ingress. Le Namespace est appelé theia
et contiendra tous les objets Kubernetes liés à Eclipse Theia, séparés du reste du cluster. Le Déploiement se compose d’une instance de l’image Docker Theia avec le port 3000
exposé sur le conteneur. Le Service recherche le Déploiement et remappe le port du conteneur vers le port HTTP habituel, 80
, permettant un accès à Eclipse Theia à l’intérieur du cluster.
L’Ingress contient une règle pour servir le Service au port 80
en externe à votre domaine souhaité. Dans ses annotations, vous spécifiez que le contrôleur Ingress Nginx doit être utilisé pour le traitement des requêtes. N’oubliez pas de remplacer theia.votre_domaine
par votre domaine souhaité que vous avez pointé vers l’équilibreur de charge de votre cluster, puis enregistrez et fermez le fichier.
Enregistrez et quittez le fichier.
Ensuite, créez la configuration dans Kubernetes en exécutant la commande suivante :
La sortie ressemblera à ceci :
Outputnamespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created
Vous pouvez observer la création du pod Eclipse Theia en exécutant :
La sortie ressemblera à ceci :
OutputNAME READY STATUS RESTARTS AGE
theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s
Après un certain temps, le statut passera à RUNNING
, ce qui signifie que vous avez installé avec succès Eclipse Theia sur votre cluster.
Naviguez vers votre domaine dans votre navigateur. Vous verrez l’interface graphique de l’éditeur Eclipse Theia par défaut :
Vous avez déployé Eclipse Theia sur votre cluster Kubernetes DigitalOcean et l’avez exposé à votre domaine souhaité avec un Ingress. Ensuite, vous sécuriserez l’accès à votre déploiement Eclipse Theia en activant l’authentification de connexion.
Étape 2 — Activation de l’authentification de connexion pour votre domaine
Dans cette étape, vous activerez l’authentification par nom d’utilisateur et mot de passe pour votre déploiement Eclipse Theia. Vous y parviendrez d’abord en créant une liste de combinaisons de connexion valides à l’aide de l’outil htpasswd
. Ensuite, vous créerez un secret Kubernetes contenant cette liste et configurerez l’Ingress pour authentifier les visiteurs en fonction de celle-ci. En fin de compte, votre domaine ne sera accessible que lorsque le visiteur saisira une combinaison valide de nom d’utilisateur et de mot de passe. Cela empêchera les invités et les autres visiteurs indésirables d’accéder à Eclipse Theia.
L’utilitaire htpasswd
provient du serveur web Apache et est utilisé pour créer des fichiers qui stockent des listes de combinaisons de connexion. Le format des fichiers htpasswd
est une combinaison nom_utilisateur:mot_de_passe_hashé
par ligne, c’est le format auquel s’attend le contrôleur d’entrée Nginx pour que la liste soit conforme.
Tout d’abord, mettez à jour le cache du gestionnaire de paquets:
Ensuite, installez htpasswd
sur votre système en exécutant la commande suivante:
Vous stockerez la liste dans un fichier appelé auth
. Créez-le en exécutant:
Ce fichier doit être nommé auth
car le contrôleur d’entrée Nginx s’attend à ce que le secret contienne une clé appelée data.auth
. S’il est manquant, le contrôleur renverra le statut HTTP 503 Service Unavailable
.
Ajoutez une combinaison nom d’utilisateur et mot de passe à auth
en exécutant la commande suivante:
N’oubliez pas de remplacer nom_utilisateur
par le nom d’utilisateur souhaité. Vous serez invité à saisir un mot de passe et la combinaison sera ajoutée dans le fichier auth
. Vous pouvez répéter cette commande pour autant d’utilisateurs que vous souhaitez ajouter.
Remarque: Si le système sur lequel vous travaillez n’a pas htpasswd
installé, vous pouvez utiliser une version Dockerisée à la place.
Vous aurez besoin d’avoir Docker installé sur votre machine. Pour des instructions sur la façon de le faire, visitez la documentation officielle.
Exécutez la commande suivante pour lancer une version Dockerisée:
N’oubliez pas de remplacer <username>
par le nom d’utilisateur que vous souhaitez utiliser. On vous demandera un mot de passe. La combinaison de connexion hachée sera écrite sur la console, et vous devrez l’ajouter manuellement à la fin du fichier auth
. Répétez ce processus pour autant de connexions que vous souhaitez ajouter.
Lorsque vous avez terminé, créez un nouveau secret dans Kubernetes avec le contenu du fichier en exécutant la commande suivante :
Vous pouvez voir le secret avec :
La sortie ressemblera à :
Ensuite, vous devrez modifier l’Ingress pour qu’il utilise le secret. Ouvrez la configuration du déploiement pour l’éditer :
Ajoutez les lignes surlignées à votre fichier :
Tout d’abord, dans l’annotation auth-type
, vous spécifiez que le type d’authentification est basic
. Cela signifie que Nginx demandera à l’utilisateur de saisir un nom d’utilisateur et un mot de passe. Ensuite, dans auth-secret
, vous spécifiez que le secret qui contient la liste des combinaisons valides est theia-basic-auth
, que vous venez de créer. L’annotation auth-realm
restante spécifie un message qui sera montré à l’utilisateur comme explication de pourquoi l’authentification est requise. Vous pouvez modifier le message contenu dans ce champ à votre guise.
Enregistrez et fermez le fichier.
Pour propager les modifications à votre cluster, exécutez la commande suivante :
Vous verrez la sortie :
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Naviguez vers votre domaine dans votre navigateur, où vous devrez maintenant vous connecter.
Vous avez activé l’authentification de base sur votre Ingress en le configurant pour utiliser le secret contenant les combinaisons de nom d’utilisateur et de mot de passe hachés. À l’étape suivante, vous sécuriserez davantage l’accès en ajoutant des certificats TLS, afin que le trafic entre vous et votre déploiement Eclipse Theia reste crypté.
Étape 3 — Application des certificats HTTPS Let’s Encrypt
Ensuite, vous sécuriserez votre installation Eclipse Theia en appliquant des certificats Let’s Encrypt à votre Ingress, que Cert-Manager provisionnera automatiquement. Après avoir terminé cette étape, votre installation Eclipse Theia sera accessible via HTTPS.
Ouvrez eclipse-theia.yaml
pour l’édition:
Ajoutez les lignes en surbrillance à votre fichier, en vous assurant de remplacer le domaine générique par le vôtre:
Tout d’abord, vous spécifiez le ClusterIssuer letsencrypt-prod
que vous avez créé comme faisant partie des prérequis en tant que l’émetteur qui sera utilisé pour provisionner des certificats pour cet Ingress. Ensuite, dans la section tls
, vous spécifiez le domaine exact qui doit être sécurisé, ainsi qu’un nom pour un secret qui contiendra ces certificats.
Enregistrez et quittez le fichier.
Appliquez les modifications à votre cluster en exécutant la commande suivante:
La sortie ressemblera à :
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Il faudra quelques minutes pour que les certificats soient provisionnés et pleinement appliqués. Vous pouvez suivre la progression en observant la sortie de la commande suivante :
Quand elle sera terminée, la fin de la sortie ressemblera à ceci :
Output...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal GeneratedKey 42m cert-manager Generated a new private key
Normal Requested 42m cert-manager Created new CertificateRequest resource "theia-prod-3785736528"
Normal Issued 42m cert-manager Certificate issued successfully
Rafraîchissez votre domaine dans votre navigateur. Vous verrez un cadenas vert apparaître du côté le plus à gauche de la barre d’adresse, signifiant que la connexion est sécurisée.
Vous avez configuré l’Ingress pour utiliser des certificats Let’s Encrypt, rendant ainsi votre déploiement Eclipse Theia plus sécurisé. Vous pouvez maintenant examiner l’interface utilisateur par défaut d’Eclipse Theia.
Étape 4 — Utilisation de l’interface Eclipse Theia
Dans cette section, vous explorerez certaines des fonctionnalités de l’interface Eclipse Theia.
Sur le côté gauche de l’EDI, il y a une rangée verticale de quatre boutons ouvrant les fonctionnalités les plus couramment utilisées dans un panneau latéral.
Cette barre est personnalisable, vous pouvez donc déplacer ces vues dans un ordre différent ou les supprimer de la barre. Par défaut, la première vue ouvre le panneau Explorer qui fournit une navigation arborescente de la structure du projet. Vous pouvez gérer vos dossiers et fichiers ici — en les créant, les supprimant, les déplaçant et les renommant au besoin.
Après avoir créé un nouveau fichier via le menu Fichier, vous verrez un fichier vide s’ouvrir dans un nouvel onglet. Une fois enregistré, vous pouvez voir le nom du fichier dans le volet latéral de l’Explorateur. Pour créer des dossiers, faites un clic droit sur la barre latérale de l’Explorateur et cliquez sur Nouveau dossier. Vous pouvez développer un dossier en cliquant sur son nom ainsi que faire glisser et déposer des fichiers et des dossiers vers les parties supérieures de la hiérarchie pour les déplacer vers un nouvel emplacement.
La prochaine option donne accès à la fonctionnalité de recherche et remplacement. Ensuite, la suivante donne une vue des systèmes de contrôle de source que vous pourriez utiliser, comme Git.
La vue suivante est l’option de débogueur, qui fournit toutes les actions courantes pour le débogage dans le panneau. Vous pouvez enregistrer les configurations de débogage dans le fichier launch.json
.
La dernière option vous permet de visualiser et d’installer des extensions :
La partie centrale de l’interface graphique est votre éditeur, que vous pouvez séparer par onglets pour l’édition de votre code. Vous pouvez changer votre vue d’édition vers un système de grille ou vers des fichiers côte à côte. Comme tous les IDE modernes, Eclipse Theia prend en charge la coloration syntaxique pour votre code.
Vous pouvez accéder à un terminal en tapant CTRL+MAJ+`
, ou en cliquant sur Terminal dans le menu supérieur, et en sélectionnant Nouveau terminal. Le terminal s’ouvrira dans un panneau inférieur et son répertoire de travail sera défini sur l’espace de travail du projet, qui contient les fichiers et dossiers affichés dans le volet latéral de l’Explorateur.
Si vous souhaitez détruire le déploiement d’Eclipse Theia sur votre cluster, exécutez la commande suivante :
Vous avez exploré un aperçu général de l’interface Eclipse Theia et examiné certaines des fonctionnalités les plus couramment utilisées.
Conclusion
Vous avez désormais Eclipse Theia, un IDE cloud polyvalent, installé sur votre cluster Kubernetes DigitalOcean. Vous l’avez sécurisé avec un certificat TLS Let’s Encrypt gratuit et configuré l’instance pour exiger une connexion de la part du visiteur. Vous pouvez travailler sur votre code source et vos documents individuellement ou collaborer avec votre équipe. Vous pouvez également essayer de construire votre propre version d’Eclipse Theia si vous avez besoin de fonctionnalités supplémentaires. Pour plus d’informations sur la façon de faire cela, visitez la documentation de Theia.