Paano gamitin ang HashiCorp Waypoint para Makipagtulungan sa GitLab CI/CD

Paano gamitin ang HashiCorp Waypoint para Makipagtulungan sa GitLab CI/CD

Nagpakita ng bagong proyekto ang HashiCorp Waypoint sa HashiCorp Digital. Gumagamit ito ng HCL-based na file upang ilarawan ang pagbuo, paghahatid, at paglabas ng mga application para sa iba't ibang cloud platform, mula sa Kubernetes hanggang AWS hanggang sa Google Cloud Run. Maaari mong isipin ang Waypoint bilang pinagsamang Terraform at Vagrant upang ilarawan ang proseso ng pagbuo, pagpapadala, at pag-release ng iyong mga application.

Totoo sa anyo, ang HashiCorp ay naglabas ng Waypoint bilang open source at may kasamang maraming halimbawa. Nasa sa iyo ang layer ng orchestrator, ang Waypoint ay dumating bilang isang executable na maaari mong patakbuhin nang direkta sa iyong laptop o mula sa iyong napiling tool sa orkestrasyon ng CI/CD. Nasa sa iyo rin ang target para sa pag-deploy ng iyong mga application, dahil sinusuportahan ng Waypoint ang Kubernetes, Docker, Google Cloud Run, AWS ECS, at higit pa.

Matapos basahin ang kahanga-hangang dokumentasyon at ang pinaka maluho mga halimbawa mga application na ibinigay ng HashiCorp, nagpasya kaming tingnang mabuti ang Waypoint orchestration gamit ang GitLab CI/CD. Upang gawin ito, kukuha kami ng simpleng Node.js application na tumatakbo sa AWS ECS mula sa repository ng mga halimbawa.

Pagkatapos i-clone ang repositoryo, tingnan natin ang istraktura ng application na nagpapakita ng isang pahina:

Paano gamitin ang HashiCorp Waypoint para Makipagtulungan sa GitLab CI/CD

Tulad ng maaaring napansin mo, ang proyektong ito ay walang Dockerfile. Hindi sila idinagdag sa halimbawa, dahil sa prinsipyo hindi natin sila kailangan, dahil ang Waypoint ang bahala sa kanila para sa atin. Tingnan natin ang file waypoint.hclupang maunawaan kung ano ang gagawin nito:

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

Sa yugto ng pagbuo, gumagamit ang Waypoint ng Cloud Native Buildpacks (CNB) upang matukoy ang programming language ng proyekto at lumikha ng imahe ng Docker nang hindi gumagamit ng Dockerfile. Sa prinsipyo, ito ang parehong teknolohiya na ginagamit ng GitLab sa bahagi Auto DevOps sa hakbang na Auto Build. Nakatutuwang makita na ang CNB ng CNCF ay nakakakuha ng higit na pag-aampon sa mga gumagamit ng industriya.

Kapag nabuo na ang imahe, awtomatikong ia-upload ito ng Waypoint sa aming AWS ECR registry para handa na itong maihatid. Kapag nakumpleto na ang pagbuo, ginagamit ang hakbang ng paghahatid AWS ECS add-on upang i-deploy ang aming application sa aming AWS account.

Mula sa aking laptop - lahat ay simple. Naglagay ako ng Waypoint na napatotohanan na sa aking AWS account at "gumagana lang" ito. Ngunit ano ang mangyayari kung gusto kong lumampas sa aking laptop? O biglang gusto kong i-automate ang deployment na ito bilang bahagi ng aking pangkalahatang pipeline ng CI/CD, kung saan pinapatakbo ang aking mga patuloy na pagsusuri sa pagsasama, mga pagsubok sa seguridad, at iba pa? Ito ang bahagi ng kwento kung saan papasok ang GitLab CI/CD!

NB Kung nagpaplano ka lang na ipatupad ang CI/CD o gusto mong simulan ang paglalapat ng pinakamahuhusay na kagawian para sa pagbuo ng mga pipeline, bigyang pansin ang bagong kurso ng Slurm "CI/CD gamit ang Gitlab CI bilang isang halimbawa". Ito ay magagamit na ngayon sa pre-order na presyo.

Waypoint sa GitLab CI/CD

Upang ayusin ang lahat ng ito sa GitLab CI/CD, tingnan natin kung ano ang kailangan natin sa ating file .gitlab-ci.yml:

  • Una sa lahat, kailangan mo ng isang batayang imahe upang tumakbo sa loob nito. Gumagana ang waypoint sa anumang pamamahagi ng Linux, kailangan lang nito ng Docker, para makatakbo tayo gamit ang isang generic na imahe ng Docker.
  • Susunod na kailangan mong i-install ang Waypoint sa larawang ito. Sa hinaharap maaari tayong mangolekta pagbuo ng meta ng imahe at ilagay sa lalagyan ang prosesong ito para sa iyong sarili.
  • Sa wakas ay tatakbo tayo sa mga utos ng Waypoint

