El autor seleccionó el Fondo de Software Libre y de Código Abierto para recibir una donación como parte del programa Escribir para Donaciones.
Introducción
Con las herramientas de desarrollo migrando a la nube, la creación y adopción de plataformas de IDE en la nube (Entorno de Desarrollo Integrado) está creciendo. Los IDE en la nube son accesibles desde todo tipo de dispositivos modernos a través de navegadores web, y ofrecen numerosas ventajas para escenarios de colaboración en tiempo real. Trabajar en un IDE en la nube proporciona un entorno unificado de desarrollo y pruebas para usted y su equipo, al tiempo que minimiza las incompatibilidades de plataforma. Debido a que están basados nativamente en tecnologías en la nube, pueden hacer uso del clúster para realizar tareas, lo que puede superar en gran medida la potencia y la confiabilidad de una única computadora de desarrollo.
Eclipse Theia es un IDE en la nube extensible que se ejecuta en un servidor remoto y es accesible desde un navegador web. Visualmente, está diseñado para verse y comportarse de manera similar a Microsoft Visual Studio Code, lo que significa que soporta muchos lenguajes de programación, tiene un diseño flexible y cuenta con un terminal integrado. Lo que diferencia a Eclipse Theia de otro software de IDE en la nube es su extensibilidad; puede ser modificado utilizando extensiones personalizadas, que le permiten crear un IDE en la nube adecuado a sus necesidades.
En este tutorial, configurarás la versión predeterminada de la plataforma de IDE en la nube Eclipse Theia en tu clúster de Kubernetes de DigitalOcean y la expondrás en tu dominio, asegurada con certificados Let’s Encrypt y requiriendo que el visitante se autentique. Al final, tendrás Eclipse Theia ejecutándose en tu clúster de Kubernetes disponible a través de HTTPS y requiriendo que el visitante inicie sesión.
Prerrequisitos
- 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. - El administrador de paquetes Helm 3 instalado en tu máquina local. Completa el Paso 1 del tutorial Cómo instalar software en clústeres de Kubernetes con el administrador de paquetes Helm 3.
- El Controlador de Ingreso Nginx instalado en tu clúster usando Helm para poder utilizar ExternalDNS con Recursos de Ingreso. Para hacer esto, sigue Cómo configurar un Ingreso Nginx en Kubernetes de DigitalOcean usando 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.
Paso 1: Instalar y Exponer Eclipse Theia
Para comenzar, instalarás Eclipse Theia en tu clúster de Kubernetes de DigitalOcean. Luego, lo expondrás en tu dominio deseado usando un Ingress de Nginx.
Dado que creaste dos despliegues de ejemplo y un recurso como parte de los requisitos previos, puedes eliminarlos libremente ejecutando los siguientes comandos:
Para este tutorial, almacenarás la configuración de despliegue en tu máquina local, en un archivo llamado eclipse-theia.yaml
. Créalo usando el siguiente comando:
Agrega las siguientes líneas al archivo:
Esta configuración define un Namespace, un Despliegue, un Servicio y un Ingress. El Namespace se llama theia
y contendrá todos los objetos de Kubernetes relacionados con Eclipse Theia, separados del resto del clúster. El Despliegue consiste en una instancia de la imagen Docker de Theia con el puerto 3000
expuesto en el contenedor. El Servicio busca el Despliegue y remapea el puerto del contenedor al puerto HTTP habitual, 80
, permitiendo el acceso dentro del clúster a Eclipse Theia.
El Ingress contiene una regla para servir el Servicio en el puerto 80
externamente en tu dominio deseado. En sus anotaciones, especificas que se debe utilizar el Controlador de Ingress de Nginx para el procesamiento de solicitudes. Recuerda reemplazar theia.tu_dominio
con tu dominio deseado al que has apuntado al Balanceador de Carga de tu clúster, luego guarda y cierra el archivo.
Guarda y sale del archivo.
Luego, crea la configuración en Kubernetes ejecutando el siguiente comando:
El resultado se verá similar a esto:
Outputnamespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created
Puede ver la creación del pod Eclipse Theia ejecutando:
La salida se verá así:
OutputNAME READY STATUS RESTARTS AGE
theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s
Después de algún tiempo, el estado cambiará a RUNNING
, lo que significa que ha instalado correctamente Eclipse Theia en su clúster.
Navegue a su dominio en su navegador. Verá la interfaz gráfica de usuario predeterminada del editor Eclipse Theia:
Ha implementado Eclipse Theia en su clúster de Kubernetes de DigitalOcean y lo ha expuesto en su dominio deseado con un Ingress. A continuación, asegurará el acceso a su implementación de Eclipse Theia habilitando la autenticación de inicio de sesión.
Paso 2 — Habilitar la Autenticación de Inicio de Sesión Para Su Dominio
En este paso, habilitará la autenticación de nombre de usuario y contraseña para su implementación de Eclipse Theia. Logrará esto primero curando una lista de combinaciones de inicio de sesión válidas usando la utilidad htpasswd
. Luego, creará un secreto de Kubernetes que contenga esa lista y configurará el Ingress para autenticar a los visitantes según ella. Al final, su dominio solo será accesible cuando el visitante introduzca una combinación válida de nombre de usuario y contraseña. Esto evitará que los invitados y otros visitantes no deseados accedan a Eclipse Theia.
La utilidad htpasswd
proviene del servidor web Apache y se utiliza para crear archivos que almacenan listas de combinaciones de inicio de sesión. El formato de los archivos htpasswd
es una combinación nombre_de_usuario:contraseña_hasheada
por línea, que es el formato que el controlador de ingreso Nginx espera que cumpla la lista.
Primero, actualice la caché del administrador de paquetes:
Luego, instale htpasswd
en su sistema ejecutando el siguiente comando:
Almacenará la lista en un archivo llamado auth
. Créelo ejecutando:
Este archivo debe llamarse auth
porque el controlador de ingreso Nginx espera que el secreto contenga una clave llamada data.auth
. Si falta, el controlador devolverá un estado HTTP 503 Servicio no disponible
.
Agregue una combinación de nombre de usuario y contraseña a auth
ejecutando el siguiente comando:
Recuerde reemplazar nombre_de_usuario
con el nombre de usuario deseado. Se le pedirá una contraseña complementaria y la combinación se agregará al archivo auth
. Puede repetir este comando para tantos usuarios como desee agregar.
Nota: Si el sistema en el que está trabajando no tiene instalado htpasswd
, puede utilizar una versión en Dockerizada en su lugar.
Deberá tener Docker instalado en su máquina. Para obtener instrucciones sobre cómo hacerlo, visite la documentación oficial.
Ejecute el siguiente comando para ejecutar una versión en Dockerizada:
Recuerda reemplazar <nombre_de_usuario>
con el nombre de usuario que desees usar. Se te pedirá una contraseña. La combinación de inicio de sesión con hash se escribirá en la consola, y deberás agregarla manualmente al final del archivo auth
. Repite este proceso para tantos inicios de sesión como desees añadir.
Cuando hayas terminado, crea un nuevo secreto en Kubernetes con el contenido del archivo ejecutando el siguiente comando:
Puedes ver el secreto con:
La salida se verá así:
A continuación, deberás editar el Ingress para hacer que utilice el secreto. Abre la configuración de despliegue para editar:
Agrega las líneas resaltadas a tu archivo:
Primero, en la anotación auth-type
, especificas que el tipo de autenticación es basic
. Esto significa que Nginx requerirá que el usuario escriba un nombre de usuario y contraseña. Luego, en auth-secret
, especificas que el secreto que contiene la lista de combinaciones válidas es theia-basic-auth
, que acabas de crear. La anotación restante auth-realm
especifica un mensaje que se mostrará al usuario como una explicación de por qué se requiere autenticación. Puedes cambiar el mensaje contenido en este campo a tu gusto.
Guarda y cierra el archivo.
Para propagar los cambios a tu clúster, ejecuta el siguiente comando:
Verás la salida:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Dirígete a tu dominio en tu navegador, donde ahora se te pedirá que inicies sesión.
Has habilitado la autenticación básica de inicio de sesión en tu Ingress configurándolo para usar el secreto que contiene las combinaciones de nombre de usuario y contraseña con hash. En el siguiente paso, asegurarás aún más el acceso agregando certificados TLS, para que el tráfico entre tú y tu implementación de Eclipse Theia permanezca cifrado.
Paso 3 — Aplicación de Certificados HTTPS Let’s Encrypt
A continuación, asegurarás tu instalación de Eclipse Theia aplicando certificados Let’s Encrypt a tu Ingress, los cuales Cert-Manager provisionará automáticamente. Después de completar este paso, tu instalación de Eclipse Theia será accesible a través de HTTPS.
Abre eclipse-theia.yaml
para editarlo:
Agrega las líneas resaltadas a tu archivo, asegurándote de reemplazar el dominio marcador de posición con el tuyo:
Primero, especificas el ClusterIssuer letsencrypt-prod
que creaste como parte de los requisitos previos como el emisor que se utilizará para provisionar certificados para este Ingress. Luego, en la sección tls
, especificas el dominio exacto que debe estar asegurado, así como un nombre para un secreto que contendrá esos certificados.
Guarda y sale del archivo.
Aplica los cambios a tu clúster ejecutando el siguiente comando:
El resultado será similar a:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Tomará unos minutos para que los certificados sean provisionados y aplicados completamente. Puedes seguir el progreso observando la salida del siguiente comando:
Una vez que termine, el final de la salida se verá similar a esto:
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
Actualiza tu dominio en tu navegador. Verás un candado verde mostrado en el lado izquierdo de la barra de direcciones, lo que significa que la conexión es segura.
Has configurado el Ingress para usar certificados Let’s Encrypt, haciendo así que tu despliegue de Eclipse Theia sea más seguro. Ahora puedes revisar la interfaz de usuario predeterminada de Eclipse Theia.
Paso 4 — Usando la Interfaz de Usuario de Eclipse Theia
En esta sección, explorarás algunas de las características de la interfaz de usuario de Eclipse Theia.
En el lado izquierdo del IDE, hay una fila vertical de cuatro botones que abren las características más comúnmente usadas en un panel lateral.
Esta barra es personalizable, por lo que puedes mover estas vistas a un orden diferente o quitarlas de la barra. Por defecto, la primera vista abre el panel del Explorador que proporciona una navegación similar a un árbol de la estructura del proyecto. Puedes gestionar tus carpetas y archivos aquí, creándolos, eliminándolos, moviéndolos y cambiándoles el nombre según sea necesario.
Después de crear un nuevo archivo a través del menú Archivo, verás un archivo vacío abierto en una nueva pestaña. Una vez guardado, puedes ver el nombre del archivo en el panel lateral del Explorador. Para crear carpetas, haz clic derecho en la barra lateral del Explorador y selecciona Nueva Carpeta. También puedes expandir una carpeta haciendo clic en su nombre, así como arrastrar y soltar archivos y carpetas a partes superiores de la jerarquía para moverlos a una nueva ubicación.
La siguiente opción proporciona acceso a la funcionalidad de búsqueda y reemplazo. A continuación, la siguiente opción proporciona una vista de los sistemas de control de origen que puedas estar utilizando, como Git.
La siguiente vista es la opción del depurador, que proporciona todas las acciones comunes para depurar en el panel. Puedes guardar las configuraciones de depuración en el archivo launch.json
.
La opción final te permite ver e instalar extensiones:
La parte central de la interfaz de usuario es tu editor, que puedes separar por pestañas para la edición de tu código. Puedes cambiar tu vista de edición a un sistema de cuadrícula o a archivos lado a lado. Como todos los IDE modernos, Eclipse Theia admite resaltado de sintaxis para tu código.
Puedes acceder a un terminal escribiendo CTRL+SHIFT+`
, o haciendo clic en Terminal en el menú superior y seleccionando Nuevo Terminal. El terminal se abrirá en un panel inferior y su directorio de trabajo se establecerá en el espacio de trabajo del proyecto, que contiene los archivos y carpetas mostrados en el panel lateral del Explorador.
Si deseas destruir la implementación de Eclipse Theia en tu clúster, ejecuta el siguiente comando:
Has explorado una descripción general de alto nivel de la interfaz de Eclipse Theia y revisado algunas de las características más comúnmente utilizadas.
Conclusión
Ahora tienes Eclipse Theia, un IDE en la nube versátil, instalado en tu clúster de Kubernetes de DigitalOcean. Lo has asegurado con un certificado TLS gratuito de Let’s Encrypt y configurado la instancia para requerir un inicio de sesión por parte del visitante. Puedes trabajar en tu código fuente y documentos con él de manera individual o colaborar con tu equipo. También puedes intentar construir tu propia versión de Eclipse Theia si necesitas funcionalidades adicionales. Para obtener más información sobre cómo hacerlo, visita la documentación de Theia.