Як выкарыстоўваць HashiCorp Waypoint для сумеснай працы з GitLab CI/CD

Як выкарыстоўваць HashiCorp Waypoint для сумеснай працы з GitLab CI/CD

HashiCorp паказала новы праект кропка на HashiCorp Digital. Ён выкарыстоўвае файл на аснове HCL для апісання зборкі, пастаўкі і выпуску прыкладанняў для розных хмарных платформаў, пачынаючы ад Kubernetes і заканчваючы AWS і Google Cloud Run. Можна ўявіць, што Waypoint - гэта складзеныя разам Terraform і Vagrant для апісання працэсу зборкі, пастаўкі і выпуску вашых прыкладанняў.

Не змяняючы сабе, HashiCorp выпусціла Waypoint з адчыненым зыходным кодам, таксама да яго прыкладаецца мноства прыкладаў. Узровень аркестратара застаецца за вамі, Waypoint пастаўляецца ў выглядзе выкананага файла, які вы можаце запусціць наўпрост на вашым наўтбуку або з абранай вамі прылады аркестрацыі CI/CD. Мэта для разгортвання прыкладанняў таксама выбіраецца вамі, паколькі Waypoint падтрымлівае Kubernetes, Docker, Google Cloud Run, AWS ECS і іншыя.

Пачытаўшы улётную дакументацыю і шыкоўныя прыклады прыкладанняў, прадстаўленыя HashiCorp, мы вырашылі зірнуць бліжэй на аркестроўку Waypoint з дапамогай GitLab CI/CD. Каб гэта зрабіць, мы возьмем простае прыкладанне Node.js, якое запускаецца на AWS ECS, з рэпазітара прыкладаў.

Пасля кланавання рэпазітара паглядзім структуру прыкладання, які адлюстроўвае адну старонку:

Як выкарыстоўваць HashiCorp Waypoint для сумеснай працы з GitLab CI/CD

Як вы маглі заўважыць, у гэтым праекце няма Dockerfile. Яны не дададзены ў прыкладзе, паколькі яны ў прынцыпе і не патрэбны нам, бо Waypoint паклапоціцца пра іх за нас. Давайце разгледзім падрабязней файл waypoint.hcl, Каб зразумець, што ён будзе рабіць:

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

На этапе зборкі Waypoint выкарыстоўвае Cloud Native Buildpacks (CNB), каб вызначыць мову праграмавання праекта і стварыць вобраз для Docker без выкарыстання Dockerfile. У прынцыпе, гэта тая ж самая тэхналогія, якая выкарыстоўваецца GitLab у частцы Auto DevOps на кроку Auto Build. Прыемна бачыць, што CNB ад CNCF атрымлівае ўсё большае распаўсюджванне ў карыстальнікаў з галіны.

Як толькі выява сабраны, Waypoint аўтаматычна выгрузіць яго ў нашу AWS ECR registry, каб ён быў гатовы да пастаўкі. Па заканчэнні зборкі крок пастаўкі выкарыстоўвае дадатак AWS ECS для разгортвання нашага прыкладання ў наш уліковы запіс AWS.

З майго наўтбука - усё проста. Я стаўлю Waypoint, які ўжо аўтэнтыфікаваны ў маім уліковым запісе AWS, і яно "проста працуе". Але што будзе, калі я захачу выйсці за межы майго наўтбука? Ці раптам я хачу аўтаматызаваць гэтае разгортванне ў выглядзе часткі майго агульнага канвеера CI/CD, дзе запускаюцца мае бягучыя інтэграцыйныя тэсты, тэсты бяспекі і іншыя? Гэта тая частка аповяду, дзе з'яўляецца GitLab CI/CD!

NB Калі вы яшчэ толькі плануеце ўкараненне CI/CD ці жадаеце пачаць ужываць лепшыя практыкі пабудовы пайплайнаў, звернеце ўвагу на новы курс Слёрма "CI/CD на прыкладзе Gitlab CI". Цяпер ён даступны па кошце папярэдняга заказу.

Waypoint у GitLab CI/CD

Для аркестроўкі ўсяго гэтага ў GitLab CI/CD давайце паглядзі, што нам спатрэбіцца ў нашым файле .gitlab-ci.yml:

  • У першую чаргу, патрэбен базавы вобраз для запуску ўнутры яго. Waypoint працуе на любым дыстрыбутыве Linux, яму патрэбен толькі Docker, так што мы можа запускацца з generic выявы Docker.
  • Далей трэба ўсталяваць Waypoint у гэтую выяву. У будучыні мы можам сабраць выява meta build і кантэйнерызаваць гэты працэс для сябе.
  • Нарэшце мы запусцім каманды Waypoint

Вышэй распісана ўсё, што спатрэбіцца нашаму канвееру для запуску патрэбных для выканання разгортвання скрыптоў, але для разгортвання ў AWS нам спатрэбіцца яшчэ адна рэч: мы павінны аўтарызавацца ў нашым уліковым запісе AWS. У апісанні Waypoint ёсць планы аб аўтэнтыфікацыі і аўтарызацыі. HashiCorp на гэтым тыдні таксама выпусціла уражлівы праект Мяжа. Але на дадзены момант мы можам проста ўзяць і самастойна апрацаваць аўтэнтыфікацыю і аўтарызацыю.

Для аўтэнтыфікацыі GitLab CICD у AWS ёсць некалькі варыянтаў. Першы варыянт - выкарыстанне убудаванага Сховішча HashiCorp. Ён падыдзе, калі ваша каманда ўжо карыстаецца Vault для кіравання уліковымі дадзенымі. Яшчэ адзін спосаб, які падыходзіць, калі ваша каманда кіруе аўтарызацыяй з дапамогай AWS IAM - праверце, што задачы пастаўкі запускаюцца праз GitLab Runner, аўтарызаваны для запуску разгортвання праз IAM. Але калі вы проста хочаце азнаёміцца ​​з Waypoint і хочаце гэта зрабіць барзджэй, ёсць апошні варыянт - дадаць вашыя ключы AWS API і Secret у зменныя асяроддзі GitLab CI/CD AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Збіраны ўсе разам

Як толькі мы разабраліся з аўтэнтыфікацыяй, можна пачынаць! Наш канчатковы .gitlab-ci.yml выглядае так:

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

Вы бачыце, што мы пачынаем з выявы docker:latest і ўсталёўваны некалькі зменных асяроддзі, патрабаваных для Waypoint. У раздзеле script мы спампоўваем апошнюю версію выкананага файла Waypoint і ставім яго ў /usr/local/bin. Паколькі наш runner ужо аўтарызаваны ў AWS, далей мы проста запускаем waypoint init, build, deploy и release.

Выснова задачы па зборцы пакажа нам endpoint, куды мы раскацілі прыкладанне:

Як выкарыстоўваць HashiCorp Waypoint для сумеснай працы з GitLab CI/CD

Waypoint адно з шматлікіх рашэнняў HashiCorp, выдатна якія працуюць з GitLab. Напрыклад, у дадатак да пастаўкі прыкладання мы можам аркестраваць ніжэйлеглую інфраструктуру з дапамогай Terraform у GitLab. Для стандартызацыі бяспекі SDLC, мы можам таксама ўкараніць GitLab з Vault для кіравання сакрэтамі і токенамі ў канвеерах CI/CD, падаючы цэласнае рашэнне для распрацоўнікаў і адміністратараў, якія належаць на кіраванне сакрэтамі пры распрацоўцы, тэставанні, а таксама прамысловым выкарыстанні.

Сумесныя рашэнні, распрацаваныя HashiCorp і GitLab, дапамагаюць кампаніям знайсці лепшы спосаб распрацоўкі прыкладанняў, забяспечваючы ўзгодненае кіраванне патокамі пастаўкі і інфраструктурай. Waypoint зрабілі яшчэ адзін крок у правільным кірунку, і мы з нецярпеннем чакаем далейшага развіцця праекту. Вы можаце даведацца больш пра Waypoint тут, таксама варта вывучыць дакументацыю и план развіцця праекту. Мы дадалі атрыманыя намі веды ў дакументацыю GitLab CICD. Калі вы жадаеце паспрабаваць усё ў працы самастойна, можаце ўзяць поўны працаздольны прыклад у гэтым рэпазітары.

Зразумець прынцыпы CI/CD, асвоіць усе тонкасці працы з Gitlab CI і пачаць прымяняць лепшыя практыкі можна, прайшоўшы відэакурс "CI/CD на прыкладзе Gitlab CI". Далучайцеся!

Крыніца: habr.com

Дадаць каментар