Der Autor hat den Free and Open Source Fund dazu ausgewählt, eine Spende im Rahmen des Programms Write for DOnations zu erhalten.
Die Erstellung und Einführung von Cloud-IDE-Plattformen (IDE: Integrated Development Environment) nimmt zu, da Entwickler-Tools immer häufiger cloudbasiert sind. Cloud-IDEs sind per Webbrowser über beliebige moderne Geräte zugänglich und bieten zahlreiche Vorteile für echtzeitbasierte Zusammenarbeit. Eine Cloud-IDE bietet Ihnen und Ihrem Team eine einheitliche Entwicklungs- und Testumgebung und minimiert gleichzeitig Plattform-Inkompatibilitäten. Da die Plattformen nativ auf Cloud-Technologien basieren, können sie unter Verwendung des Clusters Aufgaben erledigen, die deutlich über die Leistung und Zuverlässigkeit einzelner Entwicklungscomputer hinausgehen.
Eclipse Theia ist eine erweiterbare Cloud IDE, die auf einem Remote-Server läuft und von einem Web-Browser aus zugänglich Aussehen und Verhalten ähneln Microsoft Visual Studio-Code, was heißt, dass viele Programmiersprachen unterstützt werden und es ein flexibles Layout sowie ein integriertes Terminal gibt. Was Eclipse Theia von einer anderen Cloud IDE-Software unterscheidet, ist die Erweiterbarkeit; sie kann mit benutzerdefinierten Erweiterungen modifiziert werden, damit Sie eine Cloud IDE für Ihre Bedürfnisse erstellen können.
In diesem Tutorial richten Sie die Standardversion der Eclipse Theia Cloud IDE-Plattform in Ihrem DigitalOcean Kubernetes-Cluster ein und machen sie in Ihrer Domäne verfügbar, gesichert mit Let’s Encrypt-Zertifikaten und mit vorgeschriebener Authentifizierung des Benutzers. Zum Schluss wird Eclipse Theia in Ihrem Kubernetes-Cluster ausgeführt, der über HTTPS verfügbar ist; dabei muss sich der Benutzer anmelden.
Ein DigitalOcean Kubernetes-Cluster, bei dem Ihre Verbindung standardmäßig als kubectl
konfiguriert ist. Eine Anleitung zur Konfiguration von kubectl
finden Sie unter dem Schritt Verbinden mit Ihrem Cluster, wenn Sie Ihren Cluster erstellen. Um einen Kubernetes-Cluster in DigitalOcean zu erstellen, lesen Sie unser Dokument Kubernetes Schnellstart.
Der auf Ihrem lokalen Rechner installierte Helm-Paketmanager und das in Ihrem Cluster installierte Tiller. Führen Sie dazu die Schritte 1 und 2 des Tutorials Installieren von Software in Kubernetes-Clustern mit dem Helm-Paketmanager aus.
Der Nginx Ingress Controller und Cert Manager, in Ihrem Cluster mit Helm installiert, um Eclipse Theia mit Ingress Resources verfügbar zu machen. Folgen Sie dazu den Anweisungen unter Einrichten eines Nginx Ingress unter DigitalOcean Kubernetes mit Helm.
Ein vollständig registrierter Domänenname zum Hosten von Eclipse Theia. Dieses Tutorial verwendet in allen Bereichen theia.your_domain
. Sie können einen Domänennamen unter Namecheap günstig erwerben oder einen kostenlosen von Freenom herunterladen,. oder einfach die Domänenregistrierngsstelle Ihrer Wahl verwenden.
Installieren Sie zunächst Eclipse Theia in Ihrem DigitalOcean Kubernetes-Cluster. Dann machen Sie die Plattform in Ihrer gewünschten Domäne mit einem Nginx Ingress verfügbar.
Da Sie im Rahmen der Voraussetzungen zwei Beispielumgebungen und eine Ressource erstellt haben, können Sie diese durch Ausführung folgender Befehle bei Bedarf löschen:
- kubectl delete -f hello-kubernetes-ingress.yaml
- kubectl delete -f hello-kubernetes-first.yaml
- kubectl delete -f hello-kubernetes-second.yaml
In diesem Tutorial speichern Sie die Bereitstellungskonfiguration auf Ihrem lokalen Rechner, in einer Datei namens eclipse-theia.yaml
. Erstellen Sie diese mit dem folgenden Befehl:
- nano eclipse-theia.yaml
Fügen Sie der Datei folgende Zeilen hinzu:
apiVersion: v1
kind: Namespace
metadata:
name: theia
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: theia-next
namespace: theia
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: theia.your_domain
http:
paths:
- backend:
serviceName: theia-next
servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
name: theia-next
namespace: theia
spec:
ports:
- port: 80
targetPort: 3000
selector:
app: theia-next
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: theia-next
name: theia-next
namespace: theia
spec:
selector:
matchLabels:
app: theia-next
replicas: 1
template:
metadata:
labels:
app: theia-next
spec:
containers:
- image: theiaide/theia:next
imagePullPolicy: Always
name: theia-next
ports:
- containerPort: 3000
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 verbunden sind, getrennt vom Rest des Clusters. Die Bereitstellung besteht aus einer Instanz des theiaide/theia:next
-Docker-Image, wobei Port 3000
für den Container verfügbar ist. Der Dienst sucht nach der Bereitstellung und ordnet den Container-Port dem üblichen HTTP-Port 80
zu, um Zugriff im Cluster auf Eclipse Theia zu ermöglichen.
Der Ingress enthält eine Regel, um den Dienst bei Port 80
an Ihrer gewünschten Domäne extern bereitzustellen. In den Anmerkungen geben Sie an, dass zur Bearbeitung von Anfragen der Nginx Ingress Controller verwendet werden soll. Vergessen Sie nicht, theia.your_domain
durch Ihre gewünschte Domäne zu ersetzen, die Sie auf den Load Balancer Ihres Clusters verwiesen haben. Speichern und schließen Sie dann die Datei.
Speichern und schließen Sie die Datei.
Erstellen Sie anschließend die Konfiguration in Kubernetes, indem Sie folgenden Befehl ausführen:
- kubectl create -f eclipse-theia.yaml
Sie sehen die folgende Ausgabe:
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 überprüfen, indem Sie folgenden Befehl ausführen:
- kubectl get pods -w -n theia
Die Ausgabe sieht in etwa folgendermaßen aus:
OutputNAME READY STATUS RESTARTS AGE
theia-next-847d8c8b49-jt9bc 0/1 ContainerCreating 0 22s
Nach einer gewissen Zeit ändert sich der Status in RUNNING
, was bedeutet, dass Sie Eclipse Theia erfolgreich in Ihrem Cluster installiert haben.
Navigieren Sie im Browser zu Ihrer Domäne. Sie sehen die Standardoberfläche des Eclipse Theia-Editors.
Sie haben Eclipse Theia in Ihrem DigitalOcean Kubernetes-Cluster bereitgestellt und in Ihrer gewünschten Domäne mit einem Ingress verfügbar gemacht. Als Nächstes sichern Sie den Zugriff auf Ihre Eclipse Theia-Bereitstellung, indem Sie die Anmeldeauthentifizierung aktivieren.
In diesem Schritt aktivieren Sie für Ihre Eclipse Theia-Umgebung die Authentifizierung mit Benutzername und Passwort. Sie erreichen dies, indem Sie zunächst mit dem Dienstprogramm htpasswd
eine Liste mit gültigen Anmeldekombinationen zusammenstellen. Dann erstellen Sie ein Kubernetes-Geheimnis, das diese Liste enthält, und konfigurieren den Ingress, um eine entsprechende Authentifizierung von Besuchern vorzunehmen. Am Ende wird Ihre Domäne nur zugänglich sein, wenn der Besucher eine gültige Kombination aus Benutzername und Passwort eingibt. Dadurch werden Gäste und andere unerwünschte Besucher daran gehindert, auf Eclipse Theia zuzugreifen.
Das Dienstprogramm htpasswd
stammt vom Apache-Webserver und dient zum Erstellen von Dateien, in denen Listen von Anmeldekombinationen gespeichert werden. Das Format von htpasswd
ist eine username:hashed_password
-Kombination pro Zeile, was das Format ist, das der Nginx Ingress Controller von der Liste erwartet.
Installieren Sie zunächst htpasswd
in Ihrem System, indem Sie folgenden Befehl ausführen:
- sudo apt install apache2-utils -y
Speichern Sie die Liste in einer Datei namens auth
. Erstellen Sie sie, indem Sie folgenden Befehl ausführen:
- touch auth
Die Datei muss auth
heißen, da der Nginx Ingress Controller davon ausgeht, dass das Geheimnis einen Schlüssel namens data.auth
enthält. Wenn der Schlüssel fehlt, gibt der Controller den HTTP 503-Status Dienst nicht verfügbar
zurück.
Fügen Sie auth
eine Kombination aus Benutzername und Passwort hinzu, indem Sie folgenden Befehl ausführen:
- htpasswd auth username
Denken Sie daran, username
durch Ihren gewünschten Benutzernamen zu ersetzen. Sie werden nach einem begleitenden Passwort gefragt, bevor die Kombination dann der Datei auth
hinzugefügt wird. Sie können diesen Befehl für so viele Benutzer wiederholen, wie Sie hinzufügen möchten.
Anmerkung: Wenn im System, mit dem Sie arbeiten, htpasswd
nicht installiert ist, können Sie stattdessen eine dockerisierte Version verwenden.
Dafür muss Docker auf Ihrem Rechner installiert sein. Eine Anleitung dazu finden Sie in der offiziellen Dokumentation.
Führen Sie folgenden Befehl aus, um eine dockerisierte Version auszuführen:
- docker run --rm -it httpd htpasswd -n <username>
Denken Sie daran, <username>
durch den gewünschten Benutzernamen zu ersetzen. Sie werden nach einem Passwort gefragt. Die Anmeldekombination mit Hash wird in der Konsole ausgeschrieben; Sie müssen sie am Ende der Datei auth
manuell hinzufügen. Wiederholen Sie diesen Vorgang für so viele Anmeldungen, wie Sie hinzufügen möchten.
Wenn Sie damit fertig sind, erstellen Sie in Kubernetes ein neues Geheimnis mit dem Inhalt der Datei, indem Sie folgenden Befehl ausführen:
- kubectl create secret generic theia-basic-auth --from-file=auth -n theia
Sie können das Geheimnis anzeigen mit:
- kubectl get secret theia-basic-auth -o yaml -n theia
Die Ausgabe sieht ungefähr so aus:
OutputapiVersion: v1
data:
auth: c2FtbXk6JGFwcjEkVFMuSDdyRWwkaFNSNWxPbkc0OEhncmpGZVFyMzEyLgo=
kind: Secret
metadata:
creationTimestamp: "..."
name: theia-basic-auth
namespace: default
resourceVersion: "10900"
selfLink: /api/v1/namespaces/default/secrets/theia-basic-auth
uid: 050767b9-8823-4fd3-b498-5f11074f768b
type: Opaque
Als Nächstes müssen Sie den Ingress so bearbeiten, dass er das Geheimnis verwendet. Öffnen Sie die Bereitstellungskonfiguration zum Bearbeiten:
- nano eclipse-theia.yaml
Fügen Sie in Ihrer Datei die hervorgehobenen Zeilen hinzu:
apiVersion: v1
kind: Namespace
metadata:
name: theia
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: theia-next
namespace: theia
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: theia-basic-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - Eclipse Theia'
spec:
rules:
- host: theia.your_domain
http:
paths:
- backend:
serviceName: theia-next
servicePort: 80
...
Geben Sie zuerst in der Anmerkung auth-type
an, dass der Authentifizierungstyp basic
ist. Das bedeutet, dass Nginx vom Benutzer verlangt, einen Benutzernamen und ein Passwort einzugeben. Dann geben Sie in auth-secret
an, dass das Geheimnis, das die Liste mit gültigen Kombinationen enthält, theia-basic-auth
lautet. Dieses Geheimnis haben Sie gerade erstellt. Die verbleibende Anmerkung auth-realm
gibt eine Nachricht an, die dem Benutzer als Erklärung zur vorgeschriebenen Authentifizierung angezeigt wird. Sie können die in diesem Feld enthaltene Nachricht nach Belieben ändern.
Speichern und schließen Sie die Datei.
Um die Änderungen in Ihrem Cluster zu verteilen, führen Sie folgenden Befehl aus:
- kubectl apply -f eclipse-theia.yaml
Sie sehen die folgende Ausgabe:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Navigieren Sie im Browser zu Ihrer Domäne, wo Sie sich anmelden müssen.
Sie haben für Ihren Ingress die grundlegende Anmeldeauthentifizierung aktiviert, indem Sie ihn so konfiguriert haben, dass das Geheimnis mit der Hash-Kombination aus Benutzername und Passwort verwendet wird. Im nächsten Schritt sichern Sie den Zugriff durch Hinzufügen von TLS-Zertifikaten, sodass der Datenverkehr zwischen Ihnen und Ihrer Eclipse Theia-Umgebung verschlüsselt bleibt.
Als Nächstes sichern Sie Ihre Eclipse Theia-Installation, indem Sie auf Ihren Ingress Let’s Encrypt-Zertifikate anwenden, die von Cert-Manager automatisch bereitgestellt werden. Nach Abschluss dieses Schritts ist Ihre Eclipse Theia-Installation über HTTPS aufrufbar.
Öffnen Sie eclipse-theia.yaml
, um die Datei zu bearbeiten:
- nano eclipse-theia.yaml
Fügen Sie die hervorgehobenen Zeilen Ihrer Datei hinzu und ersetzen Sie dabei die Platzhalterdomäne durch Ihre eigene Domäne:
apiVersion: v1
kind: Namespace
metadata:
name: theia
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: theia-next
namespace: theia
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: theia-basic-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - Eclipse Theia'
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- theia.your_domain
secretName: theia-prod
rules:
- host: theia.your_domain
http:
paths:
- backend:
serviceName: theia-next
servicePort: 80
...
Geben Sie zunächst den letsencrypt-prod
-ClusterIssuer an, den Sie im Rahmen der Voraussetzungen erstellt haben, da dieser Aussteller der Bereitstellung von Zertifikaten für diesen Ingress dient. Dann geben Sie im Abschnitt tls
die genaue Domäne, die gesichert werden soll, sowie einen Namen für ein Geheimnis an, das diese Zertifikate enthalten wird.
Speichern und schließen Sie die Datei.
Wenden Sie die Änderungen in Ihrem Cluster an, indem Sie folgenden Befehl ausführen:
- kubectl apply -f eclipse-theia.yaml
Die Ausgabe sieht ungefähr so aus:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Es dauert einige Minuten, bis die Zertifikate bereitgestellt und vollständig angewendet werden. Sie können den Fortschritt verfolgen, indem Sie die Ausgabe des folgenden Befehls überprüfen:
- kubectl describe certificate theia-prod -n theia
Wenn der Befehl abgeschlossen ist, sieht das Ende der Ausgabe ungefähr so aus:
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 Domäne in Ihrem Browser. Sie sehen auf der linken Seite der Adressleiste ein grünes Schloss, was darauf hinweist, dass die Verbindung gesichert ist.
Sie haben den Ingress so konfiguriert, dass Let’s Encrypt-Zertifikate verwendet werden, um Ihre Eclipse Theia-Installation sicherer zu machen. Jetzt können Sie die Standardbenutzeroberfläche von Eclipse Theia überprüfen.
In diesem Abschnitt werden Sie einige Funktionen von Eclipse Theia erkunden.
Auf der linken Seite der IDE befindet sich eine vertikale Reihe von vier Schaltflächen, welche die am häufigsten verwendeten Funktionen in einem Seitenbereich öffnen.
Diese Leiste ist anpassbar: Sie können diese Ansichten in eine andere Reihenfolge bringen oder aus der Leiste entfernen. Standardmäßig öffnet die erste Ansicht das Explorer-Feld, das eine baumartige Navigation der Struktur des Projekts bereitstellt. Hier können Sie Ihre Ordner und Dateien verwalten – erstellen, löschen, verschieben und umbenennen je nach Bedarf.
Sobald Sie über das Menü Datei eine neue Datei erstellt haben, öffnet sich eine leere Datei in einer neuen Registerkarte. Sobald sie gespeichert wurde, können Sie den Namen der Datei im Seitenfeld des Explorers sehen. Erstellen Sie Ordner durch Rechtsklick 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 beiden nächsten Optionen bieten Zugriff auf die Funktion zum Suchen und Ersetzen. Die darauffolgende Option bietet eine Ansicht von Versionsverwaltungssystemen, die Sie möglicherweise verwenden, wie z. B. Git.
Die letzte Ansicht ist die Debugger-Option, die alle gängigen Aktionen zum Debuggen in dem Feld bereitstellt. Debugging-Konfigurationen können Sie in der Datei launch.json
speichern.
Der zentrale Teil der GUI ist Ihr Editor, den Sie für die Codebearbeitung durch Tabs trennen können. Sie können in der Bearbeitungsansicht zwischen einem Rastersystem oder Dateien nebeneinander wechseln. Eclipse Theia unterstützt, wie alle modernen IDEs, Syntaxhervorhebung für Ihren Code.
Sie können sich Zugriff auf ein Terminal verschaffen, indem Sie Strg+Umschalt+`
eingeben oder im oberen Menü auf Terminal klicken und Neues Terminal auswählen. Das Terminal öffnet sich in einem unteren Feld und sein Arbeitsverzeichnis wird auf den Arbeitsbereich des Projekts festgelegt, der die im Explorer-Seitenbereich angezeigten Dateien und Ordner erhält.
Sie haben sich nun einen Überblick über die Eclipse Theia-Benutzeroberfläche und einige der am häufigsten verwendeten Funktionen verschafft.
Sie haben nun Eclipse Theia, eine vielseitige Cloud-IDE, in Ihrem DigitalOcean Kubernetes-Cluster installiert. Sie haben sie mit einem kostenlosen Let’s Encrypt-TLS-Zertifikat gesichert und die Instanz so eingerichtet, dass eine Anmeldung des Benutzers vorgeschrieben ist. Sie können damit an Ihrem Quellcode und Dokumenten einzeln arbeiten oder im Team zusammenarbeiten. Sie können auch versuchen, Ihre eigene Version von Eclipse Theia zu erstellen, wenn Sie zusätzliche Funktionen benötigen. Weitere Informationen dazu finden Sie unter Theia Docs.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!