Рульмен таныстыру 3

Рульмен таныстыру 3

Ескерту. аударма: Үстіміздегі жылдың 16 мамыры Kubernetes - Helm пакетінің менеджерін дамытудағы маңызды кезең болып табылады. Бұл күні жобаның болашақ негізгі нұсқасы - 3.0 бірінші альфа-релизі таныстырылды. Оның шығарылымы Helm-ге елеулі және көптен күткен өзгерістер әкеледі, оған Кубернетес қауымдастығындағы көптеген адамдар үлкен үміт артады. Біз өзіміз солардың біріміз, өйткені қолданбаларды орналастыру үшін Helm-ді белсенді түрде қолданамыз: біз оны CI/CD енгізу құралына біріктірдік. верф және мезгіл-мезгіл біз жоғары ағынды дамытуға өз үлесімізді қосамыз. Бұл аударма Helm 7-тің бірінші альфа-шығарылымына арналған және жобаның тарихы мен Helm 3-тің негізгі мүмкіндіктері туралы айтатын ресми Helm блогының 3 жазбасын біріктіреді. Олардың авторы - Мэтт «баконгобблер» Фишер, Microsoft қызметкері. және Helm негізгі қолдаушылардың бірі.

15 жылдың 2015 қазанында қазір Хельм деп аталатын жоба дүниеге келді. Құрылғаннан кейін бір жыл өткен соң, Helm қауымдастығы Helm 2-де белсенді жұмыс істеу кезінде Кубернетеске қосылды. 2018 жылдың маусымында Helm CNCF-ге қосылды дамып келе жатқан (инкубациялық) жоба ретінде. Қазірге қарай жылдам алға, жаңа Helm 3-тің алғашқы альфа-шығарылымы жолда. (осы шығарылым орын алды мамыр айының ортасында - шамамен. аудар.).

Бұл бөлімде мен мұның бәрі қай жерде басталғаны, бүгінгі жағдайға қалай жеткеніміз туралы сөйлесемін, Helm 3-тің бірінші альфа-релизінде қол жетімді кейбір бірегей мүмкіндіктермен таныстырамын және қалай алға жылжуды жоспарлап отырғанымызды түсіндіремін.

Қысқаша мазмұны:

  • Хельмнің құрылу тарихы;
  • Тиллермен қоштасу;
  • диаграмма репозиторийлері;
  • босатуды басқару;
  • диаграмма тәуелділіктерінің өзгеруі;
  • кітапхана диаграммалары;
  • ары қарай не?

Хельм тарихы

Туылған

Helm 1 Deis жасаған Open Source жобасы ретінде басталды. Біз шағын стартап болдық сіңіріледі Microsoft 2017 жылдың көктемінде. Біздің Деис деп аталатын басқа ашық бастапқы жобамызда құрал болды deisctl, ол (басқа нәрселермен қатар) Deis платформасын орнату және пайдалану үшін пайдаланылды Флот кластері. Сол кезде Флот алғашқы контейнерлік оркестрлік платформалардың бірі болды.

2015 жылдың ортасында біз бағытты өзгерту туралы шешім қабылдадық және Deis (ол кезде Deis Workflow атауы өзгертілді) Флоттан Кубернетеске көштік. Алғашқылардың бірі болып қайта құрастырылған орнату құралы болды. deisctl. Біз оны Fleet кластерінде Deis Workflow орнату және басқару үшін пайдаландық.

Helm 1 Homebrew, apt және yum сияқты атақты пакет менеджерлерінің бейнесінде жасалған. Оның негізгі мақсаты Kubernetes-те қолданбаларды орау және орнату сияқты тапсырмаларды жеңілдету болды. Helm ресми түрде 2015 жылы Сан-Францискодағы KubeCon конференциясында таныстырылды.

Хельммен алғашқы әрекетіміз нәтиже берді, бірақ ол кейбір елеулі шектеулерсіз болмады. Ол кіріспе YAML блоктары ретінде генераторлармен хош иістендірілген Кубернетес манифесттерінің жиынтығын алды. (алдыңғы мәселе)* және нәтижелерді Kubernetes ішіне жүктеңіз.

* Ескерту. аударма: Helm бағдарламасының бірінші нұсқасынан Kubernetes ресурстарын сипаттау үшін YAML синтаксисі таңдалды және конфигурацияларды жазу кезінде Jinja үлгілері мен Python сценарийлеріне қолдау көрсетілді. Біз бұл туралы және жалпы Helm-тің бірінші нұсқасының құрылымы туралы «Хельмнің қысқаша тарихы» тарауында көбірек жаздық. бұл материал.

Мысалы, YAML файлындағы өрісті ауыстыру үшін манифестке келесі құрылымды қосу керек болды:

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

Шаблондық қозғалтқыштардың бүгінде болғаны өте жақсы, солай емес пе?

Көптеген себептерге байланысты бұл ерте Kubernetes орнатушысы манифест файлдарының қатты кодталған тізімін қажет етті және тек шағын, бекітілген оқиғалар тізбегін орындады. Қолдану қиын болғаны сонша, Deis Workflow R&D тобы өз өнімдерін осы платформаға көшіруге тырысқанда қиынға соқты - дегенмен идеяның тұқымы әлдеқашан себілген болатын. Біздің бірінші әрекетіміз оқудың тамаша мүмкіндігі болды: біз пайдаланушыларымыз үшін күнделікті мәселелерді шешетін прагматикалық құралдарды жасауға шынымен құмар екенімізді түсіндік.

Өткен қателіктердің тәжірибесіне сүйене отырып, біз Helm 2-ді жасай бастадық.

Руль жасау 2

2015 жылдың соңында Google командасы бізге хабарласты. Олар Kubernetes үшін ұқсас құралмен жұмыс істеді. Kubernetes үшін орналастыру менеджері Google Cloud Platform үшін пайдаланылған бар құралдың порты болды. «Біз бірнеше күн бойы ұқсастықтар мен айырмашылықтарды талқылауды қалаймыз ба?» - деп сұрады олар.

2016 жылдың қаңтарында Helm және Deployment Manager командалары идеялармен алмасу үшін Сиэтлде кездесті. Келіссөздер өршіл жоспармен аяқталды: Helm 2 жасау үшін екі жобаны біріктіру. Deis және Google-мен бірге, жігіттер SkippBox (қазір битнами бөлігі - шамамен аудар.), және біз Helm 2-де жұмыс істей бастадық.

Біз Helm пайдаланудың қарапайымдылығын сақтағымыз келді, бірақ келесілерді қосыңыз:

  • теңшеуге арналған диаграмма үлгілері;
  • командалар үшін кластер ішілік басқару;
  • әлемдік деңгейдегі диаграмма репозиторийі;
  • қолтаңба опциясы бар тұрақты пакет пішімі;
  • семантикалық нұсқаларды жасауға және нұсқалар арасындағы кері үйлесімділікті сақтауға берік міндеттеме.

Осы мақсаттарға жету үшін Helm экожүйесіне екінші элемент қосылды. Бұл кластер ішіндегі компонент Tiller деп аталды және Helm диаграммаларын орнатуға және оларды басқаруға жауапты болды.

2 жылы Helm 2016 шығарылғаннан бері Кубернетес бірнеше негізгі инновацияларды қосты. Рөлге негізделген қатынасты басқару қосылды (RBAC), ол ақырында Атрибутқа негізделген қатынасты басқаруды (ABAC) ауыстырды. Жаңа ресурс түрлері енгізілді (орналастырулар әлі бета-нұсқада болатын). Пайдаланушы ресурстарының анықтамалары (бастапқыда Үшінші тарап ресурстары немесе TPR деп аталады) ойлап табылды. Ең бастысы, озық тәжірибелер жинағы пайда болды.

Осы өзгерістердің барлығында Helm Kubernetes пайдаланушыларына адал қызмет көрсетуді жалғастырды. Үш жылдан және көптеген жаңа толықтырулардан кейін, Helm дамып келе жатқан экожүйенің өсіп келе жатқан қажеттіліктерін қанағаттандыруды жалғастыра алуына кепілдік беру үшін кодтық базаға елеулі өзгерістер енгізу уақыты келгені анық болды.

Тиллермен қоштасу

Helm 2 әзірлеу барысында біз Google Deployment Manager-мен интеграцияның бір бөлігі ретінде Tiller-ді енгіздік. Tiller ортақ кластер ішінде жұмыс істейтін командалар үшін маңызды рөл атқарды: ол инфрақұрылымды басқаратын әртүрлі мамандарға бірдей шығарылымдар жиынтығымен өзара әрекеттесуге мүмкіндік берді.

Рөлге негізделген қатынасты басқару (RBAC) Kubernetes 1.6 нұсқасында әдепкі бойынша қосылғандықтан, өндірісте Tiller-пен жұмыс істеу қиындай түсті. Мүмкін болатын қауіпсіздік саясаттарының көптігіне байланысты біздің ұстанымымыз әдепкі бойынша рұқсат етілген конфигурацияны ұсыну болды. Бұл жаңадан келгендерге алдымен қауіпсіздік параметрлеріне сүңгусіз Helm және Kubernetes-пен тәжірибе жасауға мүмкіндік берді. Өкінішке орай, бұл рұқсат конфигурациясы пайдаланушыға қажет емес рұқсаттардың тым кең ауқымын беруі мүмкін. DevOps және SRE инженерлері Tilleri көп жалға алушы кластерінде орнату кезінде қосымша операциялық қадамдарды үйренуі керек болды.

Қауымдастықтың Helm-ті нақты жағдайларда қалай пайдаланатынын білгеннен кейін біз Tillerin шығарылымын басқару жүйесі күйді сақтау немесе шығару ақпаратының орталық хаб ретінде жұмыс істеуі үшін кластер ішілік құрамдасқа сенудің қажеті жоқ екенін түсіндік. Оның орнына біз жай ғана Kubernetes API серверінен ақпаратты ала аламыз, клиент жағында диаграмма жасай аламыз және Kubernetes-те орнату жазбасын сақтай аламыз.

Тиллердің негізгі мақсатына Тиллерсіз қол жеткізуге болатын еді, сондықтан Helm 3-ке қатысты алғашқы шешімдеріміздің бірі Тиллерден толығымен бас тарту болды.

Тиллердің кетуімен Хельмнің қауіпсіздік моделі түбегейлі жеңілдетілді. Helm 3 қазір қазіргі Kubernetes-тің барлық заманауи қауіпсіздік, сәйкестендіру және авторизация әдістерін қолдайды. Helm рұқсаттары арқылы анықталады kubeconfig файлы. Кластер әкімшілері пайдаланушы құқықтарын түйіршіктіліктің кез келген деңгейіне шектей алады. Шығарылымдар әлі де кластер ішінде сақталады және Helm функцияларының қалған бөлігі өзгеріссіз қалады.

Диаграмма репозиторийлері

Жоғары деңгейде диаграмма репозиторийі диаграммаларды сақтауға және ортақ пайдалануға болатын орын болып табылады. Helm клиенті диаграммаларды бумалайды және репозиторийге жібереді. Қарапайым тілмен айтқанда, диаграммалар репозиторийі index.yaml файлы және кейбір пакеттелген диаграммалары бар қарапайым HTTP сервері болып табылады.

Негізгі сақтау талаптарын қанағаттандыратын Charts Repository API интерфейсінің кейбір артықшылықтары болғанымен, бірнеше кемшіліктері де бар:

  • Диаграмма репозиторийлері өндірістік ортада талап етілетін көптеген қауіпсіздік енгізулерімен үйлесімді емес. Аутентификация және авторизация үшін стандартты API болуы өндіріс сценарийлерінде өте маңызды.
  • Қол қою, диаграмманың тұтастығы мен шығу тегін тексеру үшін пайдаланылатын Helm диаграммасының шығу құралдары Диаграмманы жариялау процесінің қосымша бөлігі болып табылады.
  • Көп пайдаланушы сценарийлерінде бір диаграмманы басқа пайдаланушы жүктеп салуы мүмкін, бұл бірдей мазмұнды сақтау үшін қажетті орын көлемін екі есе арттырады. Бұл мәселені шешу үшін ақылды репозиторийлер жасалды, бірақ олар ресми сипаттаманың бөлігі емес.
  • Іздеу, метадеректерді сақтау және диаграммаларды шығарып алу үшін жалғыз индекс файлын пайдалану қауіпсіз көп пайдаланушылық енгізулерді әзірлеуді қиындатты.

Жоба Docker Distribution (сондай-ақ Docker Registry v2 ретінде белгілі) Docker Registry мұрагері болып табылады және Docker кескіндерін орау, тасымалдау, сақтау және жеткізу үшін құралдар жиынтығы ретінде әрекет етеді. Көптеген ірі бұлттық қызметтер Таратуға негізделген өнімдерді ұсынады. Осы ұлғайған назардың арқасында «Тарату» жобасы көптеген жылдар бойы жақсартулардың, қауіпсіздіктің ең жақсы тәжірибелерінің және далалық сынақтардың пайдасын көрді, бұл оны Ашық көздер әлемінің ең сәтті кейіпкерлерінің біріне айналдырды.

Бірақ сіз Тарату жобасының контейнерлік кескіндерді ғана емес, мазмұнның кез келген түрін таратуға арналғанын білесіз бе?

Күш-жігердің арқасында Ашық контейнер бастамасы (немесе OCI), Helm диаграммаларын кез келген Distribution данасына орналастыруға болады. Әзірге бұл процесс эксперименталды. Жүйеге кіруді қолдау және толық Helm 3 үшін қажет басқа мүмкіндіктер - бұл орындалып жатқан жұмыс, бірақ біз OCI және Distribution топтары жылдар бойы жасаған жаңалықтардан үйренуге қуаныштымыз. Және олардың тәлімгерлігі мен нұсқаулығы арқылы біз қол жетімді ауқымды қызмет көрсетудің не екенін білеміз.

Helm диаграмма репозитарийлеріне алдағы кейбір өзгерістердің толығырақ сипаттамасы қолжетімді байланыс.

Шығарылымды басқару

Helm 3-те қолданба күйі кластер ішінде нысандар жұбы арқылы бақыланады:

  • шығару объектісі - қолданба данасын көрсетеді;
  • шығарылым нұсқасының құпиясы - белгілі бір уақыттағы қолданбаның қажетті күйін білдіреді (мысалы, жаңа нұсқаның шығарылымы).

Қоңырау helm install шығару нысанын және шығарылым нұсқасының құпиясын жасайды. Қоңырау helm upgrade шығару нысанын қажет етеді (ол өзгерте алады) және жаңа мәндер мен дайындалған манифесті бар жаңа шығарылым нұсқасының құпиясын жасайды.

Шығарылым нысаны шығарылым туралы ақпаратты қамтиды, мұнда шығарылым аталған диаграмма мен мәндердің арнайы орнатылымы болып табылады. Бұл нысан шығарылым туралы жоғарғы деңгейдегі метадеректерді сипаттайды. Шығарылым нысаны қолданбаның өмірлік циклі бойы сақталады және барлық шығарылым нұсқасы құпияларының, сондай-ақ Helm диаграммасы арқылы тікелей жасалған барлық нысандардың иесі болып табылады.

Шығарылым нұсқасының құпиясы шығарылымды бірқатар түзетулермен (орнату, жаңартулар, кері қайтарулар, жою) байланыстырады.

Helm 2-де түзетулер өте дәйекті болды. Қоңырау helm install v1 жасалды, кейінгі жаңарту (жаңарту) - v2 және т.б. Шығару және шығару нұсқасының құпиясы қайта қарау деп аталатын бір нысанға жиырылды. Түзетулер Tiller сияқты бірдей аттар кеңістігінде сақталды, бұл әрбір шығарылым аттар кеңістігі тұрғысынан «жаһандық» екенін білдіреді; нәтижесінде атаудың тек бір данасын пайдалануға болады.

Helm 3 жүйесінде әрбір шығарылым бір немесе бірнеше шығарылым нұсқасы құпияларымен байланысты. Шығарылым нысаны әрқашан Kubernetes жүйесіне орналастырылған ағымдағы шығарылымды сипаттайды. Әрбір шығарылым нұсқасының құпиясы сол шығарылымның тек бір нұсқасын сипаттайды. Жаңарту, мысалы, жаңа шығарылым нұсқасының құпиясын жасайды, содан кейін сол жаңа нұсқаны көрсету үшін шығарылым нысанын өзгертеді. Кері қайтару жағдайында шығарылымды алдыңғы күйге қайтару үшін алдыңғы шығарылым нұсқасының құпияларын пайдалануға болады.

Tiller жойылғаннан кейін Helm 3 шығарылым деректерін шығарылым сияқты бірдей аттар кеңістігінде сақтайды. Бұл өзгерту басқа аттар кеңістігінде бірдей шығарылым атауы бар диаграмманы орнатуға мүмкіндік береді және деректер т.б. кластер жаңартулары/қайта жүктеулер арасында сақталады. Мысалы, WordPress-ті «foo» аттар кеңістігіне, содан кейін «бар» аттар кеңістігіне орнатуға болады және екі шығарылымды да «wordpress» деп атауға болады.

Диаграммалық тәуелділіктерге өзгертулер

Бумаланған диаграммалар (пайдалану helm package) Helm 2-мен пайдалану үшін Helm 3-пен орнатуға болады, дегенмен диаграмманы әзірлеу жұмыс процесі толығымен күрделі жөндеуден өтті, сондықтан Helm 3-пен диаграмманы әзірлеуді жалғастыру үшін кейбір өзгертулер енгізу қажет. Атап айтқанда, диаграммаға тәуелділікті басқару жүйесі өзгерді.

