GitOps: boshqa shov-shuvli so'z yoki avtomatlashtirishdagi yutuqmi?

GitOps: boshqa shov-shuvli so'z yoki avtomatlashtirishdagi yutuqmi?

Ko'pchiligimiz IT-blogosferasi yoki konferentsiyasida yana bir yangi atamani payqab, ertami-kechmi shunga o'xshash savolni so'raymiz: β€œBu nima? Shunchaki yana bir mashhur so'z, "buzzword" yoki haqiqatan ham diqqatni jalb qilish, o'rganish va yangi ufqlarni va'da qilishga loyiq narsami? Terim bilan ham xuddi shunday holat yuz berdi GitOps bir oz vaqt oldin. Ko'pgina mavjud maqolalar, shuningdek, kompaniyadagi hamkasblarning bilimlari bilan qurollangan GitLab, Men bu qanday hayvon ekanligini va undan foydalanish amalda qanday ko'rinishi mumkinligini aniqlashga harakat qildim.

Aytgancha, atamaning yangiligi haqida GitOps Bizning yaqinda o'tkazgan so'rovimiz ham shunday deydi: so'ralganlarning yarmidan ko'pi hali uning tamoyillari bilan ishlashni boshlamagan.

Demak, infratuzilmani boshqarish muammosi yangilik emas. Ko'pgina bulutli provayderlar o'nlab yillar davomida keng jamoatchilikka taqdim etilgan va bu infratuzilma uchun mas'ul bo'lgan jamoalarning ishini sodda va tushunarli qilish kerak edi. Biroq, ilovalarni ishlab chiqish jarayoni bilan solishtirganda (avtomatlashtirish tobora yangi darajalarga ko'tarilmoqda), infratuzilma loyihalari hali ham ko'pincha qo'lda bajariladigan vazifalarni o'z ichiga oladi va maxsus bilim va tajribani talab qiladi, ayniqsa xatolarga chidamlilik, moslashuvchanlik, kengayish va egiluvchanlik uchun bugungi talablarni hisobga olgan holda.

Bulutli xizmatlar ushbu talablarni juda muvaffaqiyatli bajardi va aynan ular yondashuvning rivojlanishiga sezilarli turtki berdi IaC. Bu tushunarli. Axir, ular butunlay virtual ma'lumotlar markazini sozlash imkonini berdi: jismoniy serverlar, raflar yoki tarmoq komponentlari yo'q; butun infratuzilmani skriptlar va konfiguratsiya fayllari yordamida tasvirlash mumkin.

Xo'sh, aniq farq nima? GitOps ΠΎΡ‚ IaC? Aynan shu savol bilan men tergovni boshladim. Hamkasblarim bilan suhbatdan so'ng men quyidagi taqqoslashga muvaffaq bo'ldim:

GitOps

IaC

Barcha kodlar git omborida saqlanadi

Kod versiyasi ixtiyoriy

Deklarativ kod tavsifi / Idepotency

Deklarativ va imperativ tavsiflar qabul qilinadi

O'zgarishlar Birlashtirish so'rovi / tortish so'rovi mexanizmlari yordamida kuchga kiradi

Kelishuv, tasdiqlash va hamkorlik ixtiyoriydir

Yangilash jarayoni avtomatlashtirilgan

Yangilash jarayoni standartlashtirilmagan (avtomatik, qo'lda, fayllarni nusxalash, buyruq satridan foydalanish va hk.)

Boshqa so'zlar bilan aytganda GitOps tamoyillarni qo'llash orqali aynan tug'ilgan IaC. Birinchidan, infratuzilma va konfiguratsiyalar endi ilovalar bilan bir xil tarzda saqlanishi mumkin edi. Kodni saqlash oson, almashish, solishtirish va versiyalarni yaratish imkoniyatlaridan foydalanish oson. Versiyalar, filiallar, tarix. Va bularning barchasi butun jamoa uchun ochiq joyda. Shuning uchun versiyalarni boshqarish tizimlaridan foydalanish mutlaqo tabiiy rivojlanishga aylandi. Xususan, git, eng mashhuri sifatida.

Boshqa tomondan, infratuzilmani boshqarish jarayonlarini avtomatlashtirish imkoniyati paydo bo'ldi. Endi buni tezroq, ishonchli va arzonroq qilish mumkin. Bundan tashqari, CI / CD tamoyillari allaqachon ma'lum va dasturiy ta'minot ishlab chiqaruvchilari orasida mashhur edi. Faqat ma'lum bilim va ko'nikmalarni yangi sohaga o'tkazish va qo'llash kerak edi. Biroq, bu amaliyotlar Infratuzilmaning kod sifatidagi standart ta'rifidan tashqariga chiqdi, shuning uchun kontseptsiya GitOps.

GitOps: boshqa shov-shuvli so'z yoki avtomatlashtirishdagi yutuqmi?

Qiziqish GitOps, albatta, u har qanday sotuvchi bilan bog'liq mahsulot, plagin yoki platforma emasligida ham. Bu bizga tanish bo'lgan boshqa atamaga o'xshash ko'proq paradigma va printsiplar to'plamidir: DevOps.

Kompaniyada GitLab biz ushbu yangi atamaning ikkita ta'rifini ishlab chiqdik: nazariy va amaliy. Keling, nazariy jihatdan boshlaylik:

GitOps - versiyalarni boshqarish, hamkorlik, orkestratsiya, CI/CD kabi ilovalarni ishlab chiqishda qo'llaniladigan eng yaxshi DevOps tamoyillarini oladigan va ularni infratuzilmani boshqarishni avtomatlashtirish muammolariga qo'llaydigan metodologiya.

Barcha jarayonlar GitOps Men mavjud vositalar yordamida ishlayman. Barcha infratuzilma kodi allaqachon tanish bo'lgan git omborida saqlanadi, o'zgarishlar boshqa dastur kodlari kabi tasdiqlash jarayonidan o'tadi va ishga tushirish jarayoni avtomatlashtirilgan bo'lib, bu bizga inson xatolarini minimallashtirish, ishonchlilik va takroriylikni oshirish imkonini beradi.

Amaliy nuqtai nazardan, biz tasvirlaymiz GitOps quyida bayon qilinganidek:

GitOps: boshqa shov-shuvli so'z yoki avtomatlashtirishdagi yutuqmi?

Biz allaqachon ushbu formulaning asosiy tarkibiy qismlaridan biri sifatida infratuzilmani kod sifatida muhokama qildik. Keling, qolgan ishtirokchilarni tanishtiramiz.

Birlashtirish so'rovi (muqobil nom Pull Request). Jarayon nuqtai nazaridan, MR bu kod o'zgarishlarini qo'llash va keyin filiallarni birlashtirish so'rovidir. Ammo biz foydalanadigan vositalar nuqtai nazaridan, bu amalga oshirilayotgan barcha o'zgarishlar haqida to'liq tasavvurga ega bo'lish uchun ko'proq imkoniyatdir: nafaqat ma'lum miqdordagi majburiyatlardan to'plangan kod farqi, balki kontekst, test natijalari va yakuniy kutilgan natija. Agar biz infratuzilma kodi haqida gapiradigan bo'lsak, unda biz infratuzilma qanday o'zgarishi, qancha yangi resurslar qo'shilishi yoki olib tashlanishi, o'zgarishi bilan qiziqamiz. Yaxshiroq, qulayroq va o'qish oson formatda. Bulutli provayderlar uchun bu o'zgarishning moliyaviy ta'siri qanday bo'lishini bilish yaxshi fikr.

Ammo MR ham hamkorlik, o'zaro ta'sir va aloqa vositasidir. Tekshiruvlar va muvozanatlar tizimi ishga tushadigan joy. Oddiy sharhlardan rasmiy tasdiqlash va tasdiqlashgacha.

Xo'sh, oxirgi komponent: CI/CD, biz allaqachon bilganimizdek, infratuzilmani o'zgartirish va sinovdan o'tkazish jarayonini avtomatlashtirishga imkon beradi (oddiy sintaksisni tekshirishdan murakkabroq statik kod tahliligacha). Va shuningdek, keyingi driftni aniqlashda: tizimning haqiqiy va istalgan holati o'rtasidagi farqlar. Masalan, ruxsatsiz qo'lda o'zgartirishlar yoki tizimning ishlamay qolishi natijasida.

Ha, atama GitOps bizni mutlaqo yangi narsa bilan tanishtirmaydi, g'ildirakni qayta ixtiro qilmaydi, balki yangi sohada allaqachon to'plangan tajribani qo'llaydi. Ammo uning kuchi shu erda.

Va agar siz to'satdan bularning barchasi amalda qanday ko'rinishi bilan qiziqsangiz, men sizni bizning maqolamizga qarashni taklif qilaman master-klass, unda men sizga GitLab-dan qanday foydalanishni bosqichma-bosqich aytib beraman:

  • GitOps ning asosiy tamoyillarini amalga oshirish

  • Bulutli infratuzilmani yaratish va o'zgartirishlar kiritish (Yandex Cloud misolidan foydalanib)

  • Faol monitoring yordamida tizimning istalgan holatdan siljishini aniqlashni avtomatlashtirish

GitOps: boshqa shov-shuvli so'z yoki avtomatlashtirishdagi yutuqmi?https://bit.ly/34tRpwZ

Manba: www.habr.com

a Izoh qo'shish