Der Autor hat den Free and Open Source Fund ausgewählt, um im Rahmen des Write for DOnations-Programms eine Spende zu erhalten.
Einführung
Mit der Verlagerung von Entwicklertools in die Cloud wächst die Entwicklung und Verbreitung von Cloud-IDE (Integrated Development Environment)-Plattformen. Cloud-IDEs sind von jedem modernen Gerät über Webbrowser zugänglich und bieten zahlreiche Vorteile für Szenarien der Echtzeit-Zusammenarbeit. Die Arbeit in einer Cloud-IDE bietet Ihnen und Ihrem Team eine einheitliche Entwicklungsumgebung und Testumgebung und minimiert Plattforminkompatibilitäten. Da sie nativ auf Cloud-Technologien basieren, können sie den Cluster nutzen, um Aufgaben zu erledigen, die die Leistung und Zuverlässigkeit eines einzelnen Entwicklungssystems bei weitem übertreffen können.
Eclipse Theia ist eine erweiterbare Cloud-IDE, die auf einem Remote-Server läuft und über einen Webbrowser zugänglich ist. Visuell ist sie so gestaltet, dass sie ähnlich wie Microsoft Visual Studio Code aussieht und sich verhält, was bedeutet, dass sie viele Programmiersprachen unterstützt, ein flexibles Layout hat und über ein integriertes Terminal verfügt. Was Eclipse Theia von anderen Cloud-IDE-Software unterscheidet, ist ihre Erweiterbarkeit; sie kann mithilfe von benutzerdefinierten Erweiterungen modifiziert werden, die es Ihnen ermöglichen, eine Cloud-IDE nach Ihren Bedürfnissen zu gestalten.
In diesem Tutorial richten Sie die Standardversion der Eclipse Theia Cloud-IDE-Plattform auf Ihrem DigitalOcean Kubernetes-Cluster ein und stellen sie unter Ihrer Domain bereit. Die Plattform ist mit Let’s Encrypt-Zertifikaten gesichert und erfordert, dass sich der Besucher authentifiziert. Am Ende haben Sie Eclipse Theia auf Ihrem Kubernetes-Cluster laufen, erreichbar über HTTPS und mit der Anforderung, dass sich der Besucher einloggt.
Voraussetzungen
- 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. - Der Helm 3-Paketmanager muss auf Ihrem lokalen Rechner installiert sein. Führen Sie Schritt 1 des Tutorials „Software auf Kubernetes-Clustern mit dem Helm 3-Paketmanager installieren“ aus.
- Der Nginx Ingress Controller muss auf Ihrem Cluster mit Helm installiert sein, um ExternalDNS mit Ingress-Ressourcen verwenden zu können. Befolgen Sie dazu „So richten Sie einen Nginx Ingress auf DigitalOcean Kubernetes mit Helm ein“.
- 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.
Schritt 1 – Installation und Bereitstellung von Eclipse Theia
Um zu beginnen, installieren Sie Eclipse Theia auf Ihrem DigitalOcean Kubernetes-Cluster. Anschließend werden Sie es unter Ihrer gewünschten Domain mithilfe eines Nginx Ingress freigeben.
Da Sie zwei Beispielbereitstellungen und eine Ressource als Teil der Voraussetzungen erstellt haben, können Sie sie frei löschen, indem Sie die folgenden Befehle ausführen:
Für dieses Tutorial werden Sie die Bereitstellungskonfiguration auf Ihrem lokalen Rechner in einer Datei mit dem Namen eclipse-theia.yaml
speichern. Erstellen Sie diese mit dem folgenden Befehl:
Fügen Sie die folgenden Zeilen zur Datei hinzu:
Diese Konfiguration definiert einen Namespace, eine Bereitstellung, einen Dienst und einen Ingress. Der Namespace heißt theia
und enthält alle Kubernetes-Objekte, die mit Eclipse Theia zusammenhängen, getrennt vom Rest des Clusters. Die Bereitstellung besteht aus einer Instanz des Theia-Docker-Images mit dem Port 3000
, der im Container freigegeben ist. Der Dienst sucht nach der Bereitstellung und remappt den Containerport auf den üblichen HTTP-Port 80
, was den In-Cluster-Zugriff auf Eclipse Theia ermöglicht.
Der Ingress enthält eine Regel, um den Dienst extern unter Port 80
an Ihrer gewünschten Domain bereitzustellen. In seinen Anmerkungen geben Sie an, dass der Nginx Ingress Controller für die Anforderungsverarbeitung verwendet werden soll. Denken Sie daran, theia.ihre_domain
durch Ihre gewünschte Domain zu ersetzen, die Sie auf den Load Balancer Ihres Clusters verwiesen haben, und speichern Sie dann die Datei.
Speichern und schließen Sie die Datei.
Erstellen Sie dann die Konfiguration in Kubernetes, indem Sie den folgenden Befehl ausführen:
Die Ausgabe wird ähnlich aussehen:
Outputnamespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created
Sie können die Erstellung des Eclipse Theia-Pods beobachten, indem Sie Folgendes ausführen:
Die Ausgabe sieht wie folgt aus:
OutputNAME READY STATUS RESTARTS AGE
theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s
Nach einiger Zeit wird der Status auf RUNNING
umschalten, was bedeutet, dass Sie Eclipse Theia erfolgreich in Ihrem Cluster installiert haben.
Navigieren Sie in Ihrem Browser zu Ihrer Domain. Dort sehen Sie die Standard-Oberfläche des Eclipse Theia-Editors:
Sie haben Eclipse Theia erfolgreich auf Ihrem DigitalOcean Kubernetes-Cluster bereitgestellt und es unter Ihrer gewünschten Domain mit einem Ingress freigegeben. Als nächstes sichern Sie den Zugriff auf Ihre Eclipse Theia-Bereitstellung, indem Sie die Anmeldung aktivieren.
Schritt 2 – Aktivieren der Anmeldung für Ihre Domain
In diesem Schritt aktivieren Sie die Anmeldung mit Benutzername und Passwort für Ihre Eclipse Theia-Bereitstellung. Dazu erstellen Sie zunächst eine Liste gültiger Anmeldekombinationen mithilfe des htpasswd
-Dienstprogramms. Anschließend erstellen Sie ein Kubernetes-Geheimnis, das diese Liste enthält, und konfigurieren den Ingress so, dass Besucher gemäß dieser Liste authentifiziert werden. Am Ende ist Ihre Domain nur zugänglich, wenn der Besucher eine gültige Benutzername- und Passwortkombination eingibt. Dies verhindert, dass Gäste und andere unerwünschte Besucher auf Eclipse Theia zugreifen.
Das Dienstprogramm htpasswd
stammt vom Apache-Webserver und wird zum Erstellen von Dateien verwendet, die Listen von Anmeldekombinationen speichern. Das Format der htpasswd
-Dateien ist eine Benutzername:gehashtes_Passwort
-Kombination pro Zeile, was das Format ist, das der Nginx Ingress Controller erwartet, dass die Liste entspricht.
Zuerst aktualisieren Sie den Paketmanager-Cache:
Dann installieren Sie htpasswd
auf Ihrem System, indem Sie den folgenden Befehl ausführen:
Sie werden die Liste in einer Datei namens auth
speichern. Erstellen Sie sie, indem Sie folgenden Befehl ausführen:
Diese Datei muss auth
heißen, weil der Nginx Ingress Controller erwartet, dass das Geheimnis einen Schlüssel namens data.auth
enthält. Wenn er fehlt, wird der Controller HTTP 503 Service nicht verfügbar
zurückgeben.
Fügen Sie einen Benutzernamen und ein Passwort zur Datei auth
hinzu, indem Sie den folgenden Befehl ausführen:
Vergessen Sie nicht, Benutzername
durch Ihren gewünschten Benutzernamen zu ersetzen. Sie werden nach einem passenden Passwort gefragt, und die Kombination wird in die Datei auth
hinzugefügt. Sie können diesen Befehl für so viele Benutzer wiederholen, wie Sie hinzufügen möchten.
Hinweis: Wenn das System, an dem Sie arbeiten, htpasswd
nicht installiert hat, können Sie stattdessen eine Dockerisierte Version verwenden.
Sie müssen Docker auf Ihrem Rechner installiert haben. Für Anweisungen dazu besuchen Sie die offizielle Dokumentation.
Führen Sie den folgenden Befehl aus, um eine dockerisierte Version auszuführen:
Vergessen Sie nicht, <Benutzername>
durch den Benutzernamen zu ersetzen, den Sie verwenden möchten. Sie werden nach einem Passwort gefragt. Die gehashte Anmeldedatenkombination wird auf der Konsole ausgegeben, und Sie müssen sie manuell am Ende der Datei auth
hinzufügen. Wiederholen Sie diesen Vorgang für so viele Anmeldungen, wie Sie hinzufügen möchten.
Wenn Sie fertig sind, erstellen Sie ein neues Geheimnis in Kubernetes mit dem Inhalt der Datei, indem Sie den folgenden Befehl ausführen:
Sie können das Geheimnis mit folgendem Befehl anzeigen:
Die Ausgabe wird wie folgt aussehen:
Als nächstes müssen Sie den Ingress bearbeiten, um das Geheimnis zu verwenden. Öffnen Sie die Bereitstellungskonfiguration zum Bearbeiten:
Fügen Sie die markierten Zeilen zu Ihrer Datei hinzu:
Zuerst geben Sie in der Anmerkung auth-type
an, dass der Authentifizierungstyp basic
ist. Dies bedeutet, dass Nginx den Benutzer auffordert, einen Benutzernamen und ein Passwort einzugeben. Dann geben Sie in auth-secret
an, dass das Geheimnis, das die Liste der gültigen Kombinationen enthält, theia-basic-auth
ist, das Sie gerade erstellt haben. Die verbleibende Anmerkung auth-realm
gibt eine Nachricht an, die dem Benutzer als Erklärung dafür angezeigt wird, warum eine Authentifizierung erforderlich ist. Sie können die Nachricht in diesem Feld nach Belieben ändern.
Speichern und schließen Sie die Datei.
Um die Änderungen in Ihrem Cluster zu propagieren, führen Sie den folgenden Befehl aus:
Sie sehen die Ausgabe:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Öffnen Sie Ihren Domainnamen in Ihrem Browser, wo Sie nun aufgefordert werden, sich anzumelden.
Sie haben die grundlegende Anmeldeauthentifizierung für Ihren Ingress aktiviert, indem Sie ihn konfiguriert haben, um das Geheimnis zu verwenden, das die gehashten Benutzername- und Kennwortkombinationen enthält. Im nächsten Schritt werden Sie den Zugriff weiter sichern, indem Sie TLS-Zertifikate hinzufügen, damit der Datenverkehr zwischen Ihnen und Ihrer Eclipse Theia-Bereitstellung verschlüsselt bleibt.
Schritt 3 – Anwendung von Let’s Encrypt HTTPS-Zertifikaten
Als nächstes sichern Sie Ihre Eclipse Theia-Installation, indem Sie Let’s Encrypt-Zertifikate auf Ihren Ingress anwenden, die automatisch von Cert-Manager bereitgestellt werden. Nach Abschluss dieses Schritts ist Ihre Eclipse Theia-Installation über HTTPS erreichbar.
Öffnen Sie eclipse-theia.yaml
zur Bearbeitung:
Fügen Sie die markierten Zeilen zu Ihrer Datei hinzu und achten Sie darauf, den Platzhalter-Domänennamen durch Ihren eigenen zu ersetzen:
Zuerst geben Sie den letsencrypt-prod
ClusterIssuer an, den Sie als Teil der Voraussetzungen erstellt haben, als den Issuer an, der verwendet wird, um Zertifikate für diesen Ingress bereitzustellen. Dann geben Sie im tls
-Abschnitt die genaue Domäne an, die gesichert werden soll, sowie einen Namen für ein Geheimnis, das diese Zertifikate halten wird.
Speichern und verlassen Sie die Datei.
Wenden Sie die Änderungen auf Ihren Cluster an, indem Sie den folgenden Befehl ausführen:
Die Ausgabe wird wie folgt aussehen:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Es wird einige Minuten dauern, bis die Zertifikate bereitgestellt und vollständig angewendet sind. Sie können den Fortschritt verfolgen, indem Sie die Ausgabe des folgenden Befehls beobachten:
Wenn es fertig ist, wird das Ende der Ausgabe ähnlich aussehen wie dies:
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
Aktualisieren Sie Ihre Domain in Ihrem Browser. Sie sehen ein grünes Vorhängeschloss auf der linksten Seite der Adressleiste, das darauf hinweist, dass die Verbindung sicher ist.
Sie haben das Ingress so konfiguriert, dass Let’s Encrypt-Zertifikate verwendet werden, was Ihre Eclipse Theia-Bereitstellung sicherer macht. Nun können Sie die Standard-Benutzeroberfläche von Eclipse Theia überprüfen.
Schritt 4 — Verwenden der Eclipse Theia-Oberfläche
In diesem Abschnitt werden einige der Funktionen der Eclipse Theia-Oberfläche erkundet.
Auf der linken Seite der IDE befindet sich eine vertikale Reihe von vier Schaltflächen, die die am häufigsten verwendeten Funktionen in einem Seitenbereich öffnen.
Diese Leiste ist anpassbar, sodass Sie diese Ansichten in eine andere Reihenfolge verschieben oder sie aus der Leiste entfernen können. Standardmäßig öffnet die erste Ansicht das Explorer-Panel, das eine baumartige Navigation durch die Struktur des Projekts bietet. Hier können Sie Ihre Ordner und Dateien verwalten, diese bei Bedarf erstellen, löschen, verschieben und umbenennen.
Nachdem Sie eine neue Datei über das Menü Datei erstellt haben, sehen Sie eine leere Datei, die in einem neuen Tab geöffnet ist. Nach dem Speichern können Sie den Dateinamen im Explorer-Seitenbereich anzeigen. Um Ordner zu erstellen, klicken Sie mit der rechten Maustaste auf die Explorer-Seitenleiste und klicken Sie auf Neuer Ordner. Sie können einen Ordner erweitern, indem Sie auf seinen Namen klicken, sowie Dateien und Ordner in obere Teile der Hierarchie ziehen und ablegen, um sie an einen neuen Ort zu verschieben.
Die nächste Option bietet Zugriff auf die Such- und Ersetzungsfunktion. Danach bietet die nächste die Ansicht von Versionskontrollsystemen, die Sie möglicherweise verwenden, wie Git.
Die nächste Ansicht ist die Debugger-Option, die alle gängigen Aktionen für das Debuggen im Panel bietet. Sie können Debugging-Konfigurationen in der Datei launch.json
speichern.
Die letzte Option ermöglicht es Ihnen, Erweiterungen anzuzeigen und zu installieren:
Der zentrale Teil der GUI ist Ihr Editor, den Sie durch Registerkarten für die Bearbeitung Ihres Codes trennen können. Sie können Ihre Bearbeitungsansicht in ein Rastersystem oder in nebeneinanderliegende Dateien ändern. Wie alle modernen IDEs unterstützt Eclipse Theia die Syntaxhervorhebung für Ihren Code.
Sie können auf ein Terminal zugreifen, indem Sie STRG+UMSCHALT+`
eingeben oder auf Terminal im oberen Menü klicken und Neues Terminal auswählen. Das Terminal wird in einem unteren Panel geöffnet, und sein Arbeitsverzeichnis wird auf den Projektarbeitsbereich festgelegt, der die im Explorer-Seitenbereich angezeigten Dateien und Ordner enthält.
Wenn Sie die Eclipse Theia-Bereitstellung auf Ihrem Cluster zerstören möchten, führen Sie den folgenden Befehl aus:
Sie haben einen Überblick über die Eclipse Theia-Oberfläche erhalten und einige der am häufigsten verwendeten Funktionen überprüft.
Fazit
Sie haben jetzt Eclipse Theia, eine vielseitige Cloud-IDE, auf Ihrem DigitalOcean Kubernetes-Cluster installiert. Sie haben es mit einem kostenlosen Let’s Encrypt TLS-Zertifikat gesichert und die Instanz so eingerichtet, dass eine Anmeldung vom Besucher erforderlich ist. Sie können alleine an Ihrem Quellcode und Dokumenten arbeiten oder mit Ihrem Team zusammenarbeiten. Sie können auch versuchen, Ihre eigene Version von Eclipse Theia zu erstellen, wenn Sie zusätzliche Funktionalitäten benötigen. Weitere Informationen dazu finden Sie in der Theia-Dokumentation.