Eclipse Che

Artículo

Eclipse Che

Contenedores para la creación de entornos de desarrollo virtuales

Tras la expansión de los contenedores como tecnología de despliegue cada vez es más habitual encontrar infraestructuras de ejecución de aplicaciones basadas en ella y en orquestadores como kubernetes.

Los contenedores permiten la ejecución de aplicaciones empresariales pero también pueden ser utilizados para ejecutar herramientas de apoyo a la construcción y mantenimiento de las mismas. Sistema de monitorización como prometheus, agregadores de logs como fluentd, api managers como apigee son ejemplos de aplicaciones que vienen a complementar este tipo de arquitecturas.

Desde el punto de vista del desarrollador cada vez es más habitual la interacción con herramientas de desarrollo basadas en entornos web como por ejemplo las diferentes consolas de administración de los proveedores cloud que permiten el desarrollo, test y despliegue de diferentes aplicaciones y tecnologías.

En este ámbito del desarrollo ha aparecido un sistema llamado Eclipse Che que permite la evolución de los entornos de desarrollo tradicionales, basados en IDEs (Integrated Development Environments) que los desarrolladores ejecutan localmente en su PC, hacia entornos totalmente virtualizados y accesibles mediante web.

Eclipse Che es un producto opensource desarrollado dentro de la fundación eclipse.org y que tiene como contribuidores al proyecto empresas como Red Hat, SAP, Docker o Bitnami entre otros muchos. Este producto aprovecha las capacidades de Kubernetes para implementar un sistema de desarrollo integrado, personalizable y extensible.

Mediante la creación de contenedores docker los desarrolladores pueden crear entornos de trabajo integrados con todos los elementos necesarios para el desempeño de sus labores. En la construcción de aplicaciones lo desarrolladores tienen la necesidad de disponer de ciertos productos con los que integrarse o sobre los que se tiene que ejecutar su aplicación, por ejemplo, un desarrollador PHP necesitará poder ejecutar su aplicación sobre un servidor web Apache y muy probablemente necesitará interaccionar con una base de datos. Adicionalmente, los equipos de desarrollo suelen utilizar extensión del propio IDE para automatizar o realizar ciertas tareas como la compilación de su proyecto, el testing, análisis de código o distintas ayudas a la propia codificación que permiten eficientar su trabajo.

Toda esta infraestructura que un desarrollador necesita para poder construir y poder probar su aplicación requiere que se invierta tiempo en la instalación, configuración y puesta en marcha lo que en ocasiones puede penalizar los arranques de proyecto. También es necesario tener en cuenta que un desarrollador puede estar involucrado en más de un proyecto que puede requerir de infraestructuras de desarrollo distintas.

Estas necesidades producen que conforme va aumentando la variedad tecnológica a la que los equipos de desarrollo han de enfrentarse cada vez es más complicado disponer de estas infraestructuras de desarrollo ya que requiere invertir un tiempo y recursos técnicos nada despreciables.

Eclipse che puede ser una solución a esta problemática ya que con unos sencillos pasos un desarrollador puede obtener un entorno completamente configurado y disponible para comenzar sus labores de desarrollo. Por otro lado, al tratarse de un entorno web su espacio de trabajo puede estar accesible desde cualquier localización.

A continuación, se detallan los pasos seguidos en una primera aproximación a este producto que sin duda cambiará la forma de trabajo de muchos equipos de desarrollo. Para realizar esta primera prueba se ha realizado un despliegue en una instancia de minikube. Para realizar un despliegue productivo de esta herramienta se recomienda la utilización de instancias de kubernetes ya sea en instalaciones on-premise o mediante los servicios gestionados que ofrecen los diferentes proveedores de cloud.

Existe diferentes procesos de instalación documentados para las principales implementaciones de Kubernetes: AWS, Azure AKS, Google Kubernetes Engine y Openshift. El equipo de Eclipse Che ha puesto a disposición de la comunidad la herramienta chectl una aplicación de línea de comandos que facilita en gran medida la instalación, arranque, parada y actualización de Eclipse Che. Se puede encontrar información adicional en su web oficial: https://www.eclipse.org/che/docs/che-7/che-quick-starts/

Chectl permite la utilización de helm como herramienta de despliegue automatizado. Helm es proyecto opensource que permite el despliegue de aplicaciones sobre Kubernetes de manera automatizada. Actualmente puede considerarse como uno de los principales gestores de paquetes en el ámbito de Kubernetes.

El primer paso para proceder a la instalación de Eclipse Che es la instalación de helm en nuestro clúster basado en minikube. Para ello, es necesario crear un service account y dotarla de los permisos suficientes para que pueda operar correctamente.

kubectl create serviceaccount -n kube-system tiller

kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

Una vez se dispone de esta service account podemos realizar la instalación automatizada de helm. Para ello, es necesario disponer de los binarios de helm y mediante las siguientes instrucciones se procederá a su instalación y actualización.

helm init --service-account tiller

helm update

Una vez completados estos pasos podemos verificar la correcta instalación de los pods de tiller que se pueden encontrar en el namespace kube-system de nuestro minikube.

Eclipse Che 1

Una vez completado la instalación de esta dependencia en nuestro clúster se puede continuar con la instalación de Eclipse Che mediante la herramienta Chectl. Esta herramienta permite diferentes configuraciones, para esta prueba se ha seleccionado el siguiente comando de instalación:

chectl server:start --installer=helm --platform=minikube --multiuser --self-signed-cert
 

Eclipse Che 2

Este comando inicia el proceso de instalación en minikube procediendo con la creación y despliegue de todos los objetos necesarios. Al tratarse de una instalación local se debe prestar especial atención a este mensaje que se muestra en el proceso de instalación.

[MANUAL ACTION REQUIRED] Please add local Eclipse Che CA certificate into your browser

Este mensaje indica que se debe realizar la instalación del certificado autogenerado que representar la Autoridad de Certificación sobre la cual se ha emitido el certificado SSL. Este paso consiste en instalar el certificado indicado como autoridad de certificación y reiniciar el navegador. El proceso de instalación puede diferir dependiendo del navegador y el sistema operativo.

Una vez completado este paso la url de Eclipse Che está disponible para su uso, en esta prueba la url generada es: https://che-che.192.168.0.26.nip.io

Cuando se accede se mostrará la pantalla de login que nos permitirá acceder al sistema. Por defecto, se genera un usuario admin con contraseña admin y se obliga a cambiar la password en el primer acceso.

Una vez completado el proceso de autenticación se accede a la herramienta que muestra una serie de opciones para crear entornos predefinidos de tecnologías tan variadas como Angular, Java, ,Net, C++ o Rust.

Eclipse Che 3

Para esta prueba se ha seleccionado el entorno de PHP que genera un entorno completo de desarrollo basado en la misma tecnología y plugins que Visual Studio Code

Eclipse Che 4

Como se puede apreciar en la siguiente imagen tras completar el proceso de arranque se dispone de un proyecto preconfigurado con la template de proyecto basada en un proyecto de Github y una accesos directos a la una base de datos MySQL y a un servidor Apache donde la aplicación se ejecuta disponiendo así de un entorno integrado para el desarrollador.

Eclipse Che 5

Mediante los accesos facilitados de la base de datos MySQL se puede acceder a un terminal que permite realizar consultas directas sobre la base de datos instanciada como contenedor. Del mismo modo se arranca un contenedor con una instancia de apache donde se ejecuta la aplicación y se genera una url vinculada al este espacio de trabajo que permite acceder a la aplicación de ejemplo.

Eclipse Che 6

Eclipse Che es un producto que está en continua evolución y con cada versión liberada se incluyen nuevas funcionalidades. La capacidad de esta herramienta para crear entornos de desarrollo personalizados y extensibles la hace una potente herramienta de trabajo para los equipos de desarrollo y simplifica enormemente el arranque de un proyecto y, sobre todo, la inclusión de nuevos miembros a un equipo de desarrollo ya que en cuestión de minutos pueden disponer del entorno necesario para comenzar los trabajos.

Adicionalmente a los stacks tecnológicos ofrecidos de ejemplo se puede definir un fichero de configuración para crear entornos personalizados que permiten incluir plugins al entorno de desarrollo, crear tareas de automatización e incluir contenedores con imágenes que implementan los productos que el desarrollador necesita para poner en marcha una copia de la aplicación a desarrollar.

El equipo de Eclipse Che ofrece un entorno SaaS de acceso gratuito para poder testear y utilizar este entorno de desarrollo. Se puede acceder mediante esta url: https://www.eclipse.org/che/getting-started/cloud/.

Conoce a nuestro experto

David Figueroa Alejandro

Manager Especialista en DXD

David inició su carrera profesional en 2004 y durante este tiempo ha participado en distintos proyecto en gran variedad de tecnologías (Java, .Net, SAP, Cloud, etc.). Actualmente es arquitecto de soluciones tanto en ecosistemas Java como en entorno cloud. En particular, dispone de la certificación de arquitecto profesional en Google Cloud Platform y dispone de conocimientos en otras cloud.