Як выкарыстоўваць 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, з рэпазітара прыкладаў.
Пасля кланавання рэпазітара паглядзім структуру прыкладання, які адлюстроўвае адну старонку:
Як вы маглі заўважыць, у гэтым праекце няма 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/CDAWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.
Збіраны ўсе разам
Як толькі мы разабраліся з аўтэнтыфікацыяй, можна пачынаць! Наш канчатковы .gitlab-ci.yml выглядае так:
Вы бачыце, што мы пачынаем з выявы docker:latest і ўсталёўваны некалькі зменных асяроддзі, патрабаваных для Waypoint. У раздзеле script мы спампоўваем апошнюю версію выкананага файла Waypoint і ставім яго ў /usr/local/bin. Паколькі наш runner ужо аўтарызаваны ў AWS, далей мы проста запускаем waypoint init, build, deploy и release.
Выснова задачы па зборцы пакажа нам endpoint, куды мы раскацілі прыкладанне:
Waypoint адно з шматлікіх рашэнняў HashiCorp, выдатна якія працуюць з GitLab. Напрыклад, у дадатак да пастаўкі прыкладання мы можам аркестраваць ніжэйлеглую інфраструктуру з дапамогай Terraform у GitLab. Для стандартызацыі бяспекі SDLC, мы можам таксама ўкараніць GitLab з Vault для кіравання сакрэтамі і токенамі ў канвеерах CI/CD, падаючы цэласнае рашэнне для распрацоўнікаў і адміністратараў, якія належаць на кіраванне сакрэтамі пры распрацоўцы, тэставанні, а таксама прамысловым выкарыстанні.
Сумесныя рашэнні, распрацаваныя HashiCorp і GitLab, дапамагаюць кампаніям знайсці лепшы спосаб распрацоўкі прыкладанняў, забяспечваючы ўзгодненае кіраванне патокамі пастаўкі і інфраструктурай. Waypoint зрабілі яшчэ адзін крок у правільным кірунку, і мы з нецярпеннем чакаем далейшага развіцця праекту. Вы можаце даведацца больш пра Waypoint тут, таксама варта вывучыць дакументацыю и план развіцця праекту. Мы дадалі атрыманыя намі веды ў дакументацыю GitLab CICD. Калі вы жадаеце паспрабаваць усё ў працы самастойна, можаце ўзяць поўны працаздольны прыклад у гэтым рэпазітары.
Зразумець прынцыпы CI/CD, асвоіць усе тонкасці працы з Gitlab CI і пачаць прымяняць лепшыя практыкі можна, прайшоўшы відэакурс "CI/CD на прыкладзе Gitlab CI". Далучайцеся!