Kubernetes klasterini hazırlamaq asan və rahatdırmı? Əlavə operatoru elan edir

Kubernetes klasterini hazırlamaq asan və rahatdırmı? Əlavə operatoru elan edir

Aşağıdakı mərmi operatoru böyük qardaşını təqdim edirik - addon-operator. Bu, əlavələr adlandırıla bilən Kubernetes klasterinə sistem komponentlərini quraşdırmaq üçün istifadə edilən Açıq Mənbə layihəsidir.

Niyə ümumiyyətlə əlavələr var?

Heç kimə sirr deyil ki, Kubernetes hamısı bir yerdə hazır məhsul deyil və "böyüklər" klasteri qurmaq üçün müxtəlif əlavələrə ehtiyacınız olacaq. Addon-operator sizə bu əlavələri quraşdırmaq, konfiqurasiya etmək və yeniləməkdə kömək edəcək.

Klasterdə əlavə komponentlərə ehtiyac açıqlanır hesabat həmkarları driuşa. Qısacası, hazırda Kubernetes ilə vəziyyət elədir ki, sadə bir "ətrafında oynamaq" quraşdırma üçün qutudan çıxan komponentlərlə əldə edə bilərsiniz, tərtibatçılar və testlər üçün Giriş əlavə edə bilərsiniz, lakin tam quraşdırma üçün siz “istehsalınız hazırdır” deyə bilərsiniz, bir çox müxtəlif əlavələrlə əlavə etməlisiniz: monitorinq üçün bir şey, giriş üçün bir şey, giriş və sertifikat meneceri unutma, qovşaq qrupları seçin, şəbəkə siyasəti əlavə edin, mövsüm sysctl və pod autoscaler parametrləri ilə...

Kubernetes klasterini hazırlamaq asan və rahatdırmı? Əlavə operatoru elan edir

Onlarla işləməyin xüsusiyyətləri nələrdir?

Təcrübə göstərir ki, məsələ bir quraşdırma ilə məhdudlaşmır. Klasterlə rahat işləmək üçün əlavələr yenilənməli, deaktiv edilməli (klasterdən silinməli) və bəzilərini istehsal klasterində quraşdırmadan əvvəl sınaqdan keçirmək istəyəcəksiniz.

Deməli, bəlkə burada Ansible kifayət edər? Ola bilər. Amma Ümumiyyətlə, tam hüquqlu əlavələr parametrlər olmadan yaşamır. Bu parametrlər klaster variantından asılı olaraq fərqlənə bilər (aws, gce, azure, bare-metal, do, ...). Bəzi parametrləri əvvəlcədən müəyyən etmək mümkün deyil, onlar klasterdən alınmalıdır. Və klaster statik deyil: bəzi parametrlər üçün dəyişiklikləri izləməli olacaqsınız. Və burada Ansible artıq yoxdur: bir klasterdə yaşayan bir proqrama ehtiyacınız var, yəni. Kubernetes Operatoru.

İş yerində sınayanlar mərmi operatoru, əlavələr və monitorinq parametrlərinin quraşdırılması və yenilənməsi vəzifələrinin istifadə edərək tamamilə həll edilə biləcəyini söyləyəcəklər. qarmaqlar shell-operator üçün. Siz şərti yerinə yetirəcək bir skript yaza bilərsiniz kubectl apply və məsələn, parametrlərin saxlanacağı ConfigMap-ə nəzarət edin. Bu, təxminən, addon-operatorda həyata keçirilən şeydir.

Bu addon-operatorda necə təşkil olunur?

Yeni bir həll yaratarkən aşağıdakı prinsiplərdən çıxış etdik:

  • Əlavə quraşdırıcı dəstəkləməlidir şablonlaşdırma və deklarativ konfiqurasiya. Biz əlavələr quraşdıran sehrli skriptlər hazırlamırıq. Addon-operator əlavələri quraşdırmaq üçün Helm-dən istifadə edir. Quraşdırmaq üçün bir diaqram yaratmalı və konfiqurasiya üçün istifadə olunacaq dəyərləri seçməlisiniz.
  • Parametrlər ola bilər quraşdırma zamanı yaratmaq, onlar bacarar klasterdən alınVə ya yeniləmələri qəbul edin, klaster resurslarının monitorinqi. Bu əməliyyatlar qarmaqlardan istifadə etməklə həyata keçirilə bilər.
  • Parametrlər ola bilər klasterdə saxlayın. Parametrləri klasterdə saxlamaq üçün ConfigMap/addon-operator yaradılır və Addon-operator bu ConfigMap-dəki dəyişiklikləri izləyir. Addon-operator sadə konvensiyalardan istifadə edərək qarmaqlara parametrlərə giriş imkanı verir.
  • Əlavə parametrlərdən asılıdır. Parametrlər dəyişibsə, Addon-operator yeni dəyərlərlə Helm diaqramını təqdim edir. Helm diaqramının, onun üçün dəyərlərin və qarmaqların birləşməsini modul adlandırdıq (daha ətraflı məlumat üçün aşağıya baxın).
  • Səhnələşdirmə. Sehrli buraxılış skriptləri yoxdur. Yeniləmə mexanizmi adi proqrama bənzəyir - əlavələr və əlavə operatorları bir şəkilə toplayın, onları etiketləyin və yaydırın.
  • Nəticəyə nəzarət. Addon-operator Prometheus üçün ölçüləri təmin edə bilər.

Addon-operatorda padding nədir?

Əlavə klasterə yeni funksiyalar əlavə edən hər hansı bir şey hesab edilə bilər. Məsələn, Ingress quraşdırmaq əlavənin gözəl nümunəsidir. Bu, öz CRD-si olan istənilən operator və ya nəzarətçi ola bilər: prometheus-operator, cert-meneger, kube-controller-meneger və s. Və ya kiçik, lakin istifadəsi daha asan bir şey - məsələn, reyestr sirlərini yeni ad boşluqlarına köçürən gizli surətçıxarıcı və ya yeni qovşaqlarda sysctl parametrlərini konfiqurasiya edən sysctl tuner.

Əlavələri həyata keçirmək üçün Addon-operator bir neçə konsepsiya təqdim edir:

  • Sükan diaqramı klasterə müxtəlif proqramların quraşdırılması üçün istifadə olunur - məsələn, Prometheus, Grafana, nginx-ingress. Tələb olunan komponentdə Helm diaqramı varsa, onu Addon-operator vasitəsilə quraşdırmaq çox sadə olacaq.
  • Dəyərlərin saxlanması. Helm diaqramları adətən zamanla dəyişə bilən çoxlu müxtəlif parametrlərə malikdir. Addon-operator bu parametrləri saxlamağı dəstəkləyir və Helm diaqramını yeni dəyərlərlə yenidən quraşdırmaq üçün onların dəyişikliklərinə nəzarət edə bilər.
  • Qarmaqlar Addon-operatorun hadisələr üzərində işlədiyi və dəyərlər anbarına daxil olan icra edilə bilən fayllardır. Qarmaq çoxluqdakı dəyişiklikləri izləyə və dəyərlər anbarındakı dəyərləri yeniləyə bilər. Bunlar. Qarmaqlardan istifadə edərək başlanğıcda və ya cədvələ uyğun olaraq klasterdən dəyərlər toplamaq üçün kəşf edə bilərsiniz və ya klasterdəki dəyişikliklərə əsaslanaraq çoxluqdan dəyərlər toplayaraq davamlı kəşf edə bilərsiniz.
  • Modul Helm chart, dəyərlər anbarı və qarmaqların birləşməsidir. Modullar aktivləşdirilə və ya söndürülə bilər. Modulu söndürmək, bütün Helm diaqram buraxılışlarını silmək deməkdir. Modullar dinamik olaraq özlərini aktivləşdirə bilər, məsələn, ehtiyac duyduğu bütün modullar işə salınıbsa və ya kəşf qarmaqlarda lazımi parametrləri tapıbsa - bu, köməkçi aktivləşdirilmiş skriptdən istifadə etməklə edilir.
  • Qlobal qarmaqlar. Bunlar "öz-özünə" qarmaqlardır, modullara daxil edilmir və dəyərləri modullardakı bütün qarmaqlar üçün mövcud olan qlobal dəyərlər mağazasına çıxışı var.

Bu hissələr birlikdə necə işləyir? Sənədlərdən şəkilə baxaq:

Kubernetes klasterini hazırlamaq asan və rahatdırmı? Əlavə operatoru elan edir

İki iş ssenarisi var:

  1. Qlobal çəngəl bir hadisə ilə tetiklenir - məsələn, klasterdəki resurs dəyişdikdə. Bu çəngəl dəyişiklikləri emal edir və qlobal dəyərlər anbarına yeni dəyərlər yazır. Addon-operator qlobal yaddaşın dəyişdiyini bildirir və bütün modulları işə salır. Hər bir modul qarmaqlarından istifadə edərək onun aktivləşdirilməsinin lazım olub-olmadığını müəyyənləşdirir və dəyərlər anbarını yeniləyir. Modul aktivdirsə, Addon-operator Helm diaqramının quraşdırılmasına başlayır. Bu halda, Helm diaqramı modul yaddaşından və qlobal yaddaşdan dəyərlərə çıxış əldə edir.
  2. İkinci ssenari daha sadədir: modul çəngəl hadisə ilə işə salınır və modulun dəyərlər anbarında dəyərləri dəyişir. Addon-operator bunu fərq edir və yenilənmiş dəyərlərlə Helm diaqramını işə salır.

Əlavə bir tək çəngəl kimi və ya bir Helm chart kimi həyata keçirilə bilər və ya hətta bir neçə asılı modul kimi - bu, klasterdə quraşdırılan komponentin mürəkkəbliyindən və konfiqurasiya çevikliyinin istənilən səviyyəsindən asılıdır. Məsələn, depoda (/nümunələr) həm qarmaqlı, həm də Helm diaqramı olan sadə modul kimi, həm də ConfigMap-i redaktə etməklə parametrlər əlavə etməyə imkan verən dəyərlər anbarından istifadə etməklə həyata keçirilən sysctl-tuner əlavəsi var.

Yeniliklərin çatdırılması

Addon-operatorun quraşdırdığı komponent yeniləmələrinin təşkili haqqında bir neçə söz.

Addon-operatoru klasterdə işə salmaq üçün sizə lazımdır əlavələr ilə bir şəkil qurmaq çəngəl və Helm chart faylları şəklində ikili fayl əlavə edin addon-operator və qarmaqlar üçün lazım olan hər şey: bash, kubectl, jq, python və s. Sonra bu şəkil adi bir tətbiq kimi klasterə yayıla bilər və çox güman ki, bu və ya digər etiketləmə sxemini təşkil etmək istəyəcəksiniz. Bir neçə klaster varsa, tətbiqlərlə eyni yanaşma uyğun ola bilər: yeni buraxılış, yeni versiya, bütün klasterlərə keçin və Podların şəklini düzəldin. Bununla belə, əhəmiyyətli sayda klasterə yayılma vəziyyətində, kanaldan özünü yeniləmə konsepsiyası bizim üçün daha uyğun idi.

Bunu necə edirik:

  • Kanal mahiyyətcə hər hansı bir parametrə təyin edilə bilən identifikatordur (məsələn, dev/stage/ea/stabil).
  • Kanalın adı şəkil etiketidir. Kanala yeniləmələri yaymaq lazım olduqda, yeni şəkil yığılır və kanal adı ilə etiketlənir.
  • Reyestrdə yeni bir şəkil görünəndə Addon-operator yenidən işə salınır və yeni şəkillə işə salınır.

Bu, yazıldığı kimi ən yaxşı təcrübə deyil Kubernetes sənədləri. Bunu etmək tövsiyə edilmir, amma biz danışırıq eyni klasterdə yaşayan müntəzəm proqram. Addon-operator vəziyyətində, proqram klasterlər arasında səpələnmiş bir çox yerləşdirmədir və özünü yeniləmə çox kömək edir və həyatı asanlaşdırır.

Kanallar kömək edir və sınaqda: köməkçi klaster varsa, onu kanala konfiqurasiya edə bilərsiniz stage və onu kanallara yaymazdan əvvəl yeniləmələri daxil edin ea и stable. Kanalda çoxluq varsa ea xəta baş verdi, ona keçə bilərsiniz stable, bu klasterlə bağlı problem araşdırılarkən. Klaster aktiv dəstəkdən çıxarılarsa, o, "donmuş" kanalına keçir - məsələn, freeze-2019-03-20.

Qarmaqları və Helm diaqramlarını yeniləməkdən əlavə, sizə lazım ola bilər yeniləmə və üçüncü tərəf komponenti. Məsələn, şərti node-ixracatçıda bir səhv gördünüz və hətta onu necə yamaq edəcəyinizi anladınız. Sonra, siz PR-ı açdınız və yeni buraxılışın bütün qruplardan keçməsini və təsvirin versiyasını artırmasını gözləyirsiniz. Qeyri-müəyyən müddətə gözləməmək üçün PR-ı qəbul etməzdən əvvəl node-exporterinizi qurub ona keçə bilərsiniz.

Ümumiyyətlə, bunu Addon-operator olmadan etmək olar, lakin Addon-operator ilə node-exporter quraşdırmaq üçün modul bir depoda görünəcək, şəklinizi qurmaq üçün Dockerfile orada saxlanıla bilər, bütün iştirakçılar üçün daha asan olur. nə baş verdiyini anlamaq prosesi... Və əgər bir neçə qrup varsa, o zaman həm PR-ı sınamaq, həm də yeni versiyanı yaymaq daha asan olacaq!

Komponent yeniləməsinin bu təşkili bizim üçün uğurla işləyir, lakin hər hansı digər uyğun sxem həyata keçirilə bilər - axı bu halda Addon-operator sadə ikili fayldır.

Nəticə

Addon-operator-da həyata keçirilən prinsiplər adi proqramların inkişaf proseslərinə bənzər bir çoxluqda əlavələrin yaradılması, sınaqdan keçirilməsi, quraşdırılması və yenilənməsi üçün şəffaf bir proses qurmağa imkan verir.

Addon-operator üçün modul formatında əlavələr (Helm diaqramı + qarmaqlar) ictimaiyyətə təqdim edilə bilər. Biz, Flant şirkəti olaraq, yay ərzində öz inkişaflarımızı bu cür əlavələr şəklində dərc etməyi planlaşdırırıq. GitHub-da inkişafa qoşulun (mərmi operatoru, addon-operator), əsaslanaraq öz əlavənizi etməyə çalışın nümunələr и sənədləşdirmə, Habré və bizim xəbərləri gözləyin YouTube kanalı!

PS

Bloqumuzda da oxuyun:

Mənbə: www.habr.com

Добавить комментарий