Helm 3-ə giriş

Helm 3-ə giriş

Qeyd. tərcümə.: Bu il mayın 16-sı Kubernetes - Helm üçün paket menecerinin inkişafında əhəmiyyətli bir mərhələdir. Bu gün layihənin gələcək əsas versiyası olan 3.0-ın ilk alfa buraxılışı təqdim olundu. Onun buraxılması, Kubernetes cəmiyyətində çoxlarının böyük ümid bəslədiyi Helm-ə əhəmiyyətli və çoxdan gözlənilən dəyişikliklər gətirəcək. Tətbiqləri yerləşdirmək üçün Helm-dən fəal istifadə etdiyimiz üçün biz özümüz də onların arasındayıq: biz onu CI/CD tətbiqi alətimizə inteqrasiya etmişik. werf və hər halda biz yuxarı axının inkişafına mümkün töhfə veririk. Bu tərcümə Helm 7-ün ilk alfa buraxılışına həsr olunmuş və layihənin tarixi və Helm 3-ün əsas xüsusiyyətləri haqqında danışan rəsmi Helm bloqundan 3 qeydi birləşdirir. Onların müəllifi Microsoft işçisi Matt "bacongobbler" Fisher və Helmin əsas dəstəkçilərindən biridir.

15 oktyabr 2015-ci ildə indi Helm kimi tanınan layihə doğuldu. Qurulmasından cəmi bir il sonra Helm icması Helm 2 üzərində fəal işləyərkən Kubernetes-ə qoşuldu. 2018-ci ilin iyununda Helm CNCF-yə qoşuldu inkubasiya layihəsi kimi. İndiki vaxta sürətlə irəliləyin və yeni Helm 3-ün ilk alfa versiyası yoldadır. (bu buraxılış artıq baş verib may ayının ortalarında - təqribən. tərcümə.).

Bu yazıda mən hər şeyin necə başladığını, bugünkü vəziyyətə necə gəldiyimizi, Helm 3-ün ilk alfa buraxılışında mövcud olan bəzi unikal xüsusiyyətləri təqdim edəcəyəm və necə irəliləməyi planlaşdırdığımızı izah edəcəyəm.

Xülasə:

  • Helmin yaradılması tarixi;
  • Tillerlə vidalaşdı;
  • diaqram depoları;
  • buraxılışların idarə edilməsi;
  • diaqram asılılığında dəyişikliklər;
  • kitabxana qrafikləri;
  • sonra nə var?

Helmin tarixi

Doğum

Helm 1, Deis tərəfindən yaradılan Açıq Mənbə layihəsi olaraq başladı. Biz kiçik bir startap idik udulmuş Microsoft 2017-ci ilin yazında. Deis adlı digər Açıq Mənbə layihəmizin bir aləti var idi deisctlDeis platformasını quraşdırmaq və idarə etmək üçün (digər şeylər arasında) istifadə edilmişdir Donanma klasteri. O zaman Fleet konteyner orkestrinin ilk platformalarından biri idi.

2015-ci ilin ortalarında biz kursu dəyişmək qərarına gəldik və Deis-i (daha sonra Deis Workflow adlandırıldı) Fleet-dən Kubernetesə köçürdük. Birincilərdən biri yenidən işlənmiş quraşdırma aləti idi deisctl. Biz ondan Fleet klasterində Deis Workflow-u quraşdırmaq və idarə etmək üçün istifadə etdik.

Helm 1 Homebrew, apt və yum kimi tanınmış paket menecerlərinin imicində və bənzərində yaradılmışdır. Onun əsas məqsədi Kubernetes-də proqramların qablaşdırılması və quraşdırılması kimi vəzifələri sadələşdirmək idi. Helm rəsmi olaraq 2015-ci ildə San-Fransiskoda keçirilən KubeCon konfransında təqdim olunub.

Helmlə ilk cəhdimiz nəticə verdi, lakin bu, ciddi məhdudiyyətlərdən məhrum olmadı. O, giriş YAML blokları kimi generatorlarla ətirlənmiş bir sıra Kubernetes manifestlərini götürdü. (ön məsələ)* və nəticələri Kubernetes-ə yüklədi.

* Qeyd. tərcümə.: Helm-in ilk versiyasından Kubernetes resurslarını təsvir etmək üçün YAML sintaksisi seçildi və konfiqurasiyalar yazarkən Jinja şablonları və Python skriptləri dəstəkləndi. Bu və ümumiyyətlə Helmin ilk versiyasının cihazı haqqında daha çox "Helmin qısa tarixi" fəslində yazdıq. bu material.

Məsələn, YAML faylında bir sahəni əvəz etmək üçün manifestinizə aşağıdakı konstruksiyanı əlavə edərdiniz:

#helm:generate sed -i -e s|ubuntu-debootstrap|fluffy-bunny| my/pod.yaml

Şablonlaşdırıcı mühərriklərin bu gün mövcud olması gözəldir, elə deyilmi?

Bir çox səbəblərə görə, bu ilk Kubernetes quraşdırıcısı manifest fayllarının sərt kodlu siyahısını tələb etdi və yalnız kiçik, sabit hadisələr ardıcıllığını yerinə yetirdi. İstifadəsi o qədər çətin idi ki, Deis Workflow R&D komandası məhsullarını bu platformaya köçürməyə çalışarkən çətin anlar yaşadılar - bununla belə, ideyanın toxumları artıq səpilmişdi. İlk cəhdimiz böyük öyrənmə fürsəti oldu, çünki biz istifadəçilərimiz üçün gündəlik problemləri həll edən praqmatik alətlər yaratmaqda həqiqətən həvəsli olduğumuzu başa düşdük.

Keçmiş səhvlərin təcrübəsinə əsaslanaraq, Helm 2-ni inkişaf etdirməyə başladıq.

Dəbilqənin hazırlanması 2

2015-ci ilin sonunda Google komandası bizimlə əlaqə saxladı. Onlar Kubernetes üçün oxşar alət üzərində işləyirdilər. Kubernetes üçün Yerləşdirmə Meneceri Google Bulud Platforması üçün istifadə edilən mövcud alətin limanı idi. Onlar soruşdular: “Biz bir neçə gün oxşarlıq və fərqləri müzakirə etməyə hazırıqmı?”

2016-cı ilin yanvar ayında Sükan və Yerləşdirmə Meneceri komandaları fikir mübadiləsi aparmaq üçün Seattleda görüşdülər. Danışıqlar Helm 2 yaratmaq üçün hər iki layihəni birləşdirmək üçün iddialı planla nəticələndi. Deis və Google ilə birlikdə SkipBox (indi Bitnami hissəsi - təqribən tərcümə.), və biz Helm 2 üzərində işləməyə başladıq.

Helm-dən istifadə rahatlığını saxlamaq istədik, lakin aşağıdakıları əlavə edin:

  • fərdiləşdirmə üçün qrafik şablonları;
  • komandalar üçün klasterdaxili idarəetmə;
  • yüksək səviyyəli diaqram deposu;
  • imza qabiliyyəti ilə sabit paket formatı;
  • semantik versiyaya və versiyalar arasında geriyə uyğunluğun qorunmasına güclü bağlılıq.

Bu məqsədlərə nail olmaq üçün Helm ekosisteminə ikinci element əlavə edilmişdir. Bu klasterdaxili komponent Tiller adlanırdı və Helm diaqramlarının quraşdırılmasına və idarə olunmasına cavabdeh idi.

2-cı ildə Helm 2016-nin buraxılmasından bəri Kubernetes bir neçə əsas yenilik gördü. Rol əsaslı giriş nəzarəti təqdim edildi (RBAC), nəticədə atribut əsaslı giriş nəzarətini (ABAC) əvəz etdi. Yeni resurs növləri təqdim edildi (o vaxt yerləşdirmələr hələ beta versiyada idi). Xüsusi Resurs Tərifləri icad edilmişdir (əvvəlcə Üçüncü Tərəf Resursları və ya TPR adlanır). Ən əsası isə ən yaxşı təcrübələr toplusu ortaya çıxdı.

Bütün bu dəyişikliklər arasında Helm Kubernetes istifadəçilərinə sədaqətlə xidmət etməyə davam etdi. Üç ildən və bir çox yeni əlavələrdən sonra, Helm-in inkişaf edən ekosistemin artan ehtiyaclarını qarşılamağa davam edə bilməsi üçün kod bazasında əhəmiyyətli dəyişikliklər etməyin vaxtı olduğu aydın oldu.

Tillerlə vidalaşdı

Helm 2-nin inkişafı zamanı biz Google-un Yerləşdirmə Meneceri ilə inteqrasiyamızın bir hissəsi kimi Tilleri təqdim etdik. Tiller ümumi klasterdə işləyən komandalar üçün mühüm rol oynadı: o, infrastrukturu idarə edən müxtəlif mütəxəssislərə eyni buraxılışlar dəsti ilə qarşılıqlı əlaqə yaratmağa imkan verdi.

Rol əsaslı giriş nəzarəti (RBAC) Kubernetes 1.6-da defolt olaraq aktiv edildiyi üçün istehsalda Tiller ilə işləmək çətinləşdi. Mümkün təhlükəsizlik siyasətlərinin çoxluğuna görə, bizim mövqeyimiz standart olaraq icazə verən konfiqurasiya təklif etmək idi. Bu, yeni başlayanlara əvvəlcə təhlükəsizlik parametrlərinə girmədən Helm və Kubernetes ilə sınaq keçirməyə imkan verdi. Təəssüf ki, bu icazəli konfiqurasiya istifadəçiyə ehtiyacı olmayan çox geniş icazələr verə bilər. DevOps və SRE mühəndisləri Tiller-i çox kirayəçili klasterdə quraşdırarkən əlavə əməliyyat addımlarını öyrənməli idilər.

İcmanın Helm-dən konkret vəziyyətlərdə necə istifadə etdiyini öyrənməklə biz başa düşdük ki, Tillerin buraxılış idarəetmə sisteminin vəziyyətləri saxlamaq və ya buraxılış məlumatı üçün mərkəzi mərkəz kimi çıxış etmək üçün çoxluqdaxili komponentə etibar etməyə ehtiyac yoxdur. Bunun əvəzinə biz sadəcə Kubernetes API serverindən məlumat ala, müştəri tərəfində diaqram yarada və Kubernetes quraşdırma qeydini saxlaya bildik.

Tillerin əsas məqsədi Tillersiz də həyata keçirilə bilərdi, ona görə də Helm 3 ilə bağlı ilk qərarlarımızdan biri Tilleri tamamilə tərk etmək idi.

Tillerin getməsi ilə Helmin təhlükəsizlik modeli köklü şəkildə sadələşdirilmişdir. Helm 3 indi bugünkü Kubernetes-in bütün müasir təhlükəsizlik, identifikasiya və avtorizasiya xüsusiyyətlərini dəstəkləyir. Helm icazələri ilə müəyyən edilir kubeconfig faylı. Klaster administratorları istifadəçi hüquqlarını istənilən detallılığa məhdudlaşdıra bilər. Relizlər hələ də klasterdə saxlanılır, Helm funksionallığının qalan hissəsi saxlanılır.

Diaqram depoları

Yüksək səviyyədə diaqram deposu diaqramların saxlanıla və paylaşıla biləcəyi yerdir. Helm müştərisi diaqramları paketləyir və depoya itələyir. Sadə dillə desək, diaqramlar anbarı index.yaml faylı və bəzi paketləşdirilmiş diaqramları olan primitiv HTTP serveridir.

