Kubernetes klasterini tayyorlash oson va qulaymi? Addon-operatorni e'lon qilish

Kubernetes klasterini tayyorlash oson va qulaymi? Addon-operatorni e'lon qilish

Quyida qobiq operatori biz uning katta akasini taqdim etamiz - addon-operator. Bu ochiq kodli loyiha bo'lib, tizim komponentlarini Kubernetes klasteriga o'rnatish uchun foydalaniladi, uni qo'shimchalar deb atash mumkin.

Nima uchun umuman qo'shimchalar?

Hech kimga sir emaski, Kubernetes hamma narsada tayyor mahsulot emas va "kattalar" klasterini qurish uchun sizga turli xil qo'shimchalar kerak bo'ladi. Addon-operator sizga ushbu qo'shimchalarni o'rnatish, sozlash va yangilab turishga yordam beradi.

Klasterda qo'shimcha komponentlarga bo'lgan ehtiyoj oshkor qilingan hisobot hamkasblar driusha. Muxtasar qilib aytganda, hozirgi vaqtda Kubernetes bilan bog'liq vaziyat shundayki, oddiy "o'yin" o'rnatish uchun siz qutidan tashqaridagi komponentlar bilan ishlashingiz mumkin, ishlab chiquvchilar va testlar uchun siz Ingressni qo'shishingiz mumkin, ammo to'liq o'rnatish uchun siz "ishlab chiqarishingiz tayyor" deb aytishingiz mumkin, siz o'nlab turli xil qo'shimchalar bilan qo'shishingiz kerak: monitoring uchun biror narsa, ro'yxatga olish uchun biror narsa, kirish va sertifikat-menejerni unutmang, tugunlar guruhlarini tanlang, tarmoq siyosatlarini qo'shing, mavsum sysctl va pod autoscaler sozlamalari bilan...

Kubernetes klasterini tayyorlash oson va qulaymi? Addon-operatorni e'lon qilish

Ular bilan ishlashning o'ziga xos xususiyatlari qanday?

Amaliyot shuni ko'rsatadiki, masala bitta o'rnatish bilan cheklanmaydi. Klaster bilan qulay ishlash uchun qo'shimchalarni yangilash, o'chirish (klasterdan olib tashlash) kerak bo'ladi va siz ularni ishlab chiqarish klasteriga o'rnatishdan oldin ba'zilarini sinab ko'rishingiz kerak.

Xo'sh, bu erda Ansible etarli bo'lishi mumkinmi? Balki. Lekin Umuman olganda, to'liq qo'shimchalar sozlamalarsiz yashamaydi. Ushbu sozlamalar klaster variantiga qarab farq qilishi mumkin (aws, gce, azure, bare-metal, do, ...). Ba'zi sozlamalarni oldindan belgilash mumkin emas, ularni klasterdan olish kerak. Va klaster statik emas: ba'zi sozlamalar uchun siz o'zgarishlarni kuzatishingiz kerak bo'ladi. Va bu erda Ansible allaqachon yo'qolgan: sizga klasterda yashovchi dastur kerak, ya'ni. Kubernetes operatori.

Ishda sinab ko'rganlar qobiq operatori, ular qo'shimchalar va monitoring sozlamalarini o'rnatish va yangilash vazifalari yordamida to'liq hal qilinishi mumkinligini aytishadi. ilgaklar qobiq operatori uchun. Siz shartni bajaradigan skript yozishingiz mumkin kubectl apply va, masalan, sozlamalar saqlanadigan ConfigMap-ni kuzatib boring. Bu addon-operatorda amalga oshirilgan taxminan.

Bu addon-operatorda qanday tashkil etilgan?

Yangi yechim yaratishda biz quyidagi tamoyillardan kelib chiqdik:

  • Qo'shimcha o'rnatuvchi qo'llab-quvvatlashi kerak shablonlashtirish va deklarativ konfiguratsiya. Biz qo'shimchalarni o'rnatadigan sehrli skriptlarni yaratmaymiz. Addon-operator qo'shimchalarni o'rnatish uchun Helm-dan foydalanadi. O'rnatish uchun siz diagramma yaratishingiz va konfiguratsiya uchun ishlatiladigan qiymatlarni tanlashingiz kerak.
  • Sozlamalar bo'lishi mumkin o'rnatishda yaratish, Siz .. qila olasiz; siz ... mumkin klasterdan oling, yoki yangilanishlarni qabul qilish, klaster resurslarini monitoring qilish. Ushbu operatsiyalar kancalar yordamida amalga oshirilishi mumkin.
  • Sozlamalar bo'lishi mumkin klasterda saqlang. Sozlamalarni klasterda saqlash uchun ConfigMap/addon-operator yaratiladi va Addon-operator ushbu ConfigMapdagi o'zgarishlarni nazorat qiladi. Addon-operator oddiy konventsiyalar yordamida kancalarga sozlamalarga kirish imkonini beradi.
  • Qo'shish sozlamalarga bog'liq. Agar sozlamalar o'zgargan bo'lsa, Addon-operator yangi qiymatlar bilan Helm diagrammasini chiqaradi. Biz Helm diagrammasi, uning qiymatlari va ilgaklar birikmasini modul deb nomladik (batafsilroq ma'lumot uchun pastga qarang).
  • Sahnalashtirish. Sehrli reliz skriptlari mavjud emas. Yangilash mexanizmi oddiy dasturga o'xshaydi - qo'shimchalar va qo'shimcha operatorlarni rasmga to'plang, ularni belgilang va ularni tarqating.
  • Natija nazorati. Addon-operator Prometey uchun o'lchovlarni taqdim etishi mumkin.

Addon-operatorda to'ldirish nima?

Klasterga yangi funktsiyalarni qo'shadigan har qanday qo'shimcha deb hisoblanishi mumkin. Masalan, Ingressni o'rnatish qo'shimchaning ajoyib namunasidir. Bu o'z CRD-ga ega har qanday operator yoki kontroller bo'lishi mumkin: prometey-operator, sertifikat-menejer, kube-kontroller-menejer va boshqalar. Yoki kichik, lekin ishlatish uchun qulayroq narsa - masalan, ro'yxatga olish kitobi sirlarini yangi nomlar maydoniga ko'chiradigan maxfiy nusxa ko'chirish moslamasi yoki yangi tugunlarda sysctl parametrlarini sozlaydigan sysctl tyuner.

Qo'shimchalarni amalga oshirish uchun Addon-operator bir nechta tushunchalarni taqdim etadi:

  • Rulda diagrammasi klasterga turli xil dasturlarni o'rnatish uchun ishlatiladi - masalan, Prometey, Grafana, nginx-ingress. Agar kerakli komponentda Helm diagrammasi bo'lsa, uni Addon-operator yordamida o'rnatish juda oddiy bo'ladi.
  • Qadriyatlarni saqlash. Rulda diagrammalarida odatda vaqt o'tishi bilan o'zgarishi mumkin bo'lgan juda ko'p turli xil sozlamalar mavjud. Addon-operator ushbu sozlamalarni saqlashni qo'llab-quvvatlaydi va Helm diagrammasini yangi qiymatlar bilan qayta o'rnatish uchun ularning o'zgarishlarini kuzatishi mumkin.
  • Ilgaklar Addon-operator voqealar ustida ishlaydigan va qiymatlar do'koniga kiradigan bajariladigan fayllar. Kanca klasterdagi o'zgarishlarni kuzatishi va qiymatlar do'konidagi qiymatlarni yangilashi mumkin. Bular. Ilgaklar yordamida siz ishga tushirilganda yoki jadvalga muvofiq klasterdan qiymatlarni yig'ish uchun kashfiyotlar qilishingiz mumkin yoki klasterdagi o'zgarishlar asosida klasterdan qiymatlarni yig'ib, doimiy kashfiyot qilishingiz mumkin.
  • Modul Helm diagrammasi, qadriyatlar do'koni va ilgaklar birikmasidir. Modullarni yoqish yoki o'chirish mumkin. Modulni o'chirish barcha Helm diagrammalarini o'chirishni anglatadi. Modullar o'zlarini dinamik ravishda faollashtirishi mumkin, masalan, agar unga kerak bo'lgan barcha modullar yoqilgan bo'lsa yoki kashfiyot kancalarda kerakli parametrlarni topsa - bu yordamchi yoqilgan skript yordamida amalga oshiriladi.
  • Global kancalar. Bular "o'z-o'zidan" ilgaklar, ular modullarga kiritilmagan va global qadriyatlar do'koniga kirish huquqiga ega, ularning qiymatlari modullardagi barcha ilgaklar uchun mavjud.

Qanday qilib bu qismlar birgalikda ishlaydi? Keling, hujjatlardagi rasmni ko'rib chiqaylik:

Kubernetes klasterini tayyorlash oson va qulaymi? Addon-operatorni e'lon qilish

Ikkita ish stsenariysi mavjud:

  1. Global ilgak hodisa tomonidan ishga tushiriladi - masalan, klasterdagi resurs o'zgarganda. Ushbu ilgak o'zgarishlarni qayta ishlaydi va global qadriyatlar do'koniga yangi qiymatlarni yozadi. Addon-operator global xotira o'zgarganligini sezadi va barcha modullarni ishga tushiradi. Har bir modul o'zining ilgaklaridan foydalanib, uni yoqish kerakligini aniqlaydi va o'z qiymatlari do'konini yangilaydi. Agar modul yoqilgan bo'lsa, Addon-operator Helm diagrammasini o'rnatishni boshlaydi. Bunday holda, Helm diagrammasi modul xotirasidan va global xotiradan qiymatlarga kirish huquqiga ega.
  2. Ikkinchi stsenariy oddiyroq: modul kancasi hodisa tomonidan ishga tushiriladi va modul qiymatlari do'konidagi qiymatlarni o'zgartiradi. Addon-operator buni sezadi va yangilangan qiymatlar bilan Helm diagrammasini ishga tushiradi.

Qo'shish bitta kanca sifatida yoki bitta Helm diagrammasi sifatida amalga oshirilishi mumkin hatto bir nechta qaram modullar kabi - bu klasterda o'rnatiladigan komponentning murakkabligiga va konfiguratsiya moslashuvchanligining istalgan darajasiga bog'liq. Masalan, omborda (/misollar) sysctl-tuner qo'shimchasi mavjud bo'lib, u ham ilgak va Helm diagrammasi bilan oddiy modul sifatida, ham ConfigMap-ni tahrirlash orqali sozlamalarni qo'shish imkonini beruvchi qiymatlar do'konidan foydalangan holda amalga oshiriladi.

Yangilanishlarni yetkazib berish

Addon-operator o'rnatadigan komponent yangilanishlarini tashkil qilish haqida bir necha so'z.

Addon-operatorni klasterda ishga tushirish uchun sizga kerak bo'ladi qo'shimchalar bilan tasvirni yaratish kanca va Helm diagramma fayllari shaklida ikkilik fayl qo'shing addon-operator va kancalar uchun kerak bo'lgan hamma narsa: bash, kubectl, jq, python va hokazo. Keyin ushbu rasm klasterga oddiy dastur sifatida chiqarilishi mumkin va siz u yoki bu teglash sxemasini tashkil qilishni xohlaysiz. Agar klasterlar kam bo'lsa, ilovalar bilan bir xil yondashuv mos bo'lishi mumkin: yangi versiya, yangi versiya, barcha klasterlarga o'ting va Podlar tasvirini to'g'rilang. Biroq, ko'p sonli klasterlarga chiqarilgan taqdirda, kanaldan o'z-o'zini yangilash kontseptsiyasi biz uchun ko'proq mos edi.

Buni qanday qilamiz:

  • Kanal mohiyatan har qanday narsaga oʻrnatilishi mumkin boʻlgan identifikatordir (masalan, dev/stage/ea/stable).
  • Kanal nomi rasm tegidir. Kanalga yangilanishlarni tarqatishingiz kerak bo'lganda, yangi rasm yig'iladi va kanal nomi bilan etiketlanadi.
  • Ro'yxatga olish kitobida yangi rasm paydo bo'lganda, Addon-operator qayta ishga tushiriladi va yangi rasm bilan ishga tushiriladi.

Bu maqolada yozilganidek, eng yaxshi amaliyot emas Kubernetes hujjatlari. Buni qilish tavsiya etilmaydi, lekin biz bu haqda gapiramiz bir xil klasterda yashovchi oddiy dastur. Addon-operator misolida, dastur klasterlar bo'ylab tarqalgan juda ko'p joylashtirishdir va o'z-o'zini yangilash juda ko'p yordam beradi va hayotni osonlashtiradi.

Kanallar yordam beradi va sinovda: yordamchi klaster mavjud bo'lsa, uni kanalga sozlashingiz mumkin stage va yangilanishlarni kanallarga tarqatishdan oldin unga o'tkazing ea и stable. Agar kanalda klaster bo'lsa ea xatolik yuz berdi, unga o'tishingiz mumkin stable, bu klaster bilan bog'liq muammo tekshirilayotganda. Agar klaster faol qo'llab-quvvatlashdan olinsa, u o'zining "muzlatilgan" kanaliga o'tadi - masalan, freeze-2019-03-20.

Ilgaklar va Helm diagrammalarini yangilashdan tashqari, sizga kerak bo'lishi mumkin yangilash va uchinchi tomon komponenti. Misol uchun, siz shartli tugun-eksportda xatolikni payqadingiz va hatto uni qanday tuzatish kerakligini aniqladingiz. Keyinchalik, siz PR-ni ochdingiz va yangi nashr barcha klasterlardan o'tib, tasvir versiyasini oshirishni kutmoqdasiz. Cheksiz kutmaslik uchun siz o'zingizning tugun-eksporteringizni qurishingiz va PRni qabul qilishdan oldin unga o'tishingiz mumkin.

Umuman olganda, bu Addon-operatorsiz amalga oshirilishi mumkin, ammo Addon-operator bilan tugunni eksport qiluvchini o'rnatish moduli bitta omborda ko'rinadi, sizning rasmingizni yaratish uchun Dockerfile shu erda saqlanishi mumkin, bu barcha ishtirokchilar uchun osonroq bo'ladi. nima sodir bo'lishini tushunish jarayoni ... Va agar bir nechta klasterlar bo'lsa, PR-ni sinab ko'rish va yangi versiyani chiqarish osonroq bo'ladi!

Komponentlarni yangilashni tashkil etish biz uchun muvaffaqiyatli ishlaydi, ammo har qanday boshqa mos sxemani amalga oshirish mumkin - axir bu holda Addon-operator oddiy ikkilik fayldir.

xulosa

Addon-operatorda amalga oshirilgan tamoyillar odatiy ilovalarni ishlab chiqish jarayonlariga o'xshash klasterda qo'shimchalarni yaratish, sinovdan o'tkazish, o'rnatish va yangilash uchun shaffof jarayonni yaratishga imkon beradi.

Addon-operator uchun modul formatidagi qo'shimchalar (Helm diagrammasi + ilgaklar) hamma uchun ochiq bo'lishi mumkin. Biz Flant kompaniyasi o'z ishlanmalarimizni yozda shunday qo'shimchalar ko'rinishida nashr etishni rejalashtirganmiz. GitHub-da rivojlanishga qo'shiling (qobiq operatori, addon-operator), asosida o'z qo'shimchangizni qilishga harakat qiling misollar и hujjatlar, Habré va bizning yangiliklarni kuting YouTube kanali!

PS

Shuningdek, bizning blogimizda o'qing:

Manba: www.habr.com

a Izoh qo'shish