Cum să utilizați HashiCorp Waypoint pentru a colabora cu GitLab CI/CD

Cum să utilizați HashiCorp Waypoint pentru a colabora cu GitLab CI/CD

HashiCorp a prezentat un nou proiect Punct de drum pe HashiCorp Digital. Utilizează un fișier bazat pe HCL pentru a descrie crearea, livrarea și lansarea aplicațiilor pentru diverse platforme cloud, de la Kubernetes la AWS și Google Cloud Run. Gândiți-vă la Waypoint ca la Terraform și Vagrant reunite pentru a descrie procesul de construire, expediere și lansare a aplicațiilor dvs.

Fiind în formă, HashiCorp a lansat Waypoint ca sursă deschisă și vine cu o mulțime de exemple. Nivelul orchestratorului depinde de tine, Waypoint vine ca un executabil pe care îl poți rula direct pe laptop sau din instrumentul tău de orchestrare CI/CD la alegere. Ținta de implementare a aplicației depinde și de dvs., deoarece Waypoint acceptă Kubernetes, Docker, Google Cloud Run, AWS ECS și multe altele.

După ce ai citit minunatul documentație și cel mai chic exemple aplicații furnizate de HashiCorp, am decis să aruncăm o privire mai atentă asupra orchestrației Waypoint cu GitLab CI/CD. Pentru a face acest lucru, vom lua o aplicație simplă Node.js care rulează pe AWS ECS din depozitul de mostre.

După clonarea depozitului, să ne uităm la structura aplicației care afișează o pagină:

Cum să utilizați HashiCorp Waypoint pentru a colabora cu GitLab CI/CD

După cum probabil ați observat, nu există Dockerfile în acest proiect. Nu sunt adăugate în exemplu pentru că nu prea avem nevoie de ele, pentru că Waypoint se va ocupa de ele pentru noi. Să aruncăm o privire mai atentă la dosar waypoint.hclpentru a înțelege ce va face:

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

În timpul fazei de construire, Waypoint folosește Cloud Native Buildpacks (CNB) pentru a determina limbajul de programare al proiectului și pentru a crea o imagine Docker fără a utiliza un fișier Docker. În principiu, aceasta este aceeași tehnologie care este utilizată parțial de GitLab DevOps automat la pasul Auto Build. Este grozav să vedem că CNB-ul CNCF câștigă din ce în ce mai multă adoptare în rândul utilizatorilor din industrie.

Odată ce imaginea este construită, Waypoint o va încărca automat în registrul nostru AWS ECR, astfel încât să fie gata de expediat. La sfârșitul asamblarii, se utilizează etapa de livrare Supliment AWS ECS pentru a implementa aplicația noastră în contul nostru AWS.

De pe laptopul meu este ușor. Am introdus Waypoint care este deja autentificat în contul meu AWS și „pur și simplu funcționează”. Dar ce se întâmplă dacă vreau să trec dincolo de laptopul meu? Sau poate vreau să automatizez această implementare ca parte a conductei mele generale CI/CD în care rulează testele mele actuale de integrare, testele de securitate și altele? Aceasta este partea din poveste în care intervine GitLab CI/CD!

NB Dacă doar plănuiți să implementați CI/CD sau doriți să începeți să aplicați cele mai bune practici pentru construirea conductelor, acordați atenție noului curs Slurm. „CI/CD pe exemplul Gitlab CI”. Acum este disponibil la prețul de precomandă.

Waypoint în GitLab CI/CD

Pentru a orchestra toate acestea în GitLab CI/CD, să vedem de ce avem nevoie în fișierul nostru .gitlab-ci.yml:

  • În primul rând, aveți nevoie de o imagine de bază pentru a rula în interiorul ei. Waypoint rulează pe orice distribuție Linux, are nevoie doar de Docker, așa că putem rula cu o imagine Docker generică.
  • Apoi, trebuie să instalați Waypoint în această imagine. În viitor, putem colecta meta build imagine și containerizați acest proces pentru dvs.
  • În cele din urmă, vom rula comenzile Waypoint

Mai sus este tot ceea ce va avea nevoie canalul nostru pentru a rula scripturile necesare pentru a realiza implementarea, dar pentru a implementa în AWS, avem nevoie de încă un lucru: trebuie să ne conectăm la contul nostru AWS. În descrierea punctului de trecere au planuri despre autentificare și autorizare. HashiCorp a lansat și un proiect impresionant săptămâna aceasta Limită. Dar pentru moment, putem doar să luăm și să ne ocupăm de autentificare și autorizare.

Există mai multe opțiuni pentru autentificarea GitLab CICD pe AWS. Prima opțiune este să utilizați sistemul încorporat Seif HashiCorp. Este în regulă dacă echipa ta folosește deja Vault pentru gestionarea acreditărilor. O altă metodă care funcționează dacă echipa dvs. gestionează autorizarea folosind AWS IAM este să verificați dacă sarcinile de livrare sunt declanșate prin GitLab RunnerA care este autorizat să înceapă implementarea prin IAM. Dar dacă doriți doar să vă familiarizați cu Waypoint și doriți să o faceți rapid, ultima opțiune este să adăugați API-ul AWS și cheile secrete la Variabile de mediu GitLab CI/CD AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Punând totul împreună

Odată ce ne-am dat seama de autentificare, putem începe! Finala noastră .gitlab-ci.yml arată astfel:

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

Vedeți că începem cu o imagine docker:latest și setați câteva variabile de mediu cerute de Waypoint. În capitolul script descarcăm cel mai recent executabil Waypoint și îl introducem /usr/local/bin. Deoarece alergătorul nostru este deja autorizat în AWS, atunci pur și simplu alergăm waypoint init, build, deploy и release.

Ieșirea sarcinii de construire ne va arăta punctul final în care am rulat aplicația:

Cum să utilizați HashiCorp Waypoint pentru a colabora cu GitLab CI/CD

Waypoint unul dintre numeroase soluții HashiCorp, care funcționează excelent cu GitLab. De exemplu, pe lângă livrarea aplicației, putem orchestra infrastructura de bază cu Terraform în GitLab. Pentru a standardiza securitatea SDLC, putem implementa și GitLab cu Vault pentru gestionarea secretelor și token-urilor în conductele CI/CD, oferind o soluție completă pentru dezvoltatori și administratori care se bazează pe managementul secret pentru dezvoltare, testare și utilizare în producție.

Soluțiile comune dezvoltate de HashiCorp și GitLab ajută companiile să găsească cea mai bună modalitate de a dezvolta aplicații, asigurând managementul consecvent al lanțului de aprovizionare și al infrastructurii. Waypoint a făcut încă un pas în direcția corectă și așteptăm cu nerăbdare dezvoltarea în continuare a proiectului. Puteți afla mai multe despre Waypoint aicide asemenea, merită explorat documentație и plan de dezvoltare proiect. Ne-am adăugat cunoștințele la Documentația GitLab CICD. Dacă doriți să îl încercați singur, puteți consulta exemplul de lucru complet la acest depozit.

Puteți înțelege principiile CI/CD, puteți stăpâni toate subtilitățile lucrului cu Gitlab CI și puteți începe să aplicați cele mai bune practici prin finalizarea cursului video „CI/CD pe exemplul Gitlab CI”... Alăturați-ne!

Sursa: www.habr.com

Adauga un comentariu