Come configurare la piattaforma Eclipse Theia Cloud IDE su DigitalOcean Kubernetes

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 IDE cloud estensibile che funziona su un server remoto ed è accessibile da un browser web. Visivamente, è progettato per assomigliare e comportarsi in modo simile a Microsoft Visual Studio Code, il che significa che supporta molti linguaggi di programmazione, ha un layout flessibile e un terminale integrato. Ciò che differenzia Eclipse Theia da altri software IDE cloud è la sua estensibilità; può essere modificato utilizzando estensioni personalizzate, che ti consentono di creare un IDE cloud adatto alle tue esigenze.

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 configure kubectl 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.

  1. kubectl delete -f hello-kubernetes-ingress.yaml
  2. kubectl delete -f hello-kubernetes-first.yaml
  3. kubectl delete -f hello-kubernetes-second.yaml

Quindi, crea la configurazione in Kubernetes eseguendo il seguente comando:

  1. nano eclipse-theia.yaml

L’output sarà simile a questo:

eclipse-theia.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: theia
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: theia-next
  namespace: theia
spec:
  ingressClassName: nginx
  rules:
  - host: theia.your_domain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: theia-next
            port:
              number: 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: francoisvans/theia-docker-test
        imagePullPolicy: Always
        name: theia-next
        ports:
        - containerPort: 3000

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:

  1. kubectl apply -f eclipse-theia.yaml

L’output sarà simile a questo:

Output
namespace/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:

  1. kubectl get pods -w -n theia

L’output sarà simile a questo:

Output
NAME 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:

  1. sudo apt update

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.

  1. sudo apt install apache2-utils -y

Nota: Se il sistema su cui stai lavorando non ha htpasswd installato, puoi utilizzare invece una versione Dockerizzata.Dovrai avere Docker installato sul tuo computer. Per istruzioni su come farlo, visita la documentazione ufficiale.Esegui il seguente comando per eseguire una versione Dockerizzata:

  1. touch auth

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:

  1. htpasswd auth username

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:

  1. docker run --rm -it httpd htpasswd -n <username>

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:

  1. kubectl create secret generic theia-basic-auth --from-file=auth -n theia

Puoi visualizzare il segreto con:

  1. kubectl get secret theia-basic-auth -o yaml -n theia

L’output sarà simile a:

Output
apiVersion
: v1 data: auth: ... kind: Secret metadata: creationTimestamp: "2021-12-31T17:16:29Z" name: theia-basic-auth namespace: theia resourceVersion: "32437" uid: 47461e23-e281-411b-acfd-cea82fcde41b type: Opaque

Successivamente, dovrai modificare l’Ingress per farlo utilizzare il segreto. Apri la configurazione della distribuzione per la modifica:

  1. nano eclipse-theia.yaml

Aggiungi le righe evidenziate al tuo file:

eclipse-theia.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: theia
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: theia-next
  namespace: theia
  annotations:
    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:
  ingressClassName: nginx
  rules:
  - host: theia.your_domain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: theia-next
            port:
              number: 80
...

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:

  1. kubectl apply -f eclipse-theia.yaml

Vedrai l’output:

Output
namespace/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:

  1. nano eclipse-theia.yaml

Aggiungi le righe evidenziate al tuo file, assicurandoti di sostituire il dominio di placeholder con il tuo:

eclipse-theia.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: theia
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: theia-next
  namespace: theia
  annotations:
    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
  ingressClassName: nginx
  rules:
  - host: theia.your_domain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: theia-next
            port:
              number: 80
...

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:

  1. kubectl apply -f eclipse-theia.yaml

L’output sarà simile a:

Output
namespace/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:

  1. kubectl describe certificate theia-prod -n theia

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:

  1. kubectl delete -f eclipse-theia.yaml

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.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-the-eclipse-theia-cloud-ide-platform-on-digitalocean-kubernetes