Cómo configurar la plataforma Eclipse Theia Cloud IDE en DigitalOcean Kubernetes

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación y exposición de Eclipse Theia
  • Paso 2: Habilitar la autenticación de inicio de sesión para su dominio
  • Paso 3: Aplicación de certificados HTTPS de Let’s Encrypt
  • Paso 4: Uso de la interfaz Eclipse Theia
  • Conclusión
  • El autor seleccionó el Fondo de Código Libre y Abierto para recibir una donación como parte del programa Write for DOnations .

    Introducción

    A medida que las herramientas de desarrollo se trasladan a la nube, la creación y adopción de plataformas IDE (Integrated Development Environment) en la nube está creciendo. Los IDE en la nube son accesibles desde cualquier tipo de dispositivo moderno 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 de desarrollo y prueba unificado para usted y su equipo, al tiempo que minimiza las incompatibilidades de la plataforma. Debido a que se basan de forma nativa en tecnologías de la nube, pueden hacer uso del clúster para realizar tareas que pueden superar en gran medida la potencia y la confiabilidad de una sola computadora de desarrollo.

    Eclipse Theia es un IDE en la nube extensible que se ejecuta en un servidor remoto y al que se puede acceder desde un navegador web. Visualmente, está diseñado para verse y comportarse de manera similar a Microsoft Visual Studio Code , lo que significa que admite muchos lenguajes de programación, tiene un diseño flexible y tiene una terminal integrada. Lo que separa a Eclipse Theia de otro software IDE en la nube es su extensibilidad; se puede modificar utilizando extensiones personalizadas , que le permiten crear un IDE en la nube que se adapte a sus necesidades.

    En este tutorial, configurará la versión predeterminada de la plataforma de IDE en la nube Eclipse Theia en su clúster Kubernetes de DigitalOcean y la expondrá en su dominio, protegida con certificados Let’s Encrypt y solicitando que el visitante se autentique. Al final, tendrá Eclipse Theia ejecutándose en su clúster Kubernetes disponible a través de HTTPS y solicitando que el visitante inicie sesión.

    Prerrequisitos

    • Un clúster de Kubernetes de DigitalOcean con su conexión configurada como kubectlpredeterminada. Las instrucciones sobre cómo configurarlo kubectlse muestran en el paso Conectarse a su clúster cuando crea su clúster. Para crear un clúster de Kubernetes en DigitalOcean, lea la Guía de inicio rápido de Kubernetes .
    • El administrador de paquetes Helm 3 instalado en su máquina local. Complete 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 de Nginx instalado en su clúster mediante Helm para usar ExternalDNS con recursos de ingreso. Para ello, siga Cómo configurar un ingreso de Nginx en DigitalOcean Kubernetes mediante Helm .
    • Un nombre de dominio completamente registrado. Este tutorial se utilizará theia.your_domainen todo momento. Puede comprar un nombre de dominio en Namecheap , obtener uno gratis en Freenom o utilizar el registrador de dominios que prefiera.

    Paso 1: Instalación y exposición de Eclipse Theia

    Para comenzar, deberá instalar Eclipse Theia en su clúster Kubernetes de DigitalOcean. Luego, lo expondrá en el dominio que desee mediante un Ingress de Nginx.

    Dado que creó dos implementaciones de ejemplo y un recurso como parte de los requisitos previos, puede eliminarlos libremente ejecutando los siguientes comandos:

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

    Para este tutorial, almacenará la configuración de implementación en su máquina local, en un archivo llamado eclipse-theia.yaml. Créelo con el siguiente comando:

    1. nano eclipse-theia.yaml

    Añade las siguientes líneas al archivo:

    eclipse-theia.yaml

    apiVersion: v1kind: Namespacemetadata:  name: theia---apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: theia-next  namespace: theiaspec:  ingressClassName: nginx  rules:  - host: theia.your_domain    http:      paths:      - path: /        pathType: Prefix        backend:          service:            name: theia-next            port:              number: 80---apiVersion: v1kind: Servicemetadata: name: theia-next namespace: theiaspec: ports: - port: 80   targetPort: 3000 selector:   app: theia-next---apiVersion: apps/v1kind: Deploymentmetadata:  labels:    app: theia-next  name: theia-next  namespace: theiaspec:  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

    Esta configuración define un espacio de nombres, una implementación, un servicio y un ingreso. Se llama al espacio de nombres theiay contendrá todos los objetos de Kubernetes relacionados con Eclipse Theia, separados del resto del clúster. La implementación consta de una instancia de la imagen Docker de Theia con el puerto 3000expuesto en el contenedor. El servicio busca la implementación y reasigna el puerto del contenedor al puerto HTTP habitual, 80, lo que permite el acceso dentro del clúster a Eclipse Theia.

    El Ingress contiene una regla para brindar el servicio en el puerto 80externo en el dominio deseado. En sus anotaciones, especifica que se debe utilizar el controlador de Ingress de Nginx para procesar solicitudes. Recuerda reemplazar theia.your_domaincon el dominio deseado que apuntaste al balanceador de carga de tu clúster, luego guarda y cierra el archivo.

    Guardar y salir del archivo.

    Luego, crea la configuración en Kubernetes ejecutando el siguiente comando:

    1. kubectl apply -f eclipse-theia.yaml

    El resultado será similar a esto:

    Outputnamespace/theia createdingress.networking.k8s.io/theia-next createdservice/theia-next createddeployment.apps/theia-next created

    Puedes ver la creación del pod Eclipse Theia ejecutando:

    1. kubectl get pods -w -n theia

    El resultado se verá así:

    OutputNAME                          READY   STATUS    RESTARTS   AGEtheia-next-6f6b98dd4f-qknhb   1/1     Running   0          2m30s

    Después de un tiempo, el estado cambiará a RUNNING, lo que significa que ha instalado correctamente Eclipse Theia en su clúster.

    Accede a tu dominio en tu navegador. Verás la interfaz gráfica de usuario predeterminada del editor Eclipse Theia:

    Implementó Eclipse Theia en su clúster Kubernetes de DigitalOcean y lo expuso en el dominio deseado con un Ingress. A continuación, protegerá 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 con nombre de usuario y contraseña para su implementación de Eclipse Theia. Para lograrlo, primero deberá crear una lista de combinaciones de inicio de sesión válidas mediante la htpasswdutilidad. Luego, creará un secreto de Kubernetes que contenga esa lista y configurará Ingress para autenticar a los visitantes de acuerdo con ella. Al final, su dominio solo será accesible cuando el visitante ingrese 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 htpasswdutilidad proviene del servidor web Apache y se utiliza para crear archivos que almacenan listas de combinaciones de inicio de sesión. El formato de htpasswdlos archivos es una username:hashed_passwordcombinación por línea, que es el formato al que el controlador de ingreso de Nginx espera que se ajuste la lista.

    Primero, actualice el caché del administrador de paquetes:

    1. sudo apt update

    Luego, instálelo htpasswden su sistema ejecutando el siguiente comando:

    1. sudo apt install apache2-utils -y

    Almacenarás la lista en un archivo llamado auth. Créalo ejecutando:

    1. touch auth

    Este archivo debe tener un nombre authporque el controlador de ingreso de Nginx espera que el secreto contenga una clave llamada data.auth. Si no está, el controlador devolverá Service Unavailableel estado HTTP 503.

    Agregue una combinación de nombre de usuario y contraseña authejecutando el siguiente comando:

    1. htpasswd auth username

    Recuerda reemplazar usernameel nombre de usuario que desees. Se te solicitará una contraseña y la combinación se agregará al autharchivo. Puedes repetir este comando para todos los usuarios que desees agregar.

    Nota: Si el sistema en el que estás trabajando no lo tiene htpasswdinstalado, puedes usar una versión Dockerizada en su lugar.

    Necesitará 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 dockerizada:

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

    Recuerda reemplazar usernamecon el nombre de usuario que deseas usar. Se te solicitará una contraseña. La combinación de inicio de sesión cifrada se escribirá en la consola y tendrás que agregarla manualmente al final del autharchivo. Repite este proceso para todos los inicios de sesión que desees agregar.

    Cuando haya terminado, cree un nuevo secreto en Kubernetes con el contenido del archivo ejecutando el siguiente comando:

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

    Puedes ver el secreto con:

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

    El resultado se verá así:

    OutputapiVersion: v1data:  auth: ...kind: Secretmetadata:  creationTimestamp: "2021-12-31T17:16:29Z"  name: theia-basic-auth  namespace: theia  resourceVersion: "32437"  uid: 47461e23-e281-411b-acfd-cea82fcde41btype: Opaque

    A continuación, deberá editar el Ingress para que use el secreto. Abra la configuración de implementación para editarla:

    1. nano eclipse-theia.yaml

    Añade las líneas resaltadas a tu archivo:

    eclipse-theia.yaml

    apiVersion: v1kind: Namespacemetadata:  name: theia---apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  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...

    En primer lugar, en la auth-typeanotación, se especifica que el tipo de autenticación es basic. Esto significa que Nginx requerirá que el usuario escriba un nombre de usuario y una contraseña. Luego, en auth-secret, se especifica que el secreto que contiene la lista de combinaciones válidas es theia-basic-auth, que acaba de crear. La auth-realmanotación restante especifica un mensaje que se mostrará al usuario como explicación de por qué se requiere la autenticación. Puede cambiar el mensaje contenido en este campo a su gusto.

    Guarde y cierre el archivo.

    Para propagar los cambios a su clúster, ejecute el siguiente comando:

    1. kubectl apply -f eclipse-theia.yaml

    Verás el resultado:

    Outputnamespace/theia unchangedingress.networking.k8s.io/theia-next configuredservice/theia-next unchangeddeployment.apps/theia-next unchanged

    Navegue a su dominio en su navegador, donde ahora se le pedirá que inicie sesión.

    Habilitó la autenticación de inicio de sesión básica en su Ingress al configurarlo para que use el secreto que contiene las combinaciones de nombre de usuario y contraseña en formato hash. En el siguiente paso, protegerá aún más el acceso agregando certificados TLS, de modo que el tráfico entre usted y su implementación de Eclipse Theia permanezca cifrado.

    Paso 3: Aplicación de certificados HTTPS de Let’s Encrypt

    A continuación, protegerá su instalación de Eclipse Theia aplicando certificados Let’s Encrypt a su Ingress, que Cert-Manager aprovisionará automáticamente. Después de completar este paso, su instalación de Eclipse Theia será accesible a través de HTTPS.

    Abierto eclipse-theia.yamlpara edición:

    1. nano eclipse-theia.yaml

    Agregue las líneas resaltadas a su archivo, asegurándose de reemplazar el dominio del marcador de posición con el suyo:

    eclipse-theia.yaml

    apiVersion: v1kind: Namespacemetadata:  name: theia---apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  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-prodspec:  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...

    En primer lugar, debe especificar el letsencrypt-prodClusterIssuer que creó como parte de los requisitos previos como el emisor que se utilizará para proporcionar certificados para este Ingress. Luego, en la tlssección, debe especificar el dominio exacto que se debe proteger, así como un nombre para un secreto que contendrá esos certificados.

    Guardar y salir del archivo.

    Aplique los cambios a su clúster ejecutando el siguiente comando:

    1. kubectl apply -f eclipse-theia.yaml

    El resultado se verá así:

    Outputnamespace/theia unchangedingress.networking.k8s.io/theia-next configuredservice/theia-next unchangeddeployment.apps/theia-next unchanged

    Los certificados tardarán unos minutos en aprovisionarse y aplicarse por completo. Puede seguir el progreso observando el resultado del siguiente comando:

    1. kubectl describe certificate theia-prod -n theia

    Cuando termine, el resultado final 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

    Actualice su dominio en su navegador. Verá un candado verde en el extremo izquierdo de la barra de direcciones, lo que significa que la conexión es segura.

    Ha configurado Ingress para utilizar certificados Let’s Encrypt, lo que hace que su implementación de Eclipse Theia sea más segura. Ahora puede revisar la interfaz de usuario predeterminada de Eclipse Theia.

    Paso 4: Uso de la interfaz Eclipse Theia

    En esta sección, explorará algunas de las características de la interfaz de Eclipse Theia.

    En el lado izquierdo del IDE, hay una fila vertical de cuatro botones que abren las funciones más utilizadas en un panel lateral.

    Esta barra se puede personalizar para que puedas mover estas vistas a un orden diferente o quitarlas de la barra. De forma predeterminada, la primera vista abre el panel del Explorador, que ofrece una navegación en forma de árbol por la estructura del proyecto. Aquí puedes administrar tus carpetas y archivos: crearlos, eliminarlos, moverlos y cambiarles 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 haz clic en Nueva carpeta . Puedes expandir una carpeta haciendo clic en su nombre, así como arrastrando y soltando archivos y carpetas en las partes superiores de la jerarquía para moverlos a una nueva ubicación.

    La siguiente opción proporciona acceso a la función de búsqueda y reemplazo. A continuación, la siguiente proporciona una vista de los sistemas de control de código fuente que puede estar utilizando, como Git .

    La siguiente vista es la opción de depuración, que ofrece todas las acciones habituales para la depuración en el panel. Puede guardar las configuraciones de depuración en el launch.jsonarchivo.

    La última opción le permite ver e instalar extensiones:

    La parte central de la interfaz gráfica de usuario es el editor, que se puede separar mediante pestañas para editar el código. Puede cambiar la vista de edición a un sistema de cuadrícula o a archivos uno al lado del otro. Como todos los IDE modernos, Eclipse Theia admite el resaltado de sintaxis para el código.

    Puede acceder a una terminal escribiendo CTRL+SHIFT+` , o haciendo clic en Terminal en el menú superior y seleccionando Nueva terminal . La 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 que se muestran en el panel lateral del Explorador.

    Si desea destruir la implementación de Eclipse Theia en su clúster, ejecute el siguiente comando:

    1. kubectl delete -f eclipse-theia.yaml

    Ha explorado una descripción general de alto nivel de la interfaz de Eclipse Theia y revisado algunas de las características más utilizadas.

    Conclusión

    Ahora tienes Eclipse Theia, un IDE de nube versátil, instalado en tu clúster Kubernetes de DigitalOcean. Lo has protegido con un certificado TLS Let’s Encrypt gratuito y has configurado la instancia para que requiera un inicio de sesión del visitante. Puedes trabajar en tu código fuente y documentos con él de forma individual o colaborar con tu equipo. También puedes intentar crear tu propia versión de Eclipse Theia si necesitas funciones adicionales. Para obtener más información sobre cómo hacerlo, visita la documentación de Theia .

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion