L’autore ha selezionato il Fondo per il Software Libero e Open Source per ricevere una donazione nell’ambito del programma Scrivi per le Donazioni.
Introduzione
Con gli strumenti per sviluppatori che si spostano verso il cloud, la creazione e l’adozione di piattaforme IDE (Ambiente di Sviluppo Integrato) basate su cloud stanno crescendo. Gli IDE cloud sono accessibili da ogni tipo di dispositivo moderno attraverso i browser web e offrono numerosi vantaggi per scenari di collaborazione in tempo reale. Lavorare in un IDE cloud fornisce un ambiente unificato di sviluppo e test per te e il tuo team, riducendo al minimo le incompatibilità di piattaforma. Poiché sono nativamente basati su tecnologie cloud, sono in grado di utilizzare il cluster per eseguire compiti, il che può superare notevolmente la potenza e l’affidabilità di un singolo computer di sviluppo.
Eclipse Theia è un cloud IDE estensibile che gira su un server remoto e che è accessibile da un browser web. Visivamente, è progettato per apparire e comportarsi in modo simile a Microsoft Visual Studio Code, il che significa che supporta molti linguaggi di programmazione, ha una disposizione flessibile e ha un terminale integrato. Ciò che separa Eclipse Theia dagli altri software cloud IDE è la sua estensibilità; può essere modificato utilizzando estensioni personalizzate, che ti consentono di creare un cloud IDE adatto alle tue esigenze.
In questo tutorial, configurerai la versione predefinita della piattaforma cloud IDE Eclipse Theia sul tuo cluster Kubernetes di DigitalOcean e la renderai accessibile al tuo dominio, protetta con certificati Let’s Encrypt e che richiede all’utente che visita di autenticarsi. Alla fine, avrai Eclipse Theia in esecuzione sul tuo cluster Kubernetes accessibile tramite HTTPS e che richiede all’utente che visita di effettuare il login.
Prerequisiti
- 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. - Il gestore di pacchetti Helm3 installato sul tuo computer locale. Completa Passo1 del tutorial Come installare software su cluster Kubernetes con il gestore di pacchetti Helm3.
- Per iniziare, installerai Eclipse Theia nel tuo cluster Kubernetes di DigitalOcean. Quindi, lo esponi all’indirizzo del dominio desiderato utilizzando un Ingress Nginx.Poiché hai creato due distribuzioni di esempio e una risorsa come parte delle premesse, puoi eliminarli liberamente eseguendo i seguenti comandi:
- 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.
Per questa guida, memorizzerai la configurazione della distribuzione nel tuo computer locale, in un file denominato eclipse-theia.yaml
. Crealo utilizzando il seguente comando:Aggiungi le seguenti righe al file: Questa configurazione definisce un Namespace, una Distribuzione, un Servizio e un Ingress. Il Namespace si chiama theia
e conterrà tutti gli oggetti Kubernetes correlati a Eclipse Theia, separati dal resto del cluster. La Distribuzione consiste in una singola istanza dell’immagine Docker Theia con la porta 3000
esposta nel contenitore. Il Servizio cerca la Distribuzione e rimappa la porta del contenitore alla porta HTTP usuale, 80
, consentendo l’accesso al cluster a Eclipse Theia.
L’Ingress contiene una regola per servire il Servizio sulla porta 80
esternamente al tuo dominio desiderato. Nelle sue annotazioni, specifici che il Controller Ingress Nginx dovrebbe essere utilizzato per elaborare le richieste. Ricorda di sostituire theia.your_domain
con il dominio desiderato che hai indirizzato al tuo Load Balancer del cluster, quindi salva e chiudi il file.
Salva e esci dal file.
Quindi, crea la configurazione in Kubernetes eseguendo il seguente comando:
L’output sarà simile a questo:
Questa configurazione definisce uno Spazio dei nomi, un Deployment, un Servizio e un Ingress. Lo Spazio dei nomi si chiama theia
e conterrà tutti gli oggetti Kubernetes relativi a Eclipse Theia, separati dal resto del cluster. Il Deployment consiste in un’istanza dell’immagine Docker Theia con la porta 3000
esposta sul contenitore. Il Servizio cerca il Deployment e riassegna la porta del contenitore alla solita porta HTTP, 80
, consentendo l’accesso all’interno del cluster a Eclipse Theia.
L’Ingress contiene una regola per servire il Servizio sulla porta 80
esternamente al dominio desiderato. Nelle sue annotazioni, si specifica che il Controller Ingress Nginx dovrebbe essere utilizzato per elaborare le richieste. Ricorda di sostituire theia.your_domain
con il dominio desiderato che hai indirizzato al tuo Load Balancer del cluster, quindi salva e chiudi il file.
Salva ed esci dal file.
Quindi, crea la configurazione in Kubernetes eseguendo il seguente comando:
L’output sarà simile a questo:
Outputnamespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created
Puoi guardare la creazione del pod Eclipse Theia eseguendo:
L’output sarà simile a questo:
OutputNAME READY STATUS RESTARTS AGE
theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s
Dopo un po’ di tempo, lo stato diventerà RUNNING
, il che significa che hai installato con successo Eclipse Theia nel tuo cluster.
Vai al tuo dominio nel tuo browser. Vedrai l’interfaccia utente predefinita dell’editor Eclipse Theia:
Hai distribuito Eclipse Theia nel tuo cluster DigitalOcean Kubernetes ed esposto al tuo dominio desiderato con un Ingress. Successivamente, proteggerai l’accesso alla tua distribuzione Eclipse Theia abilitando l’autenticazione di accesso.
L’utilità htpasswd
proviene dal server web Apache ed è utilizzata per creare file che memorizzano elenchi di combinazioni di login. Il formato dei file htpasswd
è una combinazione username:hashed_password
per riga, che è il formato che il controller di Ingress di Nginx si aspetta che l’elenco segua. Innanzitutto, aggiorna la cache del gestore dei pacchetti:
Poi, installa htpasswd
sul tuo sistema eseguendo il seguente comando:
Memorizzerai l’elenco in un file chiamato auth
. Crea il file eseguendo:Questo file deve essere chiamato auth
perché il controller di Ingress di Nginx si aspetta che il segreto contenga una chiave chiamata data.auth
. Se manca, il controller restituirà lo stato HTTP 503 Service Unavailable
.
Aggiungi una combinazione di nome utente e password a auth
eseguendo il seguente comando:
Ricorda di sostituire username
con il nome utente desiderato. Ti verrà chiesta una password accompagnatoria e la combinazione verrà aggiunta al file auth
. Puoi ripetere questo comando per quante più utenti desideri aggiungere.
htpasswd
installato, puoi utilizzare invece una versione Dockerizzata.
Questo file deve essere chiamato auth
perché il controller Ingress di Nginx si aspetta che il segreto contenga una chiave chiamata data.auth
. Se manca, il controller restituirà lo stato HTTP503 Service Unavailable
.
Aggiungi una combinazione di nome utente e password a auth
eseguendo il seguente comando:
Ricorda di sostituire username
con il nome utente desiderato. Ti verrà chiesto di inserire una password corrispondente e la combinazione verrà aggiunta nel file auth
. Puoi ripetere questo comando per aggiungere quanti utenti desideri.
Nota: Se il sistema su cui stai lavorando non ha installato htpasswd
, puoi utilizzare una versione Dockerizzata al suo posto.
Avrai bisogno di avere Docker installato sul tuo computer. Per istruzioni su come farlo, visita le documentazioniufficiali.
Esegui il seguente comando per eseguire una versione Dockerizzata:
Ricorda di sostituire <username>
con il nome utente che desideri utilizzare. Ti verrà chiesto di inserire una password. La combinazione di accesso hash verrà scritta sul console e dovrai aggiungerla manualmente alla fine del file auth
. Ripeti questo processo per aggiungere quanti accessi desideri.
Quando hai finito, crea un nuovo segreto in Kubernetes con il contenuto del file eseguendo il seguente comando:
Puoi visualizzare il segreto con:
L’output sarà simile a:
Successivamente, dovrai modificare l’Ingress per farlo utilizzare il segreto. Apri la configurazione della distribuzione per la modifica:
Aggiungi le righe evidenziate al tuo file:
Innanzitutto, nell’annotazione auth-type
, specifichi che il tipo di autenticazione è basic
. Ciò significa che Nginx richiederà all’utente di inserire un nome utente e una password. Quindi, in auth-secret
, specifichi che il segreto che contiene la lista di combinazioni valide è theia-basic-auth
, che hai appena creato. L’annotazione rimanente auth-realm
specifica un messaggio che verrà mostrato all’utente come spiegazione del motivo per cui è richiesta l’autenticazione. Puoi cambiare il messaggio contenuto in questo campo a tuo piacimento.
Salva e chiudi il file.
Per propagare le modifiche al tuo cluster, esegui il seguente comando:
Vedrai l’output:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Vai al tuo dominio nel tuo browser, dove ora ti verrà chiesto di accedere.
Hai abilitato l’autenticazione di accesso di base sull’Ingress configurandolo per utilizzare il segreto contenente le combinazioni di nome utente e password hash. Nel passaggio successivo, proteggerai ulteriormente l’accesso aggiungendo i certificati TLS, in modo che il traffico tra te e la tua distribuzione di Eclipse Theia rimanga crittografato.
Passo3 – Applicare i Certificati HTTPS Let’s Encrypt
Successivo, proteggerai la tua installazione di Eclipse Theia applicando i certificati Let’s Encrypt al tuo Ingress, che Cert-Manager provvederà a fornire automaticamente. Dopo aver completato questo passaggio, la tua installazione di Eclipse Theia sarà accessibile tramite HTTPS.
Apri il file eclipse-theia.yaml
per la modifica:
Aggiungi le righe evidenziate al tuo file, assicurandoti di sostituire il dominio di placeholder con il tuo:
Per prima cosa, specifichi il ClusterIssuer letsencrypt-prod
che hai creato come parte dei prerequisiti come emittente che verrà utilizzato per fornire i certificati per questo Ingress. Quindi, nella sezione tls
, specifichi il dominio esatto che deve essere protetto, nonché un nome per un segreto che conterrà quei certificati.
Salva e esci dal file.
Applica le modifiche al tuo cluster eseguendo il seguente comando:
L’output sarà simile a:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Ci vorranno alcuni minuti affinché i certificati vengano forniti e applicati completamente. Puoi monitorare lo stato del processo osservando l’output del seguente comando:
Quando sarà terminato, la fine dell’output sarà simile a questa:
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
Aggiorna il tuo dominio nel browser. Vedrai un lucchetto verde mostrato nella parte più a sinistra della barra dell’indirizzo che indica che la connessione è sicura.
Hai configurato l’Ingress per utilizzare i certificati Let’s Encrypt, rendendo così la tua distribuzione di Eclipse Theia più sicura. Ora puoi esaminare l’interfaccia utente predefinita di Eclipse Theia.
Passo4— Utilizzo dell’Interfaccia di Eclipse Theia
In questa sezione, esplorerai alcune delle caratteristiche dell’interfaccia di Eclipse Theia.
Sul lato sinistro dell’IDE, c’è una fila verticale di quattro pulsanti che aprono le funzionalità più comunemente utilizzate in un pannello laterale.
Questa barra è personalizzabile, quindi puoi spostare queste viste in un ordine diverso o rimuoverle dalla barra. Per impostazione predefinita, la prima vista apre il pannello Esplora che fornisce una navigazione ad albero della struttura del progetto. Puoi gestire le tue cartelle e file qui, creando, eliminando, spostando e rinominando loro come necessario.
Dopo aver creato un nuovo file tramite il menu File, vedrai un file vuoto aperto in una nuova scheda. Una volta salvato, puoi visualizzare il nome del file nel pannello laterale Esplora. Per creare cartelle, fai clic con il tasto destro sul pannello laterale Esplora e fai clic su Nuova Cartella. Puoi espandere una cartella facendo clic sul suo nome e anche trascinare e rilasciare file e cartelle verso parti superiori della gerarchia per spostarli in una nuova posizione.
La prossima opzione fornisce accesso alla funzionalità di ricerca e sostituzione. Seguendolo, il prossimo fornisce una vista dei sistemi di controllo della versione che potresti utilizzare, come Git.
La prossima vista è l’opzione debugger, che fornisce tutte le azioni comuni per il debug nel pannello. È possibile salvare le configurazioni di debug nel file launch.json
.
L’ultima opzione consente di visualizzare e installare estensioni:
La parte centrale dell’interfaccia utente è il tuo editor, che puoi separare per schede per la modifica del codice. È possibile modificare la visuale di modifica in un sistema a griglia o in file affiancati. Come tutti gli IDE moderni, Eclipse Theia supporta il syntax highlighting per il tuo codice.
È possibile accedere a un terminale digitando CTRL+SHIFT+`
, oppure facendo clic su Terminal nel menu in alto e selezionando Nuovo Terminal. Il terminale si aprirà in un pannello inferiore e la sua directory di lavoro sarà impostata sul workspace del progetto, che contiene i file e le cartelle visualizzati nel pannello laterale Esplora.
Se desideri eliminare la distribuzione di Eclipse Theia dal tuo cluster, esegui il seguente comando:
Hai esplorato una panoramica di alto livello dell’interfaccia di Eclipse Theia e rivisto alcune delle funzionalità più comunemente utilizzate.
Conclusione
Ora hai Eclipse Theia, un versatile IDE cloud, installato sul tuo cluster Kubernetes di DigitalOcean. Lo hai protetto con un certificato TLS gratuito di Let’s Encrypt e configurato per richiedere un accesso dall’utente. Puoi lavorare sul tuo codice sorgente e sui documenti con esso individualmente o collaborare con il tuo team. Puoi anche provare a creare la tua versione di Eclipse Theia se hai bisogno di funzionalità aggiuntive. Per ulteriori informazioni su come farlo, visita la documentazione di Theia.