Com utilitzar HashiCorp Waypoint per col·laborar amb GitLab CI/CD

Com utilitzar HashiCorp Waypoint per col·laborar amb GitLab CI/CD

HashiCorp va mostrar un nou projecte Waypoints en HashiCorp Digital. Utilitza un fitxer basat en HCL per descriure la creació, lliurament i llançament d'aplicacions per a diverses plataformes de núvol, que van des de Kubernetes fins a AWS i Google Cloud Run. Podeu pensar en Waypoint com Terraform i Vagrant combinats per descriure el procés de creació, enviament i llançament de les vostres aplicacions.

Fidel a la forma, HashiCorp ha llançat Waypoint com a codi obert i inclou molts exemples. La capa d'orquestrador depèn de vosaltres, Waypoint es presenta com un executable que podeu executar directament al vostre ordinador portàtil o des de l'eina d'orquestració CI/CD que trieu. L'objectiu per desplegar les vostres aplicacions també depèn de vosaltres, ja que Waypoint és compatible amb Kubernetes, Docker, Google Cloud Run, AWS ECS i molt més.

Després de llegir el fantàstic documentació i el més luxós exemples aplicacions proporcionades per HashiCorp, vam decidir fer una ullada més de prop a l'orquestració de Waypoint mitjançant GitLab CI/CD. Per fer-ho, agafarem una aplicació Node.js senzilla que s'executa a AWS ECS del dipòsit d'exemples.

Després de clonar el repositori, mirem l'estructura de l'aplicació que mostra una pàgina:

Com utilitzar HashiCorp Waypoint per col·laborar amb GitLab CI/CD

Com haureu notat, aquest projecte no té un Dockerfile. No s'afegeixen a l'exemple, perquè en principi no els necessitem, perquè Waypoint se'n farà càrrec per nosaltres. Fem una ullada més de prop al fitxer waypoint.hclper entendre què farà:

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"
    }
  }
}

Durant la fase de construcció, Waypoint utilitza Cloud Native Buildpacks (NBC) per determinar el llenguatge de programació del projecte i crear una imatge Docker sense utilitzar un Dockerfile. En principi, aquesta és la mateixa tecnologia que utilitza en part GitLab DevOps automàtic al pas de creació automàtica. És bo veure que el CNB de CNCF està guanyant més adopció entre els usuaris de la indústria.

Un cop construïda la imatge, Waypoint la carregarà automàticament al nostre registre AWS ECR perquè estigui a punt per al lliurament. Un cop completada la compilació, s'utilitza el pas de lliurament Complement d'AWS ECS per implementar la nostra aplicació al nostre compte d'AWS.

Des del meu portàtil, tot és senzill. Vaig posar un waypoint que ja està autenticat al meu compte d'AWS i "només funciona". Però què passa si vull anar més enllà del meu ordinador portàtil? O de sobte vull automatitzar aquest desplegament com a part del meu pipeline general de CI/CD, on s'executen les meves proves d'integració en curs, proves de seguretat i altres? Aquesta és la part de la història on entra en joc GitLab CI/CD!

NB Si només teniu previst implementar CI/CD o voleu començar a aplicar les millors pràctiques per a la construcció de canonades, presteu atenció al nou curs de Slurm "CI/CD utilitzant Gitlab CI com a exemple". Ara està disponible al preu de reserva.

Waypoint a GitLab CI/CD

Per orquestrar tot això a GitLab CI/CD, mirem què necessitem al nostre fitxer .gitlab-ci.yml:

  • En primer lloc, necessiteu una imatge base per executar-hi dins. Waypoint funciona en qualsevol distribució de Linux, només necessita Docker, de manera que podem executar-nos amb una imatge genèrica de Docker.
  • A continuació, heu d'instal·lar Waypoint en aquesta imatge. En el futur podem recollir meta compilació de la imatge i contener aquest procés per tu mateix.
  • Finalment executarem les ordres Waypoint

L'anterior descriu tot el que necessitarà el nostre pipeline per executar els scripts necessaris per completar el desplegament, però per implementar-lo a AWS necessitarem una cosa més: hem d'haver iniciat sessió al nostre compte d'AWS. A la descripció del waypoint hi ha plans sobre l'autenticació i l'autorització. HashiCorp també va llançar un projecte impressionant aquesta setmana Límit. Però de moment, només podem gestionar l'autenticació i l'autorització nosaltres mateixos.

Hi ha diverses opcions per a l'autenticació CICD de GitLab a AWS. La primera opció és utilitzar el integrat Volta HashiCorp. Això és fantàstic si el vostre equip ja utilitza Vault per a la gestió de credencials. Una altra opció que funciona si el vostre equip gestiona l'autorització mitjançant AWS IAM és comprovar que les tasques de lliurament s'activin mitjançant GitLab Runner, autoritzat per executar el desplegament mitjançant IAM. Però si només voleu familiaritzar-vos amb Waypoint i voleu fer-ho ràpidament, hi ha una darrera opció: afegiu la vostra API AWS i les claus secretes a Variables d'entorn CI/CD de GitLab AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Tot plegat

Un cop entenem l'autenticació, podem començar! La nostra final .gitlab-ci.yml es veu així:

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

Ja veus que comencem amb una imatge docker:latest i establiu diverses variables d'entorn requerides per Waypoint. En el capítol script descarreguem la darrera versió de l'executable Waypoint i l'instal·lem /usr/local/bin. Com que el nostre corredor ja està autoritzat a AWS, a continuació simplement executem waypoint init, build, deploy и release.

La sortida de la tasca de compilació ens mostrarà el punt final on vam llançar l'aplicació:

Com utilitzar HashiCorp Waypoint per col·laborar amb GitLab CI/CD

Waypoint un dels nombroses solucions HashiCorp, funciona molt bé amb GitLab. Per exemple, a més de lliurar l'aplicació, podem orquestrar la infraestructura subjacent utilitzant Terraform a GitLab. Per estandarditzar la seguretat SDLC, també podem implementar GitLab amb Vault per gestionar secrets i fitxes en canalitzacions CI/CD, proporcionant una solució holística per a desenvolupadors i administradors que depenen de la gestió de secrets per al desenvolupament, proves i ús de producció.

Les solucions conjuntes desenvolupades per HashiCorp i GitLab ajuden les empreses a trobar una millor manera de desenvolupar aplicacions proporcionant una gestió coherent de les canonades i la infraestructura de lliurament. Waypoint ha fet un pas més en la direcció correcta i esperem el desenvolupament continuat del projecte. Podeu obtenir més informació sobre Waypoint aquí, també val la pena explorar documentació и pla de desenvolupament projecte. Hem afegit els coneixements que hem adquirit Documentació CICD de GitLab. Si voleu provar-ho tot vosaltres mateixos, podeu prendre un exemple de treball complet aquest repositori.

Podeu entendre els principis de CI/CD, dominar totes les complexitats de treballar amb Gitlab CI i començar a aplicar les millors pràctiques fent un curs de vídeo "CI/CD utilitzant Gitlab CI com a exemple"... Uneix-te a nosaltres!

Font: www.habr.com

Afegeix comentari