Sådan bruger du HashiCorp Waypoint til at samarbejde med GitLab CI/CD

Sådan bruger du HashiCorp Waypoint til at samarbejde med GitLab CI/CD

HashiCorp viste et nyt projekt waypointHashiCorp Digital. Den bruger en HCL-baseret fil til at beskrive opbygning, levering og frigivelse af applikationer til en række forskellige cloud-platforme, lige fra Kubernetes til AWS til Google Cloud Run. Du kan tænke på Waypoint som Terraform og Vagrant kombineret for at beskrive processen med at bygge, sende og frigive dine applikationer.

Helt ærligt har HashiCorp frigivet Waypoint som open source og kommer med mange eksempler. Orchestrator-laget er op til dig, Waypoint kommer som en eksekverbar, som du kan køre direkte på din bærbare computer eller fra dit valgte CI/CD-orkestreringsværktøj. Målet for implementering af dine applikationer er også op til dig, da Waypoint understøtter Kubernetes, Docker, Google Cloud Run, AWS ECS og mere.

Efter at have læst det fantastiske dokumentation og den smarteste eksempler applikationer leveret af HashiCorp, besluttede vi at se nærmere på Waypoint-orkestrering ved hjælp af GitLab CI/CD. For at gøre dette tager vi en simpel Node.js-applikation, der kører på AWS ECS, fra eksempellageret.

Efter kloning af depotet, lad os se på strukturen af ​​applikationen, der viser én side:

Sådan bruger du HashiCorp Waypoint til at samarbejde med GitLab CI/CD

Som du måske har bemærket, er der ingen Dockerfile i dette projekt. De er ikke tilføjet i eksemplet, fordi vi ikke rigtig har brug for dem, fordi Waypoint tager sig af dem for os. Lad os se nærmere på filen waypoint.hclfor at forstå, hvad det vil gø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 bruger Waypoint Cloud Native Buildpacks (CNB) for at bestemme projektets programmeringssprog og oprette et Docker-billede uden at bruge en Dockerfil. I princippet er dette den samme teknologi, som GitLab delvist bruger Auto DevOps ved Auto Build-trinnet. Det er godt at se, at CNCF's CNB vinder mere udbredelse blandt industribrugere.

Når billedet er bygget, vil Waypoint automatisk uploade det til vores AWS ECR-register, så det er klar til levering. Når opbygningen er færdig, bruges leveringstrinnet AWS ECS-tilføjelse at implementere vores applikation til vores AWS-konto.

Fra min bærbare computer er det nemt. Jeg sætter Waypoint ind, som allerede er godkendt på min AWS-konto, og det "virker bare". Men hvad sker der, hvis jeg vil gå ud over min bærbare computer? Eller vil jeg måske automatisere denne implementering som en del af min overordnede CI/CD-pipeline, hvor mine nuværende integrationstests, sikkerhedstests og andre kører? Dette er den del af historien, hvor GitLab CI/CD kommer ind!

NB Hvis du bare planlægger at implementere CI/CD eller ønsker at begynde at anvende bedste praksis for at bygge pipelines, så vær opmærksom på Slurms nye kursus "CI/CD bruger Gitlab CI som eksempel". Den er nu tilgængelig til forudbestillingspris.

Waypoint i GitLab CI/CD

For at orkestrere alt dette i GitLab CI/CD, lad os se på, hvad vi har brug for i vores fil .gitlab-ci.yml:

  • Først og fremmest skal du have et basisbillede for at køre inde i det. Waypoint fungerer på enhver Linux-distribution, det behøver kun Docker, så vi kan køre med et generisk Docker-billede.
  • Dernæst skal du installere Waypoint i dette billede. I fremtiden kan vi indsamle billede meta build og containeriser denne proces for dig selv.
  • Til sidst vil vi køre Waypoint-kommandoerne

Ovenfor er alt, hvad vores pipeline skal bruge for at køre de scripts, der er nødvendige for at udføre implementeringen, men for at implementere til AWS har vi brug for en ting mere: vi skal logge ind på vores AWS-konto. I Waypoint beskrivelse der er planer om autentificering og autorisation. HashiCorp udgav også et imponerende projekt i denne uge Boundary. Men indtil videre kan vi bare selv klare godkendelsen og godkendelsen.

Der er flere muligheder for GitLab CICD-godkendelse i AWS. Den første mulighed er at bruge den indbyggede HashiCorp Vault. Dette er fantastisk, hvis dit team allerede bruger Vault til styring af legitimationsoplysninger. En anden mulighed, der virker, hvis dit team administrerer autorisation ved hjælp af AWS IAM, er at kontrollere, at leveringsopgaver udløses gennem GitLab Runner, autoriseret til at køre installationen gennem IAM. Men hvis du bare ønsker at blive fortrolig med Waypoint og vil gøre det hurtigt, er der en sidste mulighed - tilføj din AWS API og hemmelige nøgler til GitLab CI/CD miljøvariabler AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Sætte det hele sammen

Når vi forstår godkendelsen, kan vi begynde! Vores finale .gitlab-ci.yml ser sådan ud:

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 kan se, at vi starter med et billede docker:latest og indstil flere miljøvariabler, der kræves af Waypoint. I kapitel script vi downloader den seneste version af Waypoint eksekverbar og installerer den i /usr/local/bin. Da vores løber allerede er autoriseret i AWS, løber vi bare waypoint init, build, deploy и release.

Outputtet fra byggeopgaven vil vise os slutpunktet, hvor vi rullede applikationen ud:

Sådan bruger du HashiCorp Waypoint til at samarbejde med GitLab CI/CD

Waypoint en af talrige HashiCorp-løsninger, fungerer godt med GitLab. For eksempel kan vi udover at levere applikationen orkestrere den underliggende infrastruktur vha Terraform på GitLab. For at standardisere SDLC-sikkerhed kan vi også implementere GitLab med Vault til håndtering af hemmeligheder og tokens i CI/CD-pipelines, hvilket giver en holistisk løsning til udviklere og administratorer, der er afhængige af hemmelighedsstyring til udvikling, test og produktionsbrug.

De fælles løsninger udviklet af HashiCorp og GitLab hjælper virksomheder med at finde en bedre måde at udvikle applikationer på ved at levere ensartet styring af leveringspipelines og infrastruktur. Waypoint har taget endnu et skridt i den rigtige retning, og vi ser frem til den fortsatte udvikling af projektet. Du kan finde ud af mere om Waypoint her, også værd at udforske dokumentation и udviklingsplan projekt. Vi har tilføjet den viden, vi har fået GitLab CICD dokumentation. Hvis du vil prøve det selv, kan du se det komplette eksempel på dette depot.

Du kan forstå principperne for CI/CD, mestre alle forviklingerne ved at arbejde med Gitlab CI og begynde at anvende bedste praksis ved at tage et videokursus "CI/CD bruger Gitlab CI som eksempel"... Kom med os!

Kilde: www.habr.com

Tilføj en kommentar