Hvordan bruke HashiCorp Waypoint til å samarbeide med GitLab CI/CD

Hvordan bruke HashiCorp Waypoint til å samarbeide med GitLab CI/CD

HashiCorp viste et nytt prosjekt waypointHashiCorp Digital. Den bruker en HCL-basert fil for å beskrive bygging, frakt og utgivelse av applikasjoner for ulike skyplattformer, fra Kubernetes til AWS og Google Cloud Run. Tenk på Waypoint som Terraform og Vagrant satt sammen for å beskrive prosessen med å bygge, sende og frigi applikasjonene dine.

Vanen tro har HashiCorp gitt ut Waypoint som åpen kildekode, og det kommer med mange eksempler. Nivået på orkestratoren er opp til deg, Waypoint kommer som en kjørbar fil som du kan kjøre direkte på den bærbare datamaskinen eller fra CI/CD-orkestreringsverktøyet du velger. Applikasjonsdistribusjonsmålet er også opp til deg, siden Waypoint støtter Kubernetes, Docker, Google Cloud Run, AWS ECS og mer.

Etter å ha lest den fantastiske dokumentasjon og den kjekkeste eksempler applikasjoner levert av HashiCorp, bestemte vi oss for å se nærmere på Waypoint-orkestrering med GitLab CI/CD. For å gjøre dette tar vi en enkel Node.js-applikasjon som kjører på AWS ECS fra prøvelageret.

Etter å ha klonet depotet, la oss se på strukturen til applikasjonen som viser én side:

Hvordan bruke HashiCorp Waypoint til å samarbeide med GitLab CI/CD

Som du kanskje har lagt merke til, er det ingen Dockerfile i dette prosjektet. De er ikke lagt til i eksemplet fordi vi egentlig ikke trenger dem, fordi Waypoint vil ta vare på dem for oss. La oss se nærmere på filen waypoint.hclfor å forstå hva det vil gjøre:

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

Under byggefasen bruker Waypoint Cloud Native Buildpacks (CNB) for å bestemme prosjektets programmeringsspråk og lage et Docker-bilde uten å bruke en Dockerfil. I prinsippet er dette den samme teknologien som delvis brukes av GitLab Auto DevOps på trinnet Autobygg. Det er flott å se at CNCFs CNB får mer og mer adopsjon blant industribrukere.

Når bildet er bygget, vil Waypoint automatisk laste det opp til vårt AWS ECR-register slik at det er klart til å sendes. På slutten av monteringen bruker leveringstrinnet AWS ECS-tillegg for å distribuere applikasjonen vår til AWS-kontoen vår.

Fra min bærbare er det enkelt. Jeg legger inn Waypoint som allerede er autentisert i AWS-kontoen min og det "bare fungerer". Men hva skjer hvis jeg vil gå lenger enn den bærbare datamaskinen min? Eller kanskje jeg ønsker å automatisere denne distribusjonen som en del av min overordnede CI/CD-pipeline der mine nåværende integrasjonstester, sikkerhetstester og andre kjører? Dette er delen av historien hvor GitLab CI/CD kommer inn!

NB Hvis du bare planlegger å implementere CI / CD eller ønsker å begynne å bruke de beste praksisene for å bygge rørledninger, vær oppmerksom på det nye Slurm-kurset "CI/CD på eksemplet med Gitlab CI". Den er nå tilgjengelig for forhåndsbestillingspris.

Veipunkt i GitLab CI/CD

For å orkestrere alt dette i GitLab CI/CD, la oss se hva vi trenger i filen vår .gitlab-ci.yml:

  • Først av alt trenger du et basisbilde for å kjøre inni det. Waypoint kjører på hvilken som helst Linux-distribusjon, den trenger bare Docker, så vi kan kjøre med et generisk Docker-bilde.
  • Deretter må du installere Waypoint i dette bildet. I fremtiden kan vi samle inn meta bygge bilde og containeriser denne prosessen for deg selv.
  • Til slutt vil vi kjøre Waypoint-kommandoene

Ovenfor er alt vår pipeline trenger for å kjøre skriptene som trengs for å utføre distribusjonen, men for å distribuere til AWS, trenger vi en ting til: vi må logge inn på AWS-kontoen vår. I veipunktbeskrivelse har planer om autentisering og autorisasjon. HashiCorp ga også ut et imponerende prosjekt denne uken Boundary. Men foreløpig kan vi bare ta og håndtere autentisering og autorisasjon selv.

Det er flere alternativer for GitLab CICD-autentisering på AWS. Det første alternativet er å bruke den innebygde HashiCorp hvelv. Det er greit hvis teamet ditt allerede bruker Arkiv for legitimasjonsadministrasjon. En annen metode som fungerer hvis teamet ditt administrerer autorisasjon ved hjelp av AWS IAM, er å sjekke at leveringsoppgaver utløses via GitLab RunnerEn som er autorisert til å starte distribusjonen gjennom IAM. Men hvis du bare vil bli kjent med Waypoint og vil gjøre det raskt, er det siste alternativet å legge til AWS API og hemmelige nøkler til GitLab CI/CD miljøvariabler AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Setter alt sammen

Når vi har funnet ut autentiseringen, kan vi begynne! Finalen vår .gitlab-ci.yml ser slik ut:

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

Du ser at vi starter med et bilde docker:latest og angi noen få miljøvariabler som kreves av Waypoint. I kapittel script vi laster ned den nyeste kjørbare Waypoint-filen og legger den inn /usr/local/bin. Siden vår løper allerede er autorisert i AWS, så løper vi ganske enkelt waypoint init, build, deploy и release.

Utdataene fra byggeoppgaven vil vise oss endepunktet der vi rullet applikasjonen:

Hvordan bruke HashiCorp Waypoint til å samarbeide med GitLab CI/CD

Veipunkt en av en rekke HashiCorp-løsninger, som fungerer bra med GitLab. For eksempel kan vi i tillegg til å levere applikasjonen orkestrere den underliggende infrastrukturen med Terraform i GitLab. For å standardisere SDLC-sikkerhet kan vi også implementere GitLab med Vault for administrasjon av hemmeligheter og tokens i CI/CD-pipelines, og gir en komplett løsning for utviklere og administratorer som er avhengige av hemmelig administrasjon for utvikling, testing og produksjonsbruk.

Fellesløsninger utviklet av HashiCorp og GitLab hjelper bedrifter med å finne den beste måten å utvikle applikasjoner på ved å sikre konsistent forsyningskjede- og infrastrukturstyring. Waypoint har tatt enda et steg i riktig retning og vi ser frem til videre utvikling av prosjektet. Du kan lære mer om Waypoint herogså verdt å utforske dokumentasjon и utviklingsplan prosjekt. Vi har lagt vår kunnskap til GitLab CICD dokumentasjon. Hvis du vil prøve det selv, kan du sjekke ut det komplette arbeidseksemplet på dette depotet.

Du kan forstå prinsippene for CI / CD, mestre alle finessene ved å jobbe med Gitlab CI og begynne å bruke beste praksis ved å fullføre videokurset "CI/CD på eksemplet med Gitlab CI"... Bli med oss!

Kilde: www.habr.com

Legg til en kommentar