Cómo usar HashiCorp Waypoint para colaborar con GitLab CI/CD

Cómo usar HashiCorp Waypoint para colaborar con GitLab CI/CD

HashiCorp presentó un nuevo proyecto Waypoint en HashiCorp Digital. 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 la documentación y maravillosos ejemplos 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:

Cómo usar HashiCorp Waypoint para colaborar con GitLab CI/CD

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 (CNB), 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 Auto DevOps 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 el complemento AWS ECS 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. «CI/CD usando GitLab CI». 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 una imagen de compilación meta 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 hay planes para autenticación y autorización. HashiCorp también lanzó esta semana un impresionante proyecto Boundary. 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 HashiCorp Vault. 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 GitLab Runner, 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 variables de entorno de GitLab CI/CD 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 release

Ves 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:

Cómo usar HashiCorp Waypoint para colaborar con GitLab CI/CD

Waypoint es una de las numerosas soluciones de HashiCorp, que funcionan muy bien con GitLab. Por ejemplo, además de implementar la aplicación, podemos orquestar la infraestructura subyacente con Terraform en GitLab. Para estandarizar la seguridad del SDLC, también podemos integrar GitLab con Vault 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 aquí, también vale la pena explorar la documentación y el plan de desarrollo del proyecto. Hemos añadido el conocimiento adquirido a la documentación de GitLab CICD. Si deseas probar todo en funcionamiento por tu cuenta, puedes obtener un ejemplo completo en este repositorio.

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 «CI/CD usando GitLab CI». ¡Únete!

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster