
HashiCorp presentó un nuevo proyecto en . Utiliza un archivo basado en HCL para describir la construcción, entrega y lanzamiento de aplicaciones para diversas plataformas en la nube, desde Kubernetes hasta AWS y Google Cloud Run. Se puede imaginar que Waypoint es la combinación de Terraform y Vagrant para describir el proceso de construcción, entrega y lanzamiento de sus aplicaciones.
Sin cambiar su esencia, HashiCorp lanzó Waypoint como software de código abierto, además de incluir numerosos ejemplos. El nivel del orquestador queda a su elección, Waypoint se presenta como un archivo ejecutable que puede ejecutar directamente en su computadora portátil o desde la herramienta de orquestación CI/CD que prefiera. El objetivo para el despliegue de aplicaciones también es decidido por usted, ya que Waypoint admite Kubernetes, Docker, Google Cloud Run, AWS ECS y más.
Al leer los increíbles y maravillosos aplicaciones proporcionadas por HashiCorp, decidimos echar un vistazo más de cerca a la orquestación de Waypoint utilizando GitLab CI/CD. Para ello, tomaremos una simple aplicación Node.js que se ejecuta en AWS ECS, del repositorio de ejemplos.
Después de clonar el repositorio, examinaremos la estructura de la aplicación que muestra una sola página:

Como habrán notado, en este proyecto no hay Dockerfile. No se añadieron en el ejemplo, ya que en principio no los necesitamos, porque Waypoint se encargará de ellos por nosotros. Vamos a examinar más de cerca el archivo waypoint.hcl, para entender qué hará:
project = "example-nodejs"
app "example-nodejs" {
labels = {
"service" = "example-nodejs",
"env" = "dev"
}
build {
use "pack" {}
registry {
use "aws-ecr" {
region = "us-east-1"
repository = "waypoint-gitlab"
tag = "latest"
}
}
}
deploy {
use "aws-ecs" {
region = "us-east-1"
memory = "512"
}
}
}En la fase de construcción, Waypoint utiliza Cloud Native Buildpacks (), para determinar el lenguaje de programación del proyecto y construir una imagen para Docker sin usar Dockerfile. En principio, es la misma tecnología que utiliza GitLab en la parte de en la etapa de Auto Build. Es agradable ver que CNB de CNCF está ganando cada vez más popularidad entre los usuarios de la industria.
Una vez que se ha construido la imagen, Waypoint la descargará automáticamente en nuestro registro de AWS ECR para que esté lista para su entrega. Al finalizar la construcción, el paso de entrega utiliza para desplegar nuestra aplicación en nuestra cuenta de AWS.
Desde mi portátil, todo es simple. Instalo Waypoint, que ya está autenticado en mi cuenta de AWS, y funciona. Pero, ¿qué pasaría si quiero salir de mi portátil? ¿O de repente quiero automatizar este despliegue como parte de mi pipeline CI/CD donde se ejecutan mis pruebas de integración actuales, pruebas de seguridad, y demás? ¡Aquí es donde entra GitLab CI/CD!
N.B. Si aún estás planeando la implementación de CI/CD o quieres comenzar a aplicar las mejores prácticas para construir pipelines, échale un vistazo al nuevo curso de Slyer. . Ahora está disponible por un precio de preorden.
Waypoint en GitLab CI/CD
Para orquestar todo esto en GitLab CI/CD, veamos qué necesitaremos en nuestro archivo. .gitlab-ci.yml:
- Primero, necesitamos una imagen base para ejecutarlo. Waypoint funciona en cualquier distribución de Linux, solo necesita Docker, así que podemos iniciar con una imagen genérica de Docker.
- Luego tenemos que instalar Waypoint en esta imagen. En el futuro podemos construir y contenedizar este proceso para nosotros.
- Finalmente, ejecutaremos los comandos de Waypoint.
Lo anterior detalla todo lo que necesitará nuestro pipeline para ejecutar los scripts necesarios para realizar el despliegue, pero para desplegar en AWS necesitaremos una cosa más: debemos autenticarnos en nuestra cuenta de AWS. En la documentación de Waypoint para autenticación y autorización. HashiCorp también lanzó esta semana un impresionante proyecto . Pero por ahora, simplemente podemos manejar la autenticación y autorización nosotros mismos.
Para autenticar GitLab CICD en AWS hay varias opciones. La primera opción es utilizar el . Esta opción es adecuada si tu equipo ya usa Vault para manejar credenciales. Otra manera es, si tu equipo gestiona la autorización mediante AWS IAM, asegurarte de que las tareas se ejecuten a través de , autorizado para ejecutar despliegues a través de IAM. Pero si solo quieres probar Waypoint y hacerlo rápidamente, hay una última opción: agregar tus claves de AWS API y Secret a AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY.
Reuniendo todo
Una vez que hayamos resuelto la autenticación, ¡podemos empezar! Nuestro producto final .gitlab-ci.yml se ve así:
waypoint:
image: docker:latest
stage: build
services:
- docker:dind
# Definir variables de entorno, por ejemplo, `WAYPOINT_VERSION: '0.1.1'`
variables:
WAYPOINT_VERSION: ''
WAYPOINT_SERVER_ADDR: ''
WAYPOINT_SERVER_TOKEN: ''
WAYPOINT_SERVER_TLS: '1'
WAYPOINT_SERVER_TLS_SKIP_VERIFY: '1'
script:
- wget -q -O /tmp/waypoint.zip https://releases.hashicorp.com/waypoint/${WAYPOINT_VERSION}/waypoint_${WAYPOINT_VERSION}_linux_amd64.zip
- unzip -d /usr/local/bin /tmp/waypoint.zip
- rm -rf /tmp/waypoint*
- waypoint init
- waypoint build
- waypoint deploy
- waypoint releaseVes que comenzamos con la imagen docker:latest y establecemos algunas variables de entorno requeridas para Waypoint. En la sección script descargamos la última versión del ejecutable de Waypoint y la colocamos en /usr/local/bin. Dado que nuestro runner ya está autenticado en AWS, simplemente ejecutamos waypoint init, build, deploy y release.
La salida de la tarea de construcción nos mostrará el endpoint a donde desplegamos la aplicación:

Waypoint es una de , que funcionan muy bien con GitLab. Por ejemplo, además de implementar la aplicación, podemos orquestar la infraestructura subyacente con . Para estandarizar la seguridad del SDLC, también podemos integrar para la gestión de secretos y tokens en los pipelines de CI/CD, proporcionando una solución integral para desarrolladores y administradores que dependen de la gestión de secretos durante el desarrollo, pruebas y uso industrial.
Las soluciones conjuntas desarrolladas por HashiCorp y GitLab ayudan a las empresas a encontrar la mejor manera de desarrollar aplicaciones, asegurando una gestión coherente de los flujos de entrega y la infraestructura. Waypoint ha dado otro paso en la dirección correcta, y estamos ansiosos por el futuro desarrollo del proyecto. Puedes saber más sobre Waypoint , también vale la pena explorar y del proyecto. Hemos añadido el conocimiento adquirido a . Si deseas probar todo en funcionamiento por tu cuenta, puedes obtener un ejemplo completo en .
Entender los principios de CI/CD, dominar todos los detalles de trabajar con Gitlab CI y comenzar a aplicar las mejores prácticas se puede lograr tomando el curso en video . ¡Únete!
Fuente: habr.com