Диаграмманың тәуелділікті басқару жүйесі келесіден ауыстырылды requirements.yaml и requirements.lock туралы Chart.yaml и Chart.lock. Бұл пәрменді пайдаланған диаграммалар дегенді білдіреді helm dependency, Helm 3-те жұмыс істеу үшін кейбір параметрлерді қажет етеді.

Бір мысалды қарастырайық. 2-ші Helm-дегі диаграммаға тәуелділікті қосып, 3-ші Helm-ге ауысқанда не өзгеретінін көрейік.

Рульде 2 requirements.yaml былай көрінді:

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

Helm 3-те дәл осындай тәуелділік сізде көрсетіледі Chart.yaml:

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

Диаграммалар әлі де жүктеліп, каталогқа орналастырылады charts/, сондықтан ішкі диаграммалар (ішкі диаграммалар), каталогта жатыр charts/, өзгеріссіз жұмысын жалғастырады.

Кітапхана диаграммаларымен таныстыру

Helm 3 кітапхана диаграммалары деп аталатын диаграммалар класын қолдайды (кітапхана диаграммасы). Бұл диаграмма басқа диаграммалармен пайдаланылады, бірақ ешқандай шығарылым артефактілерін өздігінен жасамайды. Кітапхана диаграммасының үлгілері тек элементтерді жариялай алады define. Басқа мазмұн жай еленбейді. Бұл пайдаланушыларға бірнеше диаграммаларда пайдалануға болатын код үзінділерін қайта пайдалануға және бөлісуге мүмкіндік береді, осылайша қайталануды болдырмайды және принципті ұстанады. ҚҰРҒАҚ.

Кітапхана диаграммалары бөлімде жарияланған dependencies файлда Chart.yaml. Оларды орнату және басқару басқа диаграммалардан еш айырмашылығы жоқ.

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

Біз бұл компонент диаграмма әзірлеушілер үшін ашылатын пайдалану жағдайларына, сондай-ақ кітапхана диаграммаларынан пайда болатын ең жақсы тәжірибелерге қуаныштымыз.

Ары қарай не?

Helm 3.0.0-alpha.1 - бұл біз Helm бағдарламасының жаңа нұсқасын жасай бастайтын негіз. Мақалада мен Helm 3-тің кейбір қызықты ерекшеліктерін сипаттадым. Олардың көпшілігі әлі дамудың бастапқы кезеңінде және бұл қалыпты жағдай; Альфа шығарылымының мәні - идеяны сынау, алғашқы пайдаланушылардың пікірлерін жинау және біздің болжамдарымызды растау.

Альфа нұсқасы шыққаннан кейін (бұл екенін есте сақтаңыз болды - шамамен. аудар.), біз қауымдастықтан Helm 3 үшін патчтарды қабылдай бастаймыз. Сізге жаңа функцияларды әзірлеуге және қабылдауға және пайдаланушыларға билеттерді ашу және түзетулер енгізу арқылы процеске қатысуға мүмкіндік беретін күшті негіз жасау қажет.

Мен Helm 3-ке келетін кейбір негізгі жақсартуларды атап өтуге тырыстым, бірақ бұл тізім толық емес. Helm 3 үшін толық жол картасы жақсартылған жаңарту стратегиялары, OCI тізілімдерімен тереңірек интеграция және диаграмма мәндерін тексеру үшін JSON схемаларын пайдалану сияқты мүмкіндіктерді қамтиды. Сондай-ақ біз кодтық базаны тазалауды және оның соңғы үш жыл ішінде назардан тыс қалған бөліктерін жаңартуды жоспарлап отырмыз.

Егер бірдеңені өткізіп алғанымызды сезсеңіз, біз сіздің ойыңызды тыңдағымыз келеді!

Біздің пікірталасқа қосылыңыз Бос арналар:

  • #helm-users сұрақтар және қоғамдастықпен қарапайым қарым-қатынас үшін;
  • #helm-dev тарту сұрауларын, кодты және қателерді талқылау.

Сондай-ақ, апта сайынғы Қоғамдық әзірлеушілер қоңыраулары арқылы бейсенбі күндері MSK сағат 19:30-да сөйлесуге болады. Кездесулер негізгі әзірлеушілер мен қауымдастық жұмыс істеп жатқан мәселелерді, сондай-ақ аптадағы талқылау тақырыптарын талқылауға арналған. Кездесуге кез келген адам қосылып, қатыса алады. Сілтеме Slack арнасында қолжетімді #helm-dev.

Аудармашыдан PS

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру