Hur man anvÀnder HashiCorp Waypoint för samarbete med GitLab CI/CD

Hur man anvÀnder HashiCorp Waypoint för samarbete med GitLab CI/CD

HashiCorp har visat upp ett nytt projekt Waypoint till HashiCorp Digital. Det anvÀnder en HCL-baserad fil för att beskriva byggandet, implementeringen och lanseringen av applikationer för olika molnplattformar, frÄn Kubernetes till AWS och Google Cloud Run. Man kan tÀnka sig att Waypoint Àr en sammanslagning av Terraform och Vagrant för att beskriva processen för byggande, leverans och lansering av dina applikationer.

Utan att förÀndra sig sjÀlv har HashiCorp slÀppt Waypoint som öppen kÀllkod, och det kommer Àven med mÄnga exempel. NivÄn pÄ orkestratorn ligger i dina hÀnder, Waypoint levereras som en körbar fil som du kan köra direkt pÄ din laptop eller frÄn det CI/CD-verktyg du vÀljer. MÄlet för applikationens distribution vÀljer du ocksÄ, eftersom Waypoint stöder Kubernetes, Docker, Google Cloud Run, AWS ECS och fler.

Efter att ha lÀst de fantastiska dokumentationen och mest imponerande exempel applikationerna som tillhandahÄlls av HashiCorp ville vi ta en nÀrmare titt pÄ orkestreringen av Waypoint med GitLab CI/CD. För att göra detta tar vi en enkel Node.js-applikation som körs pÄ AWS ECS frÄn exempelrepo.

Efter att ha klonat repo kommer vi att se strukturen av applikationen som visar en sida:

Hur man anvÀnder HashiCorp Waypoint för samarbete med GitLab CI/CD

Som du kanske har mÀrkt saknas Dockerfile i det hÀr projektet. De har inte lagts till i exemplet eftersom vi i princip inte behöver dem, eftersom Waypoint kommer att ta hand om dem Ät oss. LÄt oss ta en nÀrmare titt pÄ filen waypoint.hcl, för att förstÄ vad den kommer att göra:

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 byggsteget anvÀnder Waypoint Cloud Native Buildpacks (CNB), för att bestÀmma programmeringssprÄket för projektet och skapa en Docker-image utan anvÀndning av Dockerfile. I grund och botten Àr det samma teknik som anvÀnds av GitLab under Auto DevOps Auto Build-steget. Det Àr trevligt att se att CNB frÄn CNCF fÄr allt fler anvÀndare inom branschen.

NÀr bilden har byggts kommer Waypoint automatiskt att ladda upp den till vÄr AWS ECR-register sÄ att den Àr redo för distribution. NÀr byggsteget Àr klart anvÀnder leveranssteget AWS ECS-tillÀgget för att distribuera vÄr applikation till vÄrt AWS-konto.

FrÄn min bÀrbara dator Àr det enkelt. Jag installerar Waypoint, som redan Àr autentiserat i mitt AWS-konto, och det "bara fungerar". Men vad hÀnder om jag vill gÄ utanför min bÀrbara dator? Eller plötsligt vill jag automatisera denna distribution som en del av min övergripande CI/CD-pipeline, dÀr mina aktuella integrationstester, sÀkerhetstester och andra körs? Det Àr hÀr GitLab CI/CD kommer in i bilden!

N.B. Om du bara planerar att implementera CI/CD eller vill börja anvÀnda bÀsta praxis för att bygga pipelines, kolla in den nya kursen frÄn Slörma. "CI/CD med fokus pÄ GitLab CI". Den Àr nu tillgÀnglig till ett förhandsbokningspris.

Waypoint i GitLab CI/CD

För att orkestrera allt detta i GitLab CI/CD, lÄt oss se vad vi behöver i vÄr fil. .gitlab-ci.yml:

  • Först och frĂ€mst behövs en basbild för att köra i den. Waypoint fungerar pĂ„ alla Linux-distributioner, den behöver bara Docker, sĂ„ vi kan köra med en generell Docker-bild.
  • DĂ€refter mĂ„ste vi installera Waypoint i denna bild. I framtiden kan vi sammanstĂ€lla en meta build-bild och containerisera denna process för oss sjĂ€lva.
  • Till slut kommer vi att köra Waypoint-kommandona.

Ovan har vi beskrivit allt som vÄr pipeline behöver för att köra de skript som krÀvs för distributionen, men för distribution till AWS behöver vi en sak till: vi mÄste autentisera oss pÄ vÄrt AWS-konto. I beskrivningen av Waypoint finns planer för autentisering och auktorisering. HashiCorp lanserade ocksÄ ett imponerande projekt den hÀr veckan, Boundary. Men just nu kan vi bara ta hand om autentisering och auktorisering sjÀlva.

För att autentisera GitLab CI/CD med AWS finns det flera alternativ. Det första alternativet Àr att anvÀnda den inbyggda HashiCorp Vault. Det passar om ditt team redan anvÀnder Vault för att hantera autentiseringar. Ett annat sÀtt, som Àr lÀmpligt om ditt team hanterar auktorisering med AWS IAM, Àr att kontrollera att distributionsjobb körs genom GitLab Runner, auktoriserad för att initiera distribution via IAM. Men om du bara vill bekanta dig med Waypoint och vill göra det snabbt, finns det ett sista alternativ - att lÀgga till dina AWS API-nycklar och hemliga nycklar i miljövariablerna i GitLab CI/CD. AWS_ACCESS_KEY_ID och AWS_SECRET_ACCESS_KEY.

Sammanfatta allt

SÄ snart vi har hanterat autentiseringen kan vi börja! VÄr slutgiltiga .gitlab-ci.yml ser ut sÄ hÀr:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Definiera miljövariabler, t.ex. `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 att vi börjar med bilden docker:latest och sÀtter nÄgra miljövariabler som krÀvs för Waypoint. I avsnittet script laddar vi ner den senaste versionen av Waypoints körbara fil och installerar den i /usr/local/bin. Eftersom vÄr runner redan Àr autentiserad i AWS, kör vi bara waypoint init, build, deploy och release.

Bygguppgiftens utdata kommer att visa oss endpointen dit vi distribuerade applikationen:

Hur man anvÀnder HashiCorp Waypoint för samarbete med GitLab CI/CD

Waypoint Àr en av mÄnga lösningar frÄn HashiCorp, som fungerar utmÀrkt med GitLab. Till exempel kan vi förutom distribution av applikationer orkestrera underliggande infrastruktur med hjÀlp av Terraform i GitLab. För att standardisera sÀkerheten i SDLC kan vi ocksÄ integrera GitLab med Vault för hantering av hemligheter och token i CI/CD-pipelines, vilket ger en heltÀckande lösning för utvecklare och administratörer som Àr beroende av hemlighetshantering vid utveckling, testning och produktion.

De gemensamma lösningarna som utvecklats av HashiCorp och GitLab hjÀlper företag att hitta det bÀsta sÀttet att utveckla applikationer, vilket ger konsekvent hantering av leveransflöden och infrastruktur. Waypoint har tagit ytterligare ett steg i rÀtt riktning, och vi ser fram emot framtida utvecklingar av projektet. Du kan lÀsa mer om Waypoint hÀr, det Àr ocksÄ vÀrt att titta pÄ dokumentationen och utvecklingsplanen för projektet. Vi har lagt till den kunskap vi har fÄtt i GitLab CICD-dokumentationen. Om du vill prova allt sjÀlv kan du ta ett fullt fungerande exempel frÄn detta repository.

För att förstÄ principerna bakom CI/CD, behÀrska alla detaljer om arbetet med GitLab CI och börja tillÀmpa bÀsta praxis kan du gÄ en videokurs "CI/CD med fokus pÄ GitLab CI". GÄ med oss!

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster