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

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

HashiCorp mostró un nuevo proyecto Waypoint en HashiCorp Digital. Utiliza un archivo basado en HCL para describir la creación, envío y lanzamiento de aplicaciones para varias plataformas en la nube, desde Kubernetes hasta AWS y Google Cloud Run. Piense en Waypoint como Terraform y Vagrant juntos para describir el proceso de creación, envío y lanzamiento de sus aplicaciones.

Fiel a su forma, HashiCorp ha lanzado Waypoint como código abierto y viene con muchos ejemplos. La capa del orquestador depende de usted, Waypoint viene como un ejecutable que puede ejecutar directamente en su computadora portátil o desde la herramienta de orquestación CI/CD de su elección. El objetivo de implementar sus aplicaciones también depende de usted, ya que Waypoint es compatible con Kubernetes, Docker, Google Cloud Run, AWS ECS y más.

Después de leer el maravilloso documentación y el mas chic ejemplos aplicaciones proporcionadas por HashiCorp, decidimos echar un vistazo más de cerca a la orquestación de Waypoint con GitLab CI/CD. Para hacer esto, tomaremos una aplicación Node.js simple que se ejecuta en AWS ECS desde el repositorio de muestra.

Después de clonar el repositorio, veamos la estructura de la aplicación que muestra una página:

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

Como habrás notado, no hay ningún Dockerfile en este proyecto. No se agregan en el ejemplo porque realmente no los necesitamos, porque Waypoint se encargará de ellos por nosotros. Echemos un vistazo más de cerca al archivo. waypoint.hclpara entender lo que 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"
    }
  }
}

Durante la fase de construcción, Waypoint utiliza Cloud Native Buildpacks (NBC) para determinar el lenguaje de programación del proyecto y crear una imagen de Docker sin utilizar un Dockerfile. En principio, esta es la misma tecnología que utiliza GitLab en parte. DevOps automático en el paso de compilación automática. Es fantástico ver que el CNB de CNCF está ganando cada vez más adopción entre los usuarios de la industria.

Una vez creada la imagen, Waypoint la cargará automáticamente en nuestro registro AWS ECR para que esté lista para enviarse. Al final del montaje, el paso de entrega utiliza Complemento AWS ECS para implementar nuestra aplicación en nuestra cuenta de AWS.

Desde mi laptop es fácil. Puse Waypoint que ya está autenticado en mi cuenta de AWS y "simplemente funciona". Pero ¿qué pasa si quiero ir más allá de mi portátil? ¿O tal vez quiero automatizar esta implementación como parte de mi canal general de CI/CD donde se ejecutan mis pruebas de integración actuales, pruebas de seguridad y otras? ¡Esta es la parte de la historia donde entra en juego GitLab CI/CD!

NB Si recién está planeando implementar CI/CD o desea comenzar a aplicar las mejores prácticas para la construcción de pipelines, preste atención al nuevo curso de Slurm. "CI/CD en el ejemplo de Gitlab CI". Ya está disponible a precio de reserva.

Punto de referencia en GitLab CI/CD

Para orquestar todo esto en GitLab CI/CD, veamos qué necesitamos en nuestro archivo .gitlab-ci.yml:

  • En primer lugar, necesita una imagen base para ejecutarla en su interior. Waypoint se ejecuta en cualquier distribución de Linux, solo necesita Docker, por lo que podemos ejecutarlo con una imagen genérica de Docker.
  • A continuación, debes instalar Waypoint en esta imagen. En el futuro podremos recopilar imagen de metaconstrucción y contenedorice este proceso usted mismo.
  • Finalmente ejecutaremos los comandos de Waypoint.

Arriba está todo lo que nuestra canalización necesitará para ejecutar los scripts necesarios para realizar la implementación, pero para implementar en AWS, necesitamos una cosa más: debemos iniciar sesión en nuestra cuenta de AWS. En la descripción del Waypoint tener planes sobre autenticación y autorización. HashiCorp también lanzó un proyecto impresionante esta semana. Boundary. Pero por ahora, podemos tomar y manejar la autenticación y la autorización nosotros mismos.

Hay varias opciones para la autenticación CICD de GitLab en AWS. La primera opción es utilizar el incorporado Bóveda de HashiCorp. Está bien si su equipo ya utiliza Vault para la administración de credenciales. Otro método que funciona si su equipo administra la autorización mediante AWS IAM es verificar que las tareas de entrega se activen a través de Corredor de GitLabA que está autorizado para iniciar la implementación a través de IAM. Pero si solo desea familiarizarse con Waypoint y hacerlo rápidamente, la última opción es agregar su API de AWS y sus claves secretas a Variables de entorno de GitLab CI/CD AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Poniendo todo junto

Una vez que descubrimos la autenticación, ¡podemos comenzar! nuestra final .gitlab-ci.yml Se ve así:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Define environment variables, e.g. `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

Verás, comenzamos con una imagen. docker:latest y establezca algunas variables de entorno requeridas por Waypoint. en el capitulo script descargamos la última versión del ejecutable de Waypoint y lo instalamos en /usr/local/bin. Dado que nuestro corredor ya está autorizado en AWS, simplemente ejecutamos waypoint init, build, deploy и release.

El resultado de la tarea de compilación nos mostrará el punto final donde implementamos la aplicación:

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

Punto de referencia uno de numerosas soluciones de HashiCorp, que funcionan muy bien con GitLab. Por ejemplo, además de entregar la aplicación, podemos orquestar la infraestructura subyacente con Terraform en GitLab. Para estandarizar la seguridad del SDLC, también podemos implementar GitLab con bóveda para gestionar secretos y tokens en canalizaciones de CI/CD, proporcionando una solución completa para desarrolladores y administradores que dependen de la gestión de secretos para el desarrollo, las pruebas y el uso en producción.

Las soluciones conjuntas desarrolladas por HashiCorp y GitLab ayudan a las empresas a encontrar la mejor manera de desarrollar aplicaciones garantizando una gestión coherente de la cadena de suministro y la infraestructura. Waypoint ha dado un paso más en la dirección correcta y esperamos seguir desarrollando el proyecto. Puedes aprender más sobre Waypoint aquítambién vale la pena explorar documentación и plan de Desarrollo proyecto. Hemos añadido nuestro conocimiento a Documentación CICD de GitLab. Si desea probarlo usted mismo, puede consultar el ejemplo funcional completo en este repositorio.

Puede comprender los principios de CI / CD, dominar todas las sutilezas de trabajar con Gitlab CI y comenzar a aplicar las mejores prácticas completando el curso en video. "CI/CD en el ejemplo de Gitlab CI". ¡Únete ahora!

Fuente: habr.com

Añadir un comentario