¡Participa de la Maratón Behind the Code, la competencia de programación más desafiante! Inscríbete aqui

Code Engine: cómo desplegar aplicaciones en 2 simples pasos

Introducción

En este tutorial, aprenderás a realizar el despliegue de una aplicación usando Code Engine, el nuevo servicio de IBM. Code Engine es una plataforma que ofrece una combinación perfecta entre serverless y Kubernetes, permitiendo ejecutar cargas de trabajo en contenedores de manera ágil y sencilla. Estas cargas pueden ser cualquier cosa, desde aplicaciones web, microservicios, funciones even-driven, o incluso trabajos batch. Todas las ventajas de Kubernetes, sin ninguna de las complejidades.

Para más información, se recomienda consultar la documentación oficial del servicio.

Una vez finalizado este tutorial, serás capaz de:

  • Conocer qué es Code Engine
  • Crear una imagen de una aplicación, a partir de su código fuente, y desplegarla en la nube de dos maneras diferentes:
    1. Utilizando la interfaz de usuario provista por IBM Cloud
    2. Empleando la CLI de IBM Cloud

Requisitos previos

Tiempo Estimado

El tiempo estimado para este tutorial es de 30 minutos.

Secuencia

  • Opción 1: Interfaz Web de IBM Cloud
    • Paso 1: Inicialización del proceso
    • Paso 2: Configuración de parámetros de despliegue
      • Paso 2.1: Aplicación vs Trabajo
      • Paso 2.2: Asociación a Proyecto
      • Paso 2.3: Especificación de Detalles de Build
      • Paso 2.4: Opcional: opciones de runtime & variables de entorno
      • Paso 2.5: Creación del despliegue
    • Paso 3: Acceso a la aplicación
  • Opción 2: IBM Cloud CLI
    • Paso 0: Instalación de dependencias
    • Paso 1: Creación/Selección de proyecto
    • Paso 2: Creación y despliegue de imagen
    • Paso 3: Acceso a la aplicación

Dibujo del diagrama de funcionamiento de Code Engine

Pasos a seguir

Opción 1: Interfaz Web de IBM Cloud

La primera opción consiste en hacer uso de interfaz gráfica que provee IBM Cloud.

1. Inicialización del proceso

El primer paso será dirigirse a la página de overview del servicio, donde se debe pegar la URL donde se encuentra el código fuente. Luego, se debe seleccionar la opción Start Creating ->. Para este tutorial, se utilizará el repositorio ofrecido por defecto.

Screenshot de página de lanzamiento de Code Engine

2. Configuración de parámetros de despliegue

Una vez comenzado el proceso, será posible configurar algunos parámetros para el despliegue.

2.1. Aplicación vs Trabajo

El primero consiste en elegir una de dos modalidades:

  1. Aplicación (Application): despliegue tradicional de la aplicación. La misma se encontrará disponible en la nube, y recibirá peticiones HTTP, así como WebSockets, en caso de implementarlas. La cantidad de instancias será 100% escalable en función de los ajustes de configuración y las cargas de trabajo entrantes.
  2. Trabajo (Job): un trabajo ejecuta una o más instancias ejecutables del código. A diferencia de las aplicaciones, que manejan peticiones HTTP, los trabajos están diseñados para ejecutarse una vez, y desaprovisionarse una vez terminada la tarea.

Para este tutorial se seleccionó la opción de Aplicación.

Screenshot de página de creación de instancia de Code Engine

Además, deberá asignarse un nombre.

2.2. Asociación a Proyecto

Se debe asociar la aplicación a un proyecto, una agrupación de entidades (aplicaciones, trabajos y compilaciones) de Code Engine, basada en los namespaces de Kubernetes. Se utilizan para administrar recursos y brindar acceso a entidades. Para más información, consultar la documentación oficial del servicio.

Se debe seleccionar un proyecto existente o hacer lick en Create project + y colocar un nombre, región y, opcionalmente, el grupo de recursos y tags deseados.

Una vez hecho esto, se puede dar click en Create.

Screenshot de página de configuración del proyecto

2.3. Especificación de Detalles de Build

En esta sección puede, una vez más, validarse el origen del código/imagen a desplegar.

El siguiente paso será seleccionar Specify build details, donde se pueden ajustar parámetros como:

  • Source (Fuente):
    • La branch del repositorio a desplegar (por default: main)
    • Un repositorio dentro de esa branch (por defecto el raíz)
  • Strategy (Estrategia):
    • Si la imagen se genera mediante un Dockerfile o un Cloud Native Buildpack
    • Los recursos (vCPU/RAM) a utilizar para realizar la build
  • Output (Salida):
    • Dónde habrá de almacenarse la imagen resultante. Una posibilidad es Container Registry, otra es DockerHub. Simplemente se requiere colocar la URL y las credenciales de acceso del usuario.

Para el propósito de este tutorial se utilizarán los valores por defecto, a excepción del directorio, que será /hello.

Screenshot de página de configuración del build

Una vez seleccionadas todas las opciones, la pantalla de creación debería verse así:

Screenshot de página de selección de código

2.4. Opcional: opciones de runtime & variables de entorno

En lo que refiere a opciones de Runtime, se puede seleccionar la cantidad de instancias mínimas y máximas (por defecto 0 y 10, respectivamente), los recursos (vCPU y RAM) a emplear por instancia y la cantidad máxima de peticiones concurrentes por instancia, así como el timeout de las mismas.

Para este tutorial se utilizarán los valores por defecto.

Screenshot de página de configuración de instancias

Opcionalmente, en la sección «Environment Variables» pueden definirse pares clave-valor para utilizar en el código.

2.5 Creación del despliegue

Una vez definidos los parámetros anteriores, bastará con hacer click en Create.

Screenshot de confirmación al crear

3. Acceso a la aplicación

Habiendo seleccionado la opción de creación, el servicio procederá a crear una imagen a partir del código fuente que se suministró, la almacenará en el registro que se seleccionó (sea Container Registry o DockerHub), y realizará su despliegue con los parámetros previamente establecidos.

Es posible acceder el proyecto de Code Engine correspondiente y ver listada la aplicación creada:

Screenshot de página mostrando el proyecto funcionando

Seleccionar la opción Open URL permite acceder directamente a la aplicación:

Screenshot de la dirección web del proyecto

¡Listo! ¡La aplicación ha sido desplegada!

Opción 2: IBM Cloud CLI

La segunda opción es utilizar la CLI de IBM Cloud desde la consola de comandos.

0. Instalación de dependencias

Se deberá instalar el plugin de Code Engine con el siguiente comando:

ibmcloud plugin install code-engine

Se puede verificar la instalación ejecutando el siguiente comando:

ibmcloud ce help

Para más información, consultar la sección CLI del servicio.

1. Creación/Selección de proyecto

Antes de proceder, se recomienda verificar que se haya seleccionado la cuenta, región y grupo de recursos correcto. Para más información, consultar la documentación del comando ibmcloud target.

Se deberá crear o seleccionar un proyecto. Para crearlo, basta con correr el comando:

ibmcloud ce project create --name nombre_proyecto

Si, en cambio, se desea seleccionar uno preexistente, es posible listarlos ejecutando:

ibmcloud ce project list

Y seleccionar uno mediante el comando:

ibmcloud ce project select --name nombre_proyecto

2. Creación y despliegue de imagen

Para crear y desplegar la imagen basta con ejecutar el siguiente comando en consola:

ibmcloud ce application create --name nombre_aplicacion --image url/de/la/imagen

La aplicación comenzará a aprovisionarse. Luego de unos segundos, se verá un output como el siguiente:

Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce application get -n ibmdeveloper-demo-cli' to check the application status.
OK

https://ibmdeveloper-demo-cli.a6qkevxwd6k.us-south.codeengine.appdomain.cloud

Esa URL es el endpoint de la aplicación, es decir, donde se encuentra alojada en la nube.

3. Acceso a la aplicación

Es ahora posible enviar peticiones a la aplicación. A modo de ejemplo, se abrirá una pestaña en el navegador:

Screenshot de la dirección web del proyecto

Resumen

En este tutorial:

  • Se brindó una definición del nuevo servicio de IBM Cloud: Code Engine.
  • A partir de la URL de un repositorio de GitHub, se creó una imagen Docker y se desplegó en un clúster Kubernetes mediante dos caminos: la interfaz gráfica de IBM Cloud, y la CLI de IBM Cloud. Todo esto en sólo dos pasos y sin utilizar una sola línea de código.

Enlaces de interés