Hvordan bruge HashiCorp Waypoint til samarbejde med GitLab CI/CD

Hvordan bruge HashiCorp Waypoint til samarbejde med GitLab CI/CD

HashiCorp har præsenteret et nyt projekt Waypoint og få en fungerende kommando. HashiCorp Digital. Det bruger en HCL-baseret fil til at beskrive bygning, levering og frigivelse af applikationer til forskellige cloud-platforme, fra Kubernetes til AWS og Google Cloud Run. Waypoint kan tænkes som en kombination af Terraform og Vagrant til at beskrive processen for bygning, levering og frigivelse af dine applikationer.

Uden at ændre sig selv, har HashiCorp udgivet Waypoint med open source, og der følger en række eksempler med. Niveauet for orkestratoren er op til dig, Waypoint leveres som en eksekverbar fil, som du kan køre direkte på din bærbare computer eller fra det CI/CD-værktøj, du vælger. Målet for udrulning af applikationer vælges også af dig, da Waypoint understøtter Kubernetes, Docker, Google Cloud Run, AWS ECS og andre.

Efter at have læst de fantastiske dokumentationen og imponerende eksempler applikationer, der er tilgængelige fra HashiCorp, besluttede vi at tage et nærmere kig på orkestrationen af Waypoint ved hjælp af GitLab CI/CD. For at gøre dette vil vi tage en simpel Node.js-applikation, der kører på AWS ECS, fra eksempelsamlingen.

Efter at have klonet repositoryet vil vi se på strukturen af applikationen, der viser én side:

Hvordan bruge HashiCorp Waypoint til samarbejde med GitLab CI/CD

Som du måske har bemærket, er der ikke noget Dockerfile i dette projekt. De er ikke tilføjet i eksemplet, da de ikke er nødvendige for os, da Waypoint vil tage sig af dem for os. Lad os se nærmere på filen waypoint.hcl, for at forstå, hvad den 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"
    }
  }
}

På byggetrinnet bruger Waypoint Cloud Native Buildpacks (CNB), for at bestemme programmeringssproget for projektet og oprette et Docker-billede uden brug af Dockerfile. Grundlæggende er det den samme teknologi, som GitLab bruger til som standard. ved trin Auto Build. Det er dejligt at se, at CNB fra CNCF får mere og mere udbredelse blandt branchens brugere.

Så snart billedet er bygget, vil Waypoint automatisk uploade det til vores AWS ECR-register, så det er klart til levering. Efter bygningen bruger leveringsfasen AWS ECS-udvidelsen til at udrul vores applikation i vores AWS-konto.

Fra min bærbare computer er alt enkelt. Jeg installerer Waypoint, som allerede er godkendt i min AWS-konto, og det "bare fungerer". Men hvad nu hvis jeg ønsker at gå ud over min bærbare computer? Eller hvis jeg pludselig vil automatisere denne implementering som en del af min samlede CI/CD-pipeline, hvor mine nuværende integrationstests, sikkerhedstests og andre kører? Det er her GitLab CI/CD kommer ind i billedet!

N.B. Hvis du lige planlægger implementeringen af CI/CD eller ønsker at begynde at anvende bedste praksis for opbygning af pipelines, tjek den nye Sløyrm kursus. "CI/CD med eksempel på GitLab CI". Det er nu tilgængeligt til en 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 har vi brug for et grundlæggende billede til at køre inde i. Waypoint fungerer på enhver Linux-distribution, den kræver kun Docker, så vi kan starte med et generisk Docker-billede.
  • Dernæst skal vi installere Waypoint i dette billede. I fremtiden kan vi samle meta build billede og containerisere denne proces for os selv.
  • Endelig vil vi køre Waypoint-kommandoer.

Ovenfor er alt beskrevet, hvad vores pipeline har brug for for at køre de nødvendige scripts til at udføre implementeringen, men til implementering i AWS har vi brug for en ting mere: vi skal autorisere os i vores AWS-konto. I Waypoint-beskrivelsen er der planer for autentificering og autorisering. HashiCorp har også frigivet et imponerende projekt Boundary. Men indtil videre kan vi bare tage og håndtere autentificeringen og autoriseringen selv.

Til autentificering af GitLab CICD i AWS er der flere muligheder. Den første mulighed er at bruge den indbyggede HashiCorp Vault. Det vil være passende, hvis dit team allerede bruger Vault til at administrere legitimationsoplysninger. En anden metode, der passer, hvis dit team håndterer autorisering gennem AWS IAM - tjek at leveringsopgaverne kører gennem GitLab Runner, autoriseret til at udføre implementeringer gennem IAM. Men hvis du blot vil lære Waypoint at kende og vil gøre det hurtigere, er der en sidste mulighed - at tilføje dine AWS API-nøgler og hemmelige nøgler i GitLab CI/CD miljøvariabler AWS_ACCESS_KEY_ID og AWS_SECRET_ACCESS_KEY.

Samler det hele

Når vi har styr på autentificeringen, kan vi begynde! Vores endelige .gitlab-ci.yml ser sådan ud:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Definér miljøvariabler, f.eks. `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 billedet docker:latest og sætter nogle miljøvariabler, som Waypoint kræver. I sektionen script henter vi den seneste version af Waypoint eksekverbar fil og installerer den i /usr/local/bin. Da vores runner allerede er godkendt i AWS, kører vi blot waypoint init, build, deploy og release.

Udgangen fra build-opgaven vil vise os endpointet, hvor vi har implementeret applikationen:

Hvordan bruge HashiCorp Waypoint til samarbejde med GitLab CI/CD

Waypoint er en af mange løsninger fra HashiCorp,som fungerer glimrende sammen med GitLab. For eksempel kan vi, ud over implementeringen af applikationen, orkestrere den underliggende infrastruktur ved hjælp af Terraform i GitLab.For standardisering af sikkerhed i SDLC kan vi også integrere GitLab med Vault til at håndtere hemmeligheder og tokens i CI/CD pipelines, hvilket giver en samlet løsning for udviklere og administratorer, der er afhængige af hemmelighedshåndtering under udvikling, test og produktion.

Samarbejds løsninger udviklet af HashiCorp og GitLab hjælper virksomheder med at finde den bedste måde at udvikle applikationer på, hvilket sikrer konsekvent management af leveringsstreams og infrastruktur. Waypoint tog endnu et skridt i den rigtige retning, og vi ser frem til yderligere udvikling af projektet. Du kan læse mere om Waypoint her, det er også værd at undersøge dokumentationen og udviklingsplan projektet. Vi har tilføjet den viden, vi har opnået, til GitLab CICD dokumentationen.Hvis du vil prøve alt i praksis selv, kan du finde et komplet fungerende eksempel i denne repository..

For at forstå principperne bag CI/CD, mestre alle nuancerne ved at arbejde med GitLab CI og begynde at anvende bedste praksis, kan du tage videokurset "CI/CD med eksempel på GitLab CI". Kom med!

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster