De auteur heeft het Free and Open Source Fund geselecteerd om een donatie te ontvangen als onderdeel van het Write for DOnations-programma.
Introductie
Met ontwikkelaarstools die naar de cloud verhuizen, groeit de creatie en adoptie van cloud-IDE (Integrated Development Environment) platforms. Cloud IDE’s zijn toegankelijk vanaf elk type modern apparaat via webbrowsers en ze bieden tal van voordelen voor realtime samenwerkingsscenario’s. Werken in een cloud-IDE biedt een uniforme ontwikkel- en testomgeving voor jou en je team, terwijl platformonverenigbaarheden tot een minimum worden beperkt. Omdat ze van nature zijn gebaseerd op cloudtechnologieën, kunnen ze gebruikmaken van de cluster om taken uit te voeren, wat de kracht en betrouwbaarheid van een enkele ontwikkelcomputer aanzienlijk kan overtreffen.
Eclipse Theia is een uitbreidbare cloud-IDE die wordt uitgevoerd op een externe server en toegankelijk is via een webbrowser. Visueel is het ontworpen om eruit te zien en zich te gedragen als Microsoft Visual Studio Code, wat betekent dat het veel programmeertalen ondersteunt, een flexibele lay-out heeft en een geïntegreerde terminal heeft. Wat Eclipse Theia onderscheidt van andere cloud-IDE-software is de uitbreidbaarheid; het kan worden aangepast met aangepaste extensies, waarmee je een cloud-IDE kunt maken die is afgestemd op jouw behoeften.
In deze tutorial zul je de standaardversie van het Eclipse Theia cloud IDE-platform opzetten op je DigitalOcean Kubernetes-cluster en het blootstellen op je domein, beveiligd met Let’s Encrypt-certificaten en vereist dat de bezoeker zich authenticeert. Uiteindelijk heb je Eclipse Theia draaiend op je Kubernetes-cluster, beschikbaar via HTTPS en vereist dat de bezoeker zich aanmeldt.
Vereisten
- 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. - De Helm 3-pakketbeheerder geïnstalleerd op je lokale machine. Voltooi Stap 1 van de Hoe Software te Installeren op Kubernetes Clusters met de Helm 3 Pakketbeheerder tutorial.
- De Nginx Ingress-controller geïnstalleerd op je cluster met behulp van Helm om ExternalDNS te gebruiken met Ingress-bronnen. Volg hiervoor Hoe een Nginx Ingress op DigitalOcean Kubernetes in te stellen met behulp van 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.
Stap 1 — Eclipse Theia Installeren en Blootstellen
Om te beginnen installeer je Eclipse Theia op je DigitalOcean Kubernetes-cluster. Vervolgens exposeer je het op je gewenste domein met behulp van een Nginx Ingress.
Aangezien je twee voorbeeld-implementaties en een resource hebt aangemaakt als onderdeel van de voorbereidingen, kun je ze vrijelijk verwijderen door de volgende commando’s uit te voeren:
Voor deze handleiding sla je de implementatieconfiguratie op je lokale machine op in een bestand met de naam eclipse-theia.yaml
. Maak het aan met behulp van het volgende commando:
Voeg de volgende regels toe aan het bestand:
Deze configuratie definieert een Namespace, een Deployment, een Service en een Ingress. De Namespace heet theia
en bevat alle Kubernetes-objecten die verband houden met Eclipse Theia, gescheiden van de rest van de cluster. De Deployment bestaat uit één instantie van de Theia Docker-image met poort 3000
blootgesteld op de container. De Service zoekt naar de Deployment en hermapt de containerpoort naar de gebruikelijke HTTP-poort, 80
, waardoor in-cluster toegang tot Eclipse Theia mogelijk is.
De Ingress bevat een regel om de Service extern beschikbaar te maken op poort 80
op je gewenste domein. In de annotaties geef je aan dat de Nginx Ingress Controller moet worden gebruikt voor het verwerken van verzoeken. Vergeet niet theia.jouw_domein
te vervangen door je gewenste domein dat je hebt doorverwezen naar de Load Balancer van je cluster, sla vervolgens het bestand op en sluit het af.
Sla het bestand op en sluit af.
Vervolgens maak je de configuratie in Kubernetes aan door het volgende commando uit te voeren:
De uitvoer zal er ongeveer zo uitzien:
Outputnamespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created
U kunt de Eclipse Theia pod-creatie bekijken door het volgende uit te voeren:
Het resultaat ziet er zo uit:
OutputNAME READY STATUS RESTARTS AGE
theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s
Na enige tijd zal de status veranderen in RUNNING
, wat betekent dat u Eclipse Theia succesvol hebt geïnstalleerd op uw cluster.
Navigeer naar uw domein in uw browser. U ziet de standaard Eclipse Theia-editor GUI:
U hebt Eclipse Theia uitgerold naar uw DigitalOcean Kubernetes-cluster en het blootgesteld op uw gewenste domein met een Ingress. Vervolgens zult u de toegang tot uw Eclipse Theia-implementatie beveiligen door inlogauthenticatie in te schakelen.
Stap 2 — Inlogauthenticatie inschakelen voor uw domein
In deze stap schakelt u gebruikersnaam- en wachtwoordauthenticatie in voor uw Eclipse Theia-implementatie. U bereikt dit door eerst een lijst samen te stellen van geldige inlogcombinaties met behulp van het htpasswd
-hulpprogramma. Vervolgens maakt u een Kubernetes-geheim aan met die lijst en configureert u de Ingress om bezoekers hiermee te authenticeren. Uw domein zal uiteindelijk alleen toegankelijk zijn wanneer de bezoeker een geldige gebruikersnaam- en wachtwoordcombinatie invoert. Dit voorkomt dat gasten en andere ongewenste bezoekers toegang krijgen tot Eclipse Theia.
Het hulpprogramma htpasswd
komt van de Apache-webserver en wordt gebruikt voor het maken van bestanden die lijsten van inlogcombinaties opslaan. Het formaat van htpasswd
-bestanden is één gebruikersnaam:gehasht_wachtwoord
-combinatie per regel, wat het formaat is waar de Nginx Ingress Controller verwacht dat de lijst aan voldoet.
Eerst, werk de pakketbeheer-cache bij:
Vervolgens, installeer htpasswd
op je systeem door het volgende commando uit te voeren:
Je zult de lijst opslaan in een bestand genaamd auth
. Maak het aan door het volgende uit te voeren:
Dit bestand moet de naam auth
hebben omdat de Nginx Ingress Controller verwacht dat het geheim een sleutel genaamd data.auth
bevat. Als dat ontbreekt, zal de controller een HTTP 503 Service Unavailable
status retourneren.
Voeg een gebruikersnaam en wachtwoordcombinatie toe aan auth
door het volgende commando uit te voeren:
Vergeet niet om gebruikersnaam
te vervangen door je gewenste gebruikersnaam. Je wordt gevraagd om een bijbehorend wachtwoord en de combinatie wordt toegevoegd aan het auth
-bestand. Je kunt dit commando herhalen voor zoveel gebruikers als je wilt toevoegen.
Opmerking: Als het systeem waar je aan werkt geen htpasswd
geïnstalleerd heeft, kun je in plaats daarvan een Dockerized versie gebruiken.
Je hebt Docker geïnstalleerd nodig op je machine. Voor instructies over hoe dit te doen, bezoek de officiële documentatie.
Voer het volgende commando uit om een gedockeriseerde versie uit te voeren:
Vergeet niet om <gebruikersnaam>
te vervangen door de gebruikersnaam die je wilt gebruiken. Je wordt gevraagd om een wachtwoord in te voeren. De gehashte logincombinatie wordt weergegeven in de console en je moet deze handmatig toevoegen aan het einde van het auth
-bestand. Herhaal dit proces voor zoveel logins als je wilt toevoegen.
Als je klaar bent, maak je een nieuw geheim aan in Kubernetes met de inhoud van het bestand door het volgende commando uit te voeren:
Je kunt het geheim zien met:
De uitvoer ziet er als volgt uit:
Vervolgens moet je de Ingress bewerken om het geheim te gebruiken. Open de configuratie van de implementatie om te bewerken:
Voeg de gemarkeerde regels toe aan je bestand:
Eerst geef je in de auth-type
-annotatie aan dat het authenticatietype basic
is. Dit betekent dat Nginx de gebruiker zal vragen om een gebruikersnaam en wachtwoord in te voeren. Vervolgens geef je in auth-secret
aan dat het geheim dat de lijst met geldige combinaties bevat theia-basic-auth
is, dat je zojuist hebt aangemaakt. De resterende auth-realm
-annotatie specificeert een bericht dat aan de gebruiker wordt getoond als uitleg waarom authenticatie vereist is. Je kunt het bericht in dit veld naar wens aanpassen.
Sla het bestand op en sluit het.
Om de wijzigingen naar je cluster te propageteren, voer je het volgende commando uit:
Je ziet de uitvoer:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Navigeer naar je domein in je browser, waar je nu wordt gevraagd om in te loggen.
Je hebt basisaanmeldingsverificatie ingeschakeld op je Ingress door het te configureren om de geheime code te gebruiken die de gehashte gebruikersnaam- en wachtwoordcombinaties bevat. In de volgende stap beveilig je de toegang verder door TLS-certificaten toe te voegen, zodat het verkeer tussen jou en je Eclipse Theia-implementatie versleuteld blijft.
Stap 3 — Toepassen van Let’s Encrypt HTTPS-certificaten
Vervolgens beveilig je je Eclipse Theia-installatie door Let’s Encrypt-certificaten toe te passen op je Ingress, die Cert-Manager automatisch zal verstrekken. Na het voltooien van deze stap is je Eclipse Theia-installatie toegankelijk via HTTPS.
Open eclipse-theia.yaml
om te bewerken:
Voeg de gemarkeerde regels toe aan je bestand en zorg ervoor dat je de placeholder-domeinnaam vervangt door je eigen domein:
Ten eerste, specificeer je de letsencrypt-prod
ClusterIssuer die je hebt aangemaakt als onderdeel van de vereisten als de uitgever die zal worden gebruikt om certificaten te verstrekken voor deze Ingress. Vervolgens specificeer je in de tls
-sectie het exacte domein dat beveiligd moet worden, evenals een naam voor een geheime code die die certificaten zal bevatten.
Sla het bestand op en sluit af.
Breng de wijzigingen aan in je cluster door het volgende commando uit te voeren:
De uitvoer zal er als volgt uitzien:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Het duurt een paar minuten voordat de certificaten zijn voorzien en volledig toegepast. U kunt de voortgang volgen door de uitvoer van de volgende opdracht te observeren:
Wanneer het klaar is, zal het einde van de uitvoer er ongeveer zo uitzien:
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
Vernieuw uw domein in uw browser. U zult een groen hangslot zien aan de meest linkerkant van de adresbalk, wat aangeeft dat de verbinding beveiligd is.
U heeft de Ingress geconfigureerd om Let’s Encrypt-certificaten te gebruiken, waardoor uw Eclipse Theia-implementatie veiliger wordt. Nu kunt u de standaardgebruikersinterface van Eclipse Theia bekijken.
Stap 4 — Gebruik van de Eclipse Theia Interface
In dit gedeelte zult u enkele functies van de Eclipse Theia-interface verkennen.
Aan de linkerkant van de IDE bevindt zich een verticale rij van vier knoppen die de meest gebruikte functies openen in een zijpaneel.
Deze balk is aanpasbaar, zodat u deze weergaven naar een andere volgorde kunt verplaatsen of ze uit de balk kunt verwijderen. Standaard opent de eerste weergave het Verkenner-paneel dat boomstructuurnavigatie van de projectstructuur biedt. U kunt hier uw mappen en bestanden beheren—ze maken, verwijderen, verplaatsen en hernoemen zoals nodig.
Na het maken van een nieuw bestand via het Bestand-menu, zie je een leeg bestand geopend in een nieuw tabblad. Nadat het is opgeslagen, kun je de naam van het bestand zien in het zijpaneel van Verkenner. Om mappen te maken, klik met de rechtermuisknop op de Verkenner-zijbalk en klik op Nieuwe map. Je kunt een map uitvouwen door op de naam te klikken en ook bestanden en mappen naar hogere delen van de hiërarchie slepen en neerzetten om ze naar een nieuwe locatie te verplaatsen.
De volgende optie biedt toegang tot de zoek- en vervangfunctionaliteit. Daarna geeft de volgende toegang tot een weergave van versiebeheersystemen die je mogelijk gebruikt, zoals Git.
De volgende weergave is de debuggeroptie, die alle gebruikelijke acties voor debuggen in het paneel biedt. Je kunt debugconfiguraties opslaan in het launch.json
-bestand.
De laatste optie stelt je in staat om extensies te bekijken en te installeren:
Het centrale deel van de GUI is je editor, die je kunt scheiden door tabbladen voor het bewerken van je code. Je kunt je bewerkingsweergave wijzigen naar een rasterweergave of naar bestanden naast elkaar. Zoals alle moderne IDE’s, ondersteunt Eclipse Theia syntaxhighlighting voor je code.
Je kunt toegang krijgen tot een terminal door CTRL+SHIFT+`
te typen, of door te klikken op Terminal in het bovenste menu en Nieuwe terminal te selecteren. De terminal wordt geopend in een lager paneel en de werkmap wordt ingesteld op de projectwerkruimte, die de bestanden en mappen bevat die worden weergegeven in het zijpaneel van Verkenner.
Als je de implementatie van Eclipse Theia op je cluster wilt vernietigen, voer dan het volgende commando uit:
Je hebt een hoog overzicht van de Eclipse Theia-interface verkend en enkele van de meest gebruikte functies bekeken.
Conclusie
Je hebt nu Eclipse Theia, een veelzijdige cloud-IDE, geïnstalleerd op je DigitalOcean Kubernetes-cluster. Je hebt het beveiligd met een gratis Let’s Encrypt TLS-certificaat en de instantie zo ingesteld dat een login van de bezoeker vereist is. Je kunt er individueel aan je broncode en documenten werken of samenwerken met je team. Je kunt ook proberen je eigen versie van Eclipse Theia te bouwen als je extra functionaliteit nodig hebt. Voor meer informatie over hoe je dat kunt doen, bezoek de Theia-documentatie.