Binabalangkas sa itaas ang lahat ng kakailanganin ng aming pipeline para patakbuhin ang mga script na kailangan para makumpleto ang deployment, ngunit para ma-deploy sa AWS kakailanganin namin ng isa pang bagay: dapat naka-log in kami sa aming AWS account. Sa paglalarawan ng Waypoint may mga plano tungkol sa pagpapatunay at awtorisasyon. Ang HashiCorp ay naglabas din ng isang kahanga-hangang proyekto ngayong linggo Hangganan. Ngunit sa ngayon, maaari na lamang nating hawakan ang pagpapatunay at awtorisasyon sa ating sarili.

Mayroong ilang mga opsyon para sa GitLab CICD authentication sa AWS. Ang unang pagpipilian ay ang paggamit ng built-in HashiCorp Vault. Mahusay ito kung gumagamit na ang iyong team ng Vault para sa pamamahala ng kredensyal. Ang isa pang opsyon na gumagana kung ang iyong team ay namamahala ng awtorisasyon gamit ang AWS IAM ay ang suriin kung ang mga gawain sa paghahatid ay na-trigger sa pamamagitan ng Runner ng GitLab, awtorisadong patakbuhin ang deployment sa pamamagitan ng IAM. Ngunit kung gusto mo lang maging pamilyar sa Waypoint at gusto mong gawin ito nang mabilis, mayroong isang huling opsyon - idagdag ang iyong AWS API at mga Secret key sa Mga variable ng kapaligiran ng GitLab CI/CD AWS_ACCESS_KEY_ID ΠΈ AWS_SECRET_ACCESS_KEY.

Pinagsama ang lahat

Kapag naunawaan na natin ang pagpapatunay, maaari na tayong magsimula! Ang aming pangwakas .gitlab-ci.yml ganito ang hitsura nito:

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

Nakikita mo na nagsisimula tayo sa isang imahe docker:latest at magtakda ng ilang mga variable ng kapaligiran na kinakailangan ng Waypoint. Sa kabanata script dina-download namin ang pinakabagong bersyon ng Waypoint executable at i-install ito /usr/local/bin. Dahil ang aming runner ay awtorisado na sa AWS, sa susunod ay tatakbo na lang kami waypoint init, build, deploy ΠΈ release.

Ipapakita sa amin ng output ng build task ang endpoint kung saan namin inilunsad ang application:

Paano gamitin ang HashiCorp Waypoint para Makipagtulungan sa GitLab CI/CD

Waypoint isa sa maraming solusyon sa HashiCorp, gumana nang mahusay sa GitLab. Halimbawa, bilang karagdagan sa paghahatid ng aplikasyon, maaari naming i-orkestrate ang pinagbabatayan na imprastraktura gamit Terraform sa GitLab. Upang i-standardize ang seguridad ng SDLC, maaari rin nating ipatupad GitLab kasama ang Vault para sa pamamahala ng mga lihim at token sa mga pipeline ng CI/CD, na nagbibigay ng holistic na solusyon para sa mga developer at administrator na umaasa sa pamamahala ng mga lihim para sa pagbuo, pagsubok, at paggamit ng produksyon.

Ang mga pinagsamang solusyon na binuo ng HashiCorp at GitLab ay tumutulong sa mga kumpanya na makahanap ng isang mas mahusay na paraan upang bumuo ng mga application sa pamamagitan ng pagbibigay ng pare-parehong pamamahala ng mga pipeline at imprastraktura ng paghahatid. Ang Waypoint ay gumawa ng isa pang hakbang sa tamang direksyon at inaasahan namin ang patuloy na pagbuo ng proyekto. Maaari mong malaman ang higit pa tungkol sa Waypoint dito, sulit ding tuklasin dokumentasyon ΠΈ plano sa pagpapaunlad proyekto. Nadagdagan namin ang kaalaman na aming natamo Dokumentasyon ng GitLab CICD. Kung gusto mong subukan ang lahat ng iyong sarili, maaari kang kumuha ng kumpletong halimbawa ng gumagana imbakan na ito.

Maiintindihan mo ang mga prinsipyo ng CI/CD, makabisado ang lahat ng intricacies ng pagtatrabaho sa Gitlab CI at simulan ang paglalapat ng pinakamahuhusay na kagawian sa pamamagitan ng pagkuha ng video course "CI/CD gamit ang Gitlab CI bilang isang halimbawa"... Sumali ka!

Pinagmulan: www.habr.com

Magdagdag ng komento