Ən əsas saxlama tələblərinə cavab verən Charts Repository API-nin bəzi üstünlükləri olsa da, onun bir sıra çatışmazlıqları da var:

  • Diaqram repozitoriyaları istehsal mühitində lazım olan əksər təhlükəsizlik tətbiqləri ilə uyğun gəlmir. İstehsal ssenarilərində autentifikasiya və avtorizasiya üçün standart API-yə malik olmaq vacibdir.
  • Qrafikin imzalanması, bütövlüyünü və mənşəyini yoxlamaq üçün istifadə edilən Helm's chart mənşə alətləri Diaqramın nəşri prosesinin isteğe bağlı hissəsidir.
  • Çox istifadəçi ssenarilərində eyni diaqram başqa bir istifadəçi tərəfindən yüklənə bilər ki, bu da eyni məzmunu saxlamaq üçün lazım olan yerin miqdarını ikiqat artırır. Bu problemi həll etmək üçün daha ağıllı depolar hazırlanmışdır, lakin onlar formal spesifikasiyanın bir hissəsi deyil.
  • Axtarış, metaməlumatların saxlanması və diaqramların axtarışı üçün vahid indeks faylının istifadəsi təhlükəsiz çox istifadəçi tətbiqetmələrini inkişaf etdirməyi çətinləşdirdi.

Layihə Docker paylanması (həmçinin Docker Registry v2 kimi tanınır) Docker Registry-nin varisidir və əslində Docker şəkillərinin qablaşdırılması, göndərilməsi, saxlanması və yayılması üçün alətlər dəstidir. Bir çox böyük bulud xidmətləri Distribution əsasında məhsullar təklif edir. Bu artan diqqətlə, Dağıtım layihəsi onu Açıq Mənbə dünyasının ən uğurlu görünməyən qəhrəmanlarından birinə çevirən illərlə aparılan təkmilləşdirmələrdən, ən yaxşı təhlükəsizlik təcrübələrindən və sahə sınaqlarından bəhrələnib.

Bəs siz Distribution layihəsinin yalnız konteyner şəkillərini deyil, istənilən məzmun formasını yaymaq üçün nəzərdə tutulduğunu bilirdinizmi?

Səylər sayəsində Açıq Konteyner Təşəbbüsü (və ya OCI), Helm diaqramları istənilən Dağıtım nümunəsinə yerləşdirilə bilər. Hələlik bu proses eksperimental xarakter daşıyır. Tam Helm 3 üçün tələb olunan giriş dəstəyi və digər funksiyalar üzərində iş hələ də davam edir, lakin biz OCI və Distribution komandalarının illər ərzində etdiyi kəşflərdən öyrənməkdən məmnunuq. Və onların mentorluğu və rəhbərliyi vasitəsilə biz yüksək əlçatan xidməti miqyasda idarə etməyin nə olduğunu öyrənirik.

Helm Chart repozitoriyalarında qarşıdan gələn bəzi dəyişikliklərin daha ətraflı təsviri mövcuddur. по ссылке.

Buraxılış İdarəetmə

Helm 3-də tətbiq vəziyyəti klaster daxilində bir neçə obyekt tərəfindən izlənilir:

  • buraxılış obyekti - tətbiq nümunəsini təmsil edir;
  • buraxılış versiyasının sirri - müəyyən bir zamanda tətbiqin istənilən vəziyyətini təmsil edir (məsələn, yeni versiyanın buraxılması).

Çağırış helm install buraxılış obyekti və buraxılış versiyasının sirrini yaradır. Zəng edin helm upgrade buraxılış obyekti tələb edir (onu dəyişdirə bilər) və yeni dəyərləri və hazırlanmış manifestdən ibarət yeni buraxılış versiyasının sirrini yaradır.

Buraxılış obyekti buraxılış haqqında məlumatı ehtiva edir, burada buraxılış adlı diaqram və dəyərlərin xüsusi quraşdırılmasıdır. Bu obyekt buraxılış haqqında yüksək səviyyəli metadatanı təsvir edir. Buraxılış obyekti tətbiqin həyat dövrü ərzində davam edir və bütün buraxılış versiyası sirlərinin, həmçinin Helm diaqramı tərəfindən birbaşa yaradılmış bütün obyektlərin sahibidir.

Buraxılış versiyasının sirri buraxılışı bir sıra reviziyalar (quraşdırma, yeniləmələr, geri qaytarma, silmə) ilə əlaqələndirir.

Helm 2-də düzəlişlər son dərəcə ardıcıl idi. Zəng edin helm install yaradılmış v1, sonrakı yeniləmə (incələmə) - v2 və s. Buraxılış və buraxılış versiyasının sirri reviziya kimi tanınan vahid obyektə yığılmışdır. Reviziyalar Tiller ilə eyni ad məkanında saxlanılırdı, bu, hər buraxılışın ad sahəsi baxımından "qlobal" olması demək idi; nəticədə adın yalnız bir nümunəsindən istifadə edilə bilər.

Helm 3-də hər buraxılış bir və ya bir neçə buraxılış versiyası sirri ilə əlaqələndirilir. Buraxılış obyekti həmişə Kubernetes-də yerləşdirilmiş cari buraxılışı təsvir edir. Hər buraxılış versiyasının sirri həmin buraxılışın yalnız bir versiyasını təsvir edir. Təkmilləşdirmə, məsələn, yeni buraxılış versiyasının sirri yaradacaq və sonra buraxılış obyektini həmin yeni versiyaya işarə edəcək şəkildə dəyişəcək. Geri qaytarma halında, buraxılışı əvvəlki vəziyyətə qaytarmaq üçün əvvəlki buraxılış versiyasının sirlərindən istifadə edə bilərsiniz.

Tiller-dən imtina etdikdən sonra Helm 3 buraxılış məlumatlarını buraxılışla eyni ad məkanında saxlayır. Belə bir dəyişiklik, eyni buraxılış adı ilə bir diaqramı fərqli bir ad məkanında quraşdırmağa imkan verir və məlumatlar klaster yeniləmələri / yenidən başlamaları arasında saxlanılır və s. Məsələn, WordPress-i "foo" ad sahəsinə, sonra isə "bar" ad sahəsinə quraşdıra bilərsiniz və hər iki buraxılışı "wordpress" adlandırmaq olar.

Diaqramdan asılılıq dəyişir

Qrafiklər qablaşdırılır (istifadə edərək helm package) Helm 2 ilə istifadə üçün Helm 3 ilə quraşdırıla bilər, lakin diaqramın işlənməsi prosesi tamamilə əsaslı təmir edilib, ona görə də Helm 3 ilə diaqramların işlənib hazırlanmasına davam etmək üçün bəzi dəyişikliklər edilməlidir. Xüsusilə, diaqramdan asılılığın idarə edilməsi sistemi dəyişib.

Diaqramın asılılıq idarəetmə sistemi buradan köçürüldü requirements.yaml и requirements.lock haqqında Chart.yaml и Chart.lock. Bu o deməkdir ki, əmrdən istifadə edən qrafiklər helm dependency, Helm 3-də işləmək üçün bəzi konfiqurasiya tələb olunur.

Bir nümunəyə baxaq. Gəlin Helm 2-də qrafikə bir asılılıq əlavə edək və Helm 3-ə keçərkən nələrin dəyişdiyini görək.

Sükan 2 requirements.yaml belə görünürdü:

dependencies:
- name: mariadb
  version: 5.x.x
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mariadb.enabled
  tags:
    - database

Helm 3-də eyni asılılıq sizdə əks olunacaq Chart.yaml:

dependencies:
- name: mariadb
  version: 5.x.x
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mariadb.enabled
  tags:
    - database

Diaqramlar hələ də endirilir və kataloqa yerləşdirilir charts/, belə ki, alt diaqramlar (alt diaqramlar), kataloqda yerləşir charts/dəyişmədən işləməyə davam edəcək.

Kitabxana qrafikləri ilə tanışlıq

Helm 3 kitabxana qrafikləri adlanan qrafiklər sinfini dəstəkləyir (kitabxana diaqramı). Bu diaqram digər diaqramlar tərəfindən istifadə olunur, lakin öz başına heç bir buraxılış artefaktı yaratmır. Kitabxana diaqramı şablonları yalnız elementləri elan edə bilər define. Digər məzmun sadəcə nəzərə alınmır. Bu, istifadəçilərə bir çox diaqramlarda istifadə oluna bilən kod parçalarını təkrar istifadə etməyə və paylaşmağa imkan verir, bununla da təkrarlanmanın qarşısını alır və prinsipə əməl edir. DRY.

Kitabxana qrafikləri bölmədə elan edilmişdir dependencies faylda Chart.yaml. Onların quraşdırılması və idarə edilməsi digər qrafiklərdən heç bir fərqi yoxdur.

dependencies:
  - name: mylib
    version: 1.x.x
    repository: quay.io

Biz bu komponentin diaqram tərtibatçıları üçün açacağı istifadə hallarını, həmçinin kitabxana qrafiklərindən yarana biləcək ən yaxşı təcrübələri gözləyirik.

Növbəti nədir?

Helm 3.0.0-alpha.1 Helm-in yeni versiyasını yaratmağa başladığımız əsasdır. Məqalədə Helm 3-ün bəzi maraqlı xüsusiyyətlərini təsvir etdim. Onların bir çoxu hələ inkişafın ilkin mərhələsindədir və bu normaldır; alfa buraxılışının məqsədi ideyanı sınamaq, ilk qəbul edənlərdən rəy toplamaq və fərziyyələrimizi təsdiqləməkdir.

Alfa versiyası çıxan kimi (bunu unutmayın artıq baş verib - təqribən. tərcümə.), biz icmadan Helm 3 üçün yamaqları qəbul etməyə başlayacağıq. Yeni funksionallığın işlənib hazırlanmasına və mənimsənilməsinə və istifadəçilərin biletləri açaraq və düzəlişlər etməklə prosesdə iştirakını hiss etmələrinə imkan yaratmaq üçün möhkəm təməl qurmaq lazımdır.

Bu yazıda Helm 3-ə gələn bəzi əsas təkmilləşdirmələri vurğulamağa çalışdım, lakin bu siyahı heç bir halda tam deyil. Helm 3 üçün tam plana təkmilləşdirilmiş yeniləmə strategiyaları, OCI reyestrləri ilə daha dərin inteqrasiya və diaqram dəyərlərini yoxlamaq üçün JSON sxemlərinin istifadəsi kimi yeni funksiyalar daxildir. Biz həmçinin kod bazasını təmizləməyi və onun son üç il ərzində baxımsız qalmış hissələrini yeniləməyi planlaşdırırıq.

Nəyisə qaçırdığımızı hiss edirsinizsə, fikirlərinizi eşitmək istərdik!

Müzakirəmizə qoşulun Boş kanallar:

  • #helm-users suallar və icma ilə sadə ünsiyyət üçün;
  • #helm-dev çəkmə sorğularını, kodu və səhvləri müzakirə etmək.

Siz həmçinin cümə axşamı 19:30 MSK-da həftəlik İctimai Tərtibatçı Zənglərimizdə söhbət edə bilərsiniz. Görüşlər əsas tərtibatçıların və cəmiyyətin üzərində işlədiyi vəzifələrin, həmçinin həftənin müzakirə mövzularının müzakirəsinə həsr olunub. Hər kəs görüşə qoşula və iştirak edə bilər. Link Slack kanalında mövcuddur #helm-dev.

Tərcüməçidən PS

Bloqumuzda da oxuyun:

Mənbə: www.habr.com

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