Azure Dev Spaces: el entorno colaborativo para desarrollar en Kubernetes

En cualquier desarrollo, lo normal es que no trabajes solo. De la misma manera, la integraci√≥n de las diferentes partes suele ser… delicada ūüôā Si adem√°s le sumas que cada desarrollador necesita montarse su propio entorno de Kubernetes, esto puede llegar a ser todo un reto. Por todo ello, hoy te quiero hablar de Azure Dev Spaces, una funcionalidad gratuita dentro de tu servicio de AKS, que ayuda a los desarrolladores a trabajar con Kubernetes en un cl√ļster compartido. De hecho, se puede depurar incluso sobre este entorno con Visual Studio Code y Visual Studio, por lo que es m√°s sencillo reproducir escenarios que s√≥lo ocurren en Kubernetes. Esta funcionalidad todav√≠a est√° en preview.

Configurar Azure Dev Spaces

Si todav√≠a no tienes tu cl√ļster en Azure Kubernetes Service, puedes generar uno r√°pidamente siguiendo los pasos de este art√≠culo. Ahora, para habilitar Azure Dev Spaces basta con lanzar el siguiente script:

#Variables
RESOURCE_GROUP="AKS-Demo"
AKS_NAME="gisaks"

#Enable Azure Dev Spaces
az aks use-dev-spaces -g ${RESOURCE_GROUP} -n ${AKS_NAME}

Al lanzar el comando az aks use-dev-spaces tendr√°s que aceptar los t√©rminos de uso, autorizar la descarga de un paquete, que nos habilitar√° el comando azds, se crear√° un controlador para Azure Dev Spaces para nuestro cl√ļster, en el mismo grupo de recursos donde est√° ubicado este, y, por √ļltimo, nos preguntar√° qu√© espacio de desarrollo queremos usar. La primera vez solo tendremos uno, por lo que seleccionamos ese.

az aks use-dev-spaces -g ${RESOURCE_GROUP} -n ${AKS_NAME}

Probando Azure Dev Spaces

Ahora vamos a probar nuestro espacio de desarrollo en Kubernetes con una aplicación muy simple. De hecho, voy a reutilizar la misma que usé cuando empecé con Docker. En una carpeta, crea un archivo llamado server.js con el siguiente contenido:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.sendFile(__dirname + '/index.html');
});

app.listen(80, function () {
  console.log('Example app listening on port 80!');
});

Ahora crea otro archivo, index.html, con el contenido a mostrar en la web:

<!DOCTYPE html>
<html>

<head>
    <title>Hello World from Node.js</title>
</head>

<body>
    <h1>Hello World from a container!</h1>
</body>

</html>

Ejecuta npm init para iniciar el proyecto de Node.js e instala el módulo express:

npm init -y
npm install express

Ahora necesitas preparar tu aplicación para poder subirla a tu espacio. Lanza el siguiente comando para generar los archivos necesarios:

azds prep --public

Lo que hace es generar de manera autom√°tica los archivos DockerFile y .dockerignore, el archivo azds.yaml y charts para el gestor de paquetes Helm.

app despueŐĀs de azds prep –public

Ahora ya tienes tu aplicaci√≥n lista para subirse a Azure Dev Spaces. El √ļltimo comando que necesitas lanzar es el siguiente:

azds up

Con ello se subirá tu aplicación y te devolverá una URL a través de la cual podrás acceder a tu aplicación.

Subir la app a Azure Dev Spaces con azds up

Si quieres actualizarla basta con hacer los cambios que necesites y volver a ejecutar azds up de nuevo.

Para listar todas las aplicaciones que se est√°n ejecutando en Azure Dev Spaces puedes usar el comando azds list-up.

Comando azds list-up para mostrar todas las apps que se est√°n ejecutando

Nota: puedes comprobar que estas aplicaciones son pods en Kubernetes a través del comando kubectl get pods.

Si quisieras crear otro espacio diferente puedes usar el comando azds space select y escribir el nombre que quieres para dicho espacio.

azds space select para crear un nuevo espacio

Para listar todos los que tenemos disponibles puedes usar azds space list.

azds space list para listar los espacios

Nota: los espacios son en realidad namespaces dentro de Kubernetes. Compruébalo a través del comando kubectl get namespaces.

¬°Saludos!