GitLab CI/CD bilan hamkorlik qilish uchun HashiCorp Waypoint-dan qanday foydalanish kerak

GitLab CI/CD bilan hamkorlik qilish uchun HashiCorp Waypoint-dan qanday foydalanish kerak

HashiCorp yangi loyihani namoyish etdi Yo'nalish nuqtasi haqida HashiCorp Digital. U Kubernetesdan AWS va Google Cloud Rungacha boʻlgan turli bulutli platformalar uchun ilovalarni yaratish, joʻnatish va chiqarishni tavsiflash uchun HCL-ga asoslangan fayldan foydalanadi. Yo'l nuqtasini Terraform va Vagrant ilovalaringizni yaratish, jo'natish va chiqarish jarayonini tasvirlash uchun birlashtirilgan deb o'ylab ko'ring.

To'g'ri, HashiCorp Waypoint-ni ochiq manba sifatida chiqardi va u juda ko'p misollar bilan birga keladi. Orkestratorning darajasi sizga bog'liq, Waypoint to'g'ridan-to'g'ri noutbukda yoki o'zingiz tanlagan CI/CD orkestrlash vositasidan ishga tushirishingiz mumkin bo'lgan bajariladigan dastur sifatida keladi. Ilovani joylashtirish maqsadi ham sizga bog'liq, chunki Waypoint Kubernetes, Docker, Google Cloud Run, AWS ECS va boshqalarni qo'llab-quvvatlaydi.

Ajoyib o'qigandan keyin hujjatlar va eng zo'r misollar HashiCorp tomonidan taqdim etilgan ilovalarda biz GitLab CI/CD bilan Waypoint orkestratsiyasini batafsil ko'rib chiqishga qaror qildik. Buning uchun biz namunaviy ombordan AWS ECS da ishlaydigan oddiy Node.js ilovasini olamiz.

Repozitariyni klonlashdan so'ng, bitta sahifani ko'rsatadigan dastur tuzilishini ko'rib chiqaylik:

GitLab CI/CD bilan hamkorlik qilish uchun HashiCorp Waypoint-dan qanday foydalanish kerak

Siz sezganingizdek, ushbu loyihada Dockerfile yo'q. Ular misolga qo'shilmagan, chunki bizga ularga kerak emas, chunki Waypoint biz uchun ularga g'amxo'rlik qiladi. Keling, faylni batafsil ko'rib chiqaylik waypoint.hclnima qilishini tushunish uchun:

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

Qurilish bosqichida Waypoint Cloud Native Buildpacks-dan foydalanadi (CNB) loyihaning dasturlash tilini aniqlash va Docker faylidan foydalanmasdan Docker tasvirini yaratish. Aslida, bu GitLab tomonidan qisman qo'llaniladigan bir xil texnologiya Avtomatik DevOps Avtomatik qurish bosqichida. CNCF ning CNB sanoat foydalanuvchilari orasida tobora ko'proq qabul qilinayotganini ko'rish juda yaxshi.

Tasvir yaratilgandan so'ng, Waypoint uni jo'natishga tayyor bo'lishi uchun avtomatik ravishda AWS ECR reestrimizga yuklaydi. Yig'ish oxirida yetkazib berish bosqichidan foydalaniladi AWS ECS qo'shimchasi ilovamizni AWS hisobimizga joylashtirish uchun.

Mening noutbukimdan bu juda oson. Men AWS hisobimda autentifikatsiya qilingan Waypoint-ni qo'ydim va u "shunchaki ishlaydi". Ammo noutbukimdan tashqariga chiqmoqchi bo'lsam nima bo'ladi? Yoki joriy integratsiya testlari, xavfsizlik testlari va boshqalar ishlaydigan umumiy CI/CD quvur liniyasining bir qismi sifatida ushbu joylashtirishni avtomatlashtirishni xohlaymanmi? Bu GitLab CI/CD kiradigan hikoyaning bir qismi!

NB Agar siz CI / CD-ni joriy qilishni rejalashtirmoqchi bo'lsangiz yoki quvurlarni qurish bo'yicha eng yaxshi tajribalarni qo'llashni boshlamoqchi bo'lsangiz, yangi Slurm kursiga e'tibor bering. "Gitlab CI misolida CI/CD". Endi u oldindan buyurtma qilingan narxda mavjud.

GitLab CI/CD-dagi yo'l nuqtasi

Bularning barchasini GitLab CI/CD-da tartibga solish uchun faylimizda nima kerakligini ko'rib chiqamiz. .gitlab-ci.yml:

  • Avvalo, uning ichida ishlash uchun sizga asosiy tasvir kerak. Waypoint har qanday Linux distributivida ishlaydi, unga faqat Docker kerak, shuning uchun biz umumiy Docker tasviri bilan ishlay olamiz.
  • Keyinchalik, ushbu rasmga Waypoint-ni o'rnatishingiz kerak. Kelajakda biz yig'ishimiz mumkin meta qurish tasviri va bu jarayonni o'zingiz uchun konteynerga aylantiring.
  • Nihoyat biz Waypoint buyruqlarini ishga tushiramiz

Yuqorida bizning quvur liniyasi joylashtirishni amalga oshirish uchun zarur bo'lgan skriptlarni ishga tushirish uchun kerak bo'ladigan hamma narsa, lekin AWS-ga joylashtirish uchun bizga yana bir narsa kerak: biz AWS hisobimizga kirishimiz kerak. Yo'l nuqtasi tavsifida rejalari bor autentifikatsiya va avtorizatsiya haqida. HashiCorp ham shu hafta ta'sirchan loyihani chiqardi Chegaralar. Ammo hozircha biz autentifikatsiya va avtorizatsiyani o'zimiz olib, boshqarishimiz mumkin.

AWS da GitLab CICD autentifikatsiyasining bir nechta variantlari mavjud. Birinchi variant - o'rnatilgandan foydalanish HashiCorp Vault. Agar jamoangiz allaqachon hisob ma'lumotlarini boshqarish uchun Vault dan foydalanayotgan bo'lsa, yaxshi bo'ladi. Agar jamoangiz AWS IAM yordamida avtorizatsiyani boshqarsa, ishlaydigan yana bir usul bu etkazib berish vazifalari orqali ishga tushirilganligini tekshirishdir. GitLab RunnerIAM orqali joylashtirishni boshlashga ruxsat berilgan. Ammo agar siz shunchaki Waypoint bilan tanishishni istasangiz va buni tezda amalga oshirishni istasangiz, oxirgi variant - AWS API va maxfiy kalitlarni GitLab CI/CD muhit o'zgaruvchilari AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Hammasini bir joyga qo'yish

Autentifikatsiyani aniqlaganimizdan so'ng, boshlashimiz mumkin! Bizning final .gitlab-ci.yml quyidagicha ko'rinadi:

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

Ko'ryapsizmi, biz rasmdan boshlaymiz docker:latest va Waypoint tomonidan talab qilinadigan bir nechta muhit o'zgaruvchilarini o'rnating. Bobda script biz eng so'nggi Waypoint bajariladigan faylni yuklab olamiz va uni joylashtiramiz /usr/local/bin. Bizning yuguruvchimiz allaqachon AWS da avtorizatsiya qilinganligi sababli, biz shunchaki yuguramiz waypoint init, build, deploy и release.

Qurilish topshirig'ining natijasi bizga dasturni aylantirgan oxirgi nuqtani ko'rsatadi:

GitLab CI/CD bilan hamkorlik qilish uchun HashiCorp Waypoint-dan qanday foydalanish kerak

Yo'nalish nuqtasi biri ko'plab HashiCorp yechimlari, bu GitLab bilan ajoyib ishlaydi. Misol uchun, ilovani yetkazib berishdan tashqari, biz asosiy infratuzilmani boshqarishimiz mumkin GitLab-da Terraform. SDLC xavfsizligini standartlashtirish uchun biz ham amalga oshirishimiz mumkin Vault bilan GitLab CI/CD quvurlarida sirlar va tokenlarni boshqarish uchun, ishlab chiqish, sinovdan o'tkazish va ishlab chiqarishda foydalanish uchun maxfiy boshqaruvga tayanadigan ishlab chiquvchilar va ma'murlar uchun to'liq yechim.

HashiCorp va GitLab tomonidan ishlab chiqilgan qo'shma echimlar kompaniyalarga ta'minot zanjiri va infratuzilmani izchil boshqarishni ta'minlash orqali ilovalarni ishlab chiqishning eng yaxshi usulini topishga yordam beradi. Waypoint to'g'ri yo'nalishda yana bir qadam tashladi va biz loyihani yanada rivojlantirishni intiqlik bilan kutamiz. Waypoint haqida ko'proq bilib olishingiz mumkin shu yerdaham o'rganishga arziydi hujjatlar и rivojlanish rejasi loyiha. Biz bilimimizni qo'shdik GitLab CICD hujjatlari. Agar siz buni o'zingiz sinab ko'rmoqchi bo'lsangiz, to'liq ish misolini ko'rishingiz mumkin bu ombor.

Siz CI / CD tamoyillarini tushunishingiz, Gitlab CI bilan ishlashning barcha nozik tomonlarini o'rganishingiz va video kursni yakunlash orqali eng yaxshi amaliyotlarni qo'llashni boshlashingiz mumkin. "Gitlab CI misolida CI/CD". Hoziroq qo'shil!

Manba: www.habr.com

a Izoh qo'shish