Digital Developer Conference: Hybrid Cloud 2021 | Capacitaciones gratuitas por expertos y partners | 21 de Setiembre ¡Inscríbete Ahora!

Automatiza tus despliegues sobre un clúster utilizando Toolchain

Introducción

En este tutorial aprenderemos como crear y configurar una Toolchain en IBM Cloud para así automatizar los procesos de integración y despliegue sobre un clúster de Kubernetes

Prerrequisitos

Para completar este tutorial vamos a necesitar:

Antes de empezar

Vamos a crear un clúster de Kubernetes gratuito ya que tomará un rato en que se aprovisione.

Tiempo estimado

El tutorial nos llevará aproximadamente 40 minutos en completar.

Pasos

  1. Descargar y modificar el código
  2. Crear nuestra Toolchain
  3. Desplegar nuestra aplicación
  4. Configuraciones avanzadas de nuestra Toolchain

Paso 1: Descargar y modificar nuestra aplicación

Vamos a usar una aplicación JavaScript utilizando el framework de Express.

Lo primero que tenemos que hacer es descargar el código desde GitHub, luego de eso ingresar a la carpeta y hacer un comando npm install para así instalar todas nuestras dependencias.

Por último ejecutamos npm start para dejar corriendo la aplicación y ver como funciona.

Esta aplicación de Express se expone en el puerto 5000 y expone solo un servicio sobre /, por lo que si entramos a http://localhost:5000 tendremos como resultado una página que nos dirá Hola Mundo!

Los cambios que se quieran hacer con la aplicación ahora son a tu elección! Podemos cambiar el mensaje que nos entrega, exponer nuevos servicios, lo que querramos! Toda la aplicación se encuentra en el archivo src/index.js.

Antes de irnos al siguiente paso vamos a hacer un Dockerfile para así crear imágenes de nuestra aplicación y desplegarla en nuestro clúster.

Vamos a crear un nuevo archivo llamado Dockerfile (sin extensiones) y vamos a colocar la siguiente configuración:


FROM node:14.15.4-slim
WORKDIR /usr/src/app
COPY package*.json .
RUN npm install
COPY . .
EXPOSE 5000
CMD ["npm", "start"]

Al tener listo nuestro Dockerfile podemos continuar con el siguiente paso.

Paso 2: Crear nuestra Toolchain

Para crear nuestra Toolchain debemos ir al catálogo de IBM Cloud y colocar en el buscador Toolchain.

Buscar Toolchain en el Dasboard de IBM Cloud

Una vez en la página de creación se nos aparecerán varias opciones conocidas como templates. Toolchain nos da la opción de poder crear una pipeline a partir de un formato ya existente o crearla desde cero. En nuestro caso buscaremos la template Desarrollar una aplicación en Kubernetes

Crear una Kubernetes app dentro de Toolchain

Una vez elegida la template debemos configurar ciertos parámetros de nuestra Toolchain:

  1. Colocarle un nombre a nuestra Toolchain, una región, grupo de recursos y una plataforma de de control de versiones; podemos elegir entre Git Repos and Issue Tracking (de IBM), Github, GitLab o Bitbucket (en el caso de irse por alguna de las tres últimas hay que hacer un proceso de autenticación entre IBM y la plataforma)

    Configuración de la Kubernetes app dentro de Toolchai

  2. A partir de nuestra plataforma de control de versiones, debemos seleccionar que queremos hacer un Nuevo repositorio y le configuramos el nombre que querramos. Los últimos parámetros acerca del repositorio (hacerlo privado, tener issues o llevar un control de los despliegues) son opcionales

    Configuración del repo a usar

  3. Configurar nuestra Delivery Pipeline que se encarga, el cerebro de la Toolchain, debemos colocarle un Nombre y una API Key de IBM Cloud que podemos crear si hacemos click en Nuevo. Se nos llenarán los campos referentes al clúster de manera automática, si no lo hace, revisa que tu clúster fue creado correctamente. Por último tenemos que llenar un campo llamado Nombre de Registro aquí colocaremos un nombre de donde se van a guardar las imágenes creadas por nuestra Toolchain

    Configuración de la Delivery Pipeline

    Configuración de la Delivery Pipeline completa

Una vez configurada nuestra Toolchain podemos hacer click en el botón Crear y ya tenemos nuestra Toolchain creada y lista!

Esto nos llevará a una nueva página donde veremos diversas herramientas que componen nuestra Toolchain, a medida que avancemos en los siguientes pasos iremos entrando en más detalle sobre algunas de ellas

Panel de control de Toolchain completo

Paso 3: Desplegar nuestra aplicación

Dentro de nuestra Toolchain si hacemos click sobre el repositorio que está en la sección Code ingresaremos al repositorio que fue creado por la Toolchain en el paso anterior. Sobre este repositorio es donde nuestra Toolchain observará cambios e iniciará su proceso de despliegue.

Configurar el repo de Github dentro del Dashboa

Para llevar nuestra aplicación Express a la nube basta con clonar este repositorio, colocar el código de nuestra aplicación que modificamos en el paso 1 y realizar el proceso para subirlo al repositorio sobre la branch master

Diagrama de pasos a completar

Apenas hayamos hecho nuestro primer push al repositorio se activará otra de las herramientas en el Toolchain, la Delivery Pipeline que tiene todos los procesos CI/CD hacia nuestro clúster de Kuberentes, tenemos tres etapas:

  1. BUILD: Que se encarga de todos los procesos referentes al repositorio, principalmente la obtención de él y la ejecución de pruebas unitarias
  2. CONTAINERIZE: Que se encarga de la creación de nuestra imagen (a partir del Dockerfile que le dejamos en el repositorio) y la subida al registro de nuestra cuenta
  3. DEPLOY: Que se encarga de desplegar la aplicación sobre nuestro clúster y revisar que no hubieron problemas durante el proceso

Una vez terminado el proceso de despliegue veremos que en nuestro clúster se creó un nuevo namespace llamado prod donde tenemos nuestra aplicación desplegada y ejecutando!

Selección de Namespace del proyecto

Seleccionar PROD en el menú del Dashboar

Paso 4: Configuraciones avanzadas de nuestra Toolchain

Hay algunas cosas que podemos observar y editar sobretodo dentro de nuestra Delivery Pipeline. Cada una de las etapas se dividen en subtareas, y estas subtareas tienen entradas y salidas que alimentan otras etapas.

Confirmación del paso Build

Si hacemos click sobre cualquier subtarea podemos ver los registros de cada una de ellas y cada vez que fue activada, esto es perfecto en el momento de que existan errores o se quiere visualizar el correcto funcionamiento de la etapa. Además podemos descargar los artefactos que fueron generados en esta etapa, para observar si la transferencia de ellos es correcta.

Panel de configuración del pipeline

Si hacemos click sobre el símbolo del engranaje y luego configurar etapa sobre cualquier etapa podemos modificarla, agregarle nuevas subtareas, cambiar las ya existentes y ver otros elementos como variables de entorno (ya que al fin y al cabo estas subtareas son contenedores ejecutando lo que se determine dentro de la pestaña Trabajos)

Panel de configuración del paso BUILD

  • En la etapa BUILD podemos cambiar la entrada de nuestra etapa, podemos cambiar a utilizar artefactos y también cambiar la rama a la cuál va a observar cambios. Pero también podemos dar un paso más y cambiar cuándo queremos que se inice esta etapa

Configuración del repositorio Git

  • En la etapa CONTAINERIZE podemos modificar a cuál registro voy a guardar o a apuntar dentro de IBM y también en las variables de entorno podemos cambiar en qué sitio se encuentra nuestro Dockerfile y hasta como se llama en el caso que se tengan diversas versiones

Configuración del container

Panel de configuración del enviroment del container

  • Por último en la etapa de DEPLOY podemos cambiar dentro de las variables de entorno sobre cuál namespace vamos a desplegar y también observamos la existencia de un deployment.yml, lo que quiere decir que si tuvieramos uno dentro de nuestro repositorio, aplicaría estas configuraciones en vez de las que se utilizaron por defecto, dándonos aún más control sobre nuestro despliegue

Panel de configuración del paso Deploy

Resumen

En este tutorial aprendiste a utilizar una Toolchain de IBM y realizar un despliegue automatizado sobre un clúster de Kubernetes además de configuraciones extras sobre el Delivery Pipeline para tener mucho más control sobre tu despliegue.

Además, ya que OpenShift está construido sobre Kubernetes, podemos aplicar estos mismos conocimientos para un clúster de OpenShift!