Муаррифии Helm 3

Муаррифии Helm 3

Шарҳ. тарҷума.: 16 майи соли равон дар инкишофи мудири бастаи Kubernetes - Helm як марҳилаи муҳимро қайд мекунад. Дар ин рӯз аввалин версияи алфа-версияи ояндаи асосии лоиҳа - 3.0 муаррифӣ шуд. Нашри он ба Ҳелм тағйироти назаррас ва деринтизор хоҳад овард, ки бисёриҳо дар ҷомеаи Кубернетес умеди калон доранд. Мо худамон яке аз онҳоем, зеро мо Helm-ро барои ҷойгиркунии барномаҳо фаъолона истифода мебарем: мо онро ба асбоби худ барои татбиқи CI/CD ҳамгиро кардем. верф ва гох-гох дар ободонии болооб сахми худро мегузорем. Ин тарҷума 7 ёддошти блоги расмии Helm-ро дар бар мегирад, ки ба версияи аввалини алфа-версияи Helm 3 бахшида шудаанд ва дар бораи таърихи лоиҳа ва хусусиятҳои асосии Helm 3 сӯҳбат мекунанд. Муаллифи онҳо Мат “баконгобблер” Фишер, корманди Microsoft мебошад. ва яке аз муҳофизони асосии Helm.

15 октябри соли 2015 лоиҳае, ки ҳоло бо номи Ҳелм маъруф аст, таваллуд шуд. Ҳамагӣ як сол пас аз таъсиси худ, ҷомеаи Helm ба Kubernetes ҳамроҳ шуд ва дар ҳоле ки фаъолона дар Helm 2 кор мекард. Дар моҳи июни соли 2018, Helm ба CNCF ҳамроҳ шуд ҳамчун лоиҳаи рушдёбанда (инкубаторӣ). Ба зудӣ ба пеш ҳаракат кунед ва версияи аввалини алфа аз Helm 3 дар роҳ аст. (ин нашр аллакай ба амал омадааст дар нимаи моҳи май - тақрибан. тарҷума.).

Дар ин порча, ман дар бораи он, ки ҳамааш аз куҷо оғоз шуд, чӣ гуна мо ба куҷо расидем, сӯҳбат хоҳам кард, баъзе хусусиятҳои беназиреро, ки дар версияи аввалини алфа Helm 3 мавҷуданд, муаррифӣ мекунам ва шарҳ медиҳам, ки чӣ гуна мо ба пеш ҳаракат кунем.

Ҷамъбасти:

  • таърихи офариниши Ҳелм;
  • видоъ бо Тиллер;
  • репозиторийҳои диаграмма;
  • идоракунии озодкунӣ;
  • тағирот дар вобастагии диаграмма;
  • диаграммаҳои китобхона;
  • баъд чӣ?

Таърихи Ҳелм

Таваллуд

Helm 1 ҳамчун лоиҳаи кушодаасос, ки аз ҷониби Deis сохта шудааст, оғоз ёфт. Мо як стартапи хурд будем ҷаббида Microsoft дар баҳори соли 2017. Лоиҳаи дигари кушодаи манбаи мо, ки онро Дейс ном дорад, асбобе дошт deisctl, ки (дар байни чизҳои дигар) барои насб ва истифода бурдани платформаи Deis дар Кластери флот. Дар он вақт, Флот яке аз аввалин платформаҳои оркестри контейнерӣ буд.

Дар нимаи соли 2015 мо тасмим гирифтем, ки масирро тағир диҳем ва Дейсро (он вақт Deis Workflow номида шуд) аз Флот ба Кубернетес кӯчидем. Яке аз аввалинхо асбоби монтажкунй аз нав сохта шуд. deisctl. Мо онро барои насб ва идоракунии Deis Workflow дар кластери Флот истифода бурдем.

Helm 1 дар симои менеҷерони машҳури бастаҳо ба монанди Homebrew, apt ва yum сохта шудааст. Ҳадафи асосии он содда кардани вазифаҳо ба монанди бастабандӣ ва насби барномаҳо дар Kubernetes буд. Ҳелм расман соли 2015 дар конфронси KubeCon дар Сан-Франсиско муаррифӣ шуд.

Аввалин кӯшиши мо бо Ҳелм натиҷа дод, аммо он бидуни маҳдудиятҳои ҷиддӣ набуд. Вай як қатор манифестҳои Кубернетесро гирифт, ки бо генераторҳо ҳамчун блокҳои муқаддимавии YAML мазза карда шудаанд. (масъалаи аввал)*, ва натиҷаҳоро ба Kubernetes бор кард.

* Шарҳ. тарҷума.: Аз версияи якуми Helm, синтаксиси YAML барои тавсифи захираҳои Kubernetes интихоб шуд ва ҳангоми навиштани конфигуратсияҳо қолибҳои Jinja ва скриптҳои Python дастгирӣ карда шуданд. Мо дар бораи ин ва сохтори варианти аввали Ҳелм дар маҷмӯъ дар боби «Таърихи мухтасари Ҳелм» бештар навишта будем. ин материал.

Масалан, барои иваз кардани майдон дар файли 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 2. Дар баробари Deis ва Google, бачаҳо аз SkippBox (ҳоло як қисми Битнамӣ - тақрибан тарҷума.), ва мо дар Helm 2 ба кор шурӯъ кардем.

Мо мехостем осонии истифодаи Helm-ро нигоҳ дорем, аммо инҳоро илова кунед:

  • Шаблонҳои диаграмма барои мутобиқсозӣ;
  • идоракунии дохили кластер барои дастаҳо;
  • анбори диаграммаҳои дараҷаи ҷаҳонӣ;
  • формати бастаи устувор бо имконоти имзо;
  • ӯҳдадории қавӣ ба версияи семантикӣ ва нигоҳ доштани мутобиқати ақиб байни версияҳо.

Барои ноил шудан ба ин ҳадафҳо, ба экосистемаи Helm як унсури дуюм илова карда шуд. Ин ҷузъи дохили кластер Tiller ном дошт ва барои насб кардани диаграммаҳои Helm ва идоракунии онҳо масъул буд.

Пас аз нашри Helm 2 дар соли 2016, Кубернетес якчанд навовариҳои муҳимро илова кард. Иловаи назорати дастрасӣ ба нақш (РБАК), ки дар ниҳоят назорати дастрасиро дар асоси аттрибутӣ (ABAC) иваз кард. Навъҳои нави захираҳо ҷорӣ карда шуданд (Ҷойгиркунӣ дар он вақт ҳанӯз дар ҳолати бета буд). Таърифҳои захираҳои фармоишӣ (дар ибтидо захираҳои тарафи сеюм ё TPR номида мешаванд) ихтироъ карда шуданд. Ва аз хама мухимаш он аст, ки мачмуи тачрибаи пешкадам ба вучуд омад.

Дар байни ҳамаи ин тағирот, Ҳелм хидмати содиқона ба корбарони Kubernetesро идома дод. Пас аз се сол ва иловаҳои зиёди нав, маълум шуд, ки вақти он расидааст, ки ба пойгоҳи код тағйироти ҷиддие ворид кунем, то Ҳелм қонеъ кардани ниёзҳои афзояндаи экосистемаи таҳаввулшавандаро идома диҳад.

Дуруди самимӣ бо Тиллер

Ҳангоми таҳияи Helm 2, мо Tiller-ро ҳамчун як қисми ҳамгироии худ бо Менеҷери густариши Google муаррифӣ кардем. Тиллер барои дастаҳое, ки дар як кластери умумӣ кор мекунанд, нақши муҳим бозид: он ба мутахассисони гуногун, ки инфрасохторро идора мекунанд, имкон дод, ки бо як маҷмӯи релизҳо ҳамкорӣ кунанд.

Азбаски назорати дастрасӣ ба нақш (RBAC) дар Kubernetes 1.6 ба таври нобаёнӣ фаъол карда шуд, кор бо Тиллер дар истеҳсол мушкилтар шуд. Аз сабаби шумораи зиёди сиёсатҳои эҳтимолии амният, мавқеи мо ин буд, ки ба таври нобаёнӣ конфигуратсияи иҷозатдодашударо пешниҳод кунем. Ин ба навоварон имкон дод, ки бидуни ворид шудан ба танзимоти амниятӣ бо Ҳелм ва Кубернетес таҷриба кунанд. Мутаассифона, ин конфигуратсияи иҷозат метавонад ба корбар доираи аз ҳад зиёди иҷозатҳоеро диҳад, ки ба онҳо эҳтиёҷ надоштанд. Муҳандисони DevOps ва SRE бояд ҳангоми насб кардани Tiller дар кластери бисёр иҷорагир қадамҳои иловагии амалиётиро омӯзанд.

Пас аз фаҳмидани он, ки ҷомеа чӣ гуна Helm-ро дар ҳолатҳои мушаххас истифода мебарад, мо фаҳмидем, ки системаи идоракунии релизҳои Тиллер барои нигоҳ доштани ҳолат ё ҳамчун маркази марказӣ барои иттилооти нашршуда такя кардан лозим нест. Ба ҷои ин, мо метавонем танҳо аз сервери API Kubernetes маълумот гирем, дар тарафи муштарӣ диаграмма эҷод кунем ва сабти насбро дар Kubernetes нигоҳ дорем.

Ҳадафи асосии Тиллер метавонист бидуни Тиллер ба даст омад, аз ин рӯ яке аз аввалин қарорҳои мо дар бораи Helm 3 комилан даст кашидан аз Тиллер буд.

Бо рафтани Тиллер, модели амнияти Ҳелм ба таври куллӣ содда карда шуд. Ҳоло Helm 3 ҳама усулҳои муосири амният, шахсият ва иҷозати Kubernetes-ро дастгирӣ мекунад. Иҷозатҳои Helm бо истифода аз он муайян карда мешаванд файли kubeconfig. Маъмурони кластер метавонанд ҳуқуқҳои корбарро ба ҳама гуна сатҳҳои гранулярӣ маҳдуд кунанд. Варақаҳо то ҳол дар дохили кластер захира карда мешаванд ва боқимондаи функсияҳои Helm бетағйир боқӣ мемонанд.

Репозиторийҳои диаграмма

Дар сатҳи баланд, анбори диаграмма ҷойест, ки диаграммаҳоро нигоҳ доштан ва мубодила кардан мумкин аст. Мизоҷи Helm диаграммаҳоро ба репозиторий бастабандӣ мекунад ва мефиристад. Оддӣ карда гӯем, анбори диаграммаҳо сервери ибтидоии HTTP бо файли index.yaml ва баъзе диаграммаҳои бастабандӣ мебошад.

Гарчанде ки барои API Charts Repository баъзе бартариҳо мавҷуд аст, ки ба талаботи асосии нигоҳдорӣ ҷавобгӯ мебошанд, инчунин якчанд камбудиҳо мавҷуданд:

  • Анборҳои диаграмма бо аксари татбиқи амният, ки дар муҳити истеҳсолӣ талаб карда мешаванд, мувофиқ нестанд. Доштани API-и стандартӣ барои аутентификатсия ва иҷозат дар сенарияҳои истеҳсолӣ ниҳоят муҳим аст.
  • Асбобҳои пайдоиши диаграммаи Helm, ки барои имзо кардан, тасдиқи якпорчагӣ ва сарчашмаи диаграмма истифода мешаванд, як қисми ихтиёрии раванди нашри диаграмма мебошанд.
  • Дар сенарияҳои бисёркорбар, як диаграмма метавонад аз ҷониби корбари дигар бор карда шавад, ки миқдори ҷойро барои нигоҳ доштани ҳамон мундариҷа дучанд мекунад. Барои ҳалли ин мушкилот анборҳои оқилтар таҳия шудаанд, аммо онҳо ҷузъи мушаххасоти расмӣ нестанд.
  • Истифодаи як файли индекси ягона барои ҷустуҷӯ, нигоҳдории метамаълумотҳо ва дарёфти диаграммаҳо таҳияи татбиқи амни бисёркорбарро мушкил кардааст.

Лоиҳа Тақсимоти Docker (инчунин бо номи Docker Registry v2 маълум аст) вориси Реестри Docker аст ва аслан ҳамчун маҷмӯи асбобҳо барои бастабандӣ, интиқол, нигоҳдорӣ ва таҳвили тасвирҳои Docker амал мекунад. Бисёре аз хидматҳои абрии калон маҳсулоти дар асоси тақсимотро пешниҳод мекунанд. Ба шарофати ин таваҷҷуҳи афзоянда, лоиҳаи Тақсимот аз беҳбудиҳо, таҷрибаҳои беҳтарини амният ва санҷиши саҳроӣ баҳра бурд, ки онро ба яке аз муваффақтарин қаҳрамонҳои номаълуми ҷаҳони Сарчашмаи Кушода табдил дод.

Аммо оё шумо медонистед, ки лоиҳаи тақсимот барои паҳн кардани ҳама гуна мундариҷа тарҳрезӣ шудааст, на танҳо тасвирҳои контейнер?

Ба туфайли саъю кушиш Ташаббуси контейнерҳои кушод (ё OCI), диаграммаҳои Helm метавонанд дар ҳама гуна мисоли Distribution ҷойгир карда шаванд. Ҳоло ин раванд таҷрибавӣ аст. Дастгирии воридшавӣ ва дигар хусусиятҳое, ки барои пурра Helm 3 лозиманд, кор дар ҷараён аст, аммо мо аз кашфиҳое, ки гурӯҳҳои OCI ва Distribution дар тӯли солҳо ба даст овардаанд, хеле хурсандем. Ва тавассути роҳнамоӣ ва роҳнамоии онҳо, мо мефаҳмем, ки дар миқёс истифода бурдани хидмати дастраси баланд чӣ гуна аст.

Тавсифи муфассали баъзе тағйироти дарпешистода ба анборҳои диаграммаи Helm дастрас аст пайванд.

Идоракунии релиз

Дар Helm 3, ҳолати барнома дар дохили кластер аз ҷониби як ҷуфт объектҳо пайгирӣ карда мешавад:

  • объекти озод - мисоли барномаро ифода мекунад;
  • сирри версияи барориши - ҳолати дилхоҳи барномаро дар як лаҳзаи мушаххас нишон медиҳад (масалан, баровардани версияи нав).

Мушкилот helm install объекти озод ва сирри версияи релизро эҷод мекунад. Занг занед helm upgrade объекти релизро талаб мекунад (ки он метавонад тағир ёбад) ва сирри версияи нави барориши дорои арзишҳои нав ва манифести омодашударо эҷод мекунад.

Объекти релиз дорои маълумот дар бораи релиз аст, ки дар он релиз насби мушаххаси диаграмма ва арзишҳои номбаршуда мебошад. Ин объект метамаълумоти сатҳи болоро дар бораи нашр тавсиф мекунад. Объекти барориши барнома дар тӯли давраи зиндагии барнома боқӣ мемонад ва соҳиби ҳама сирри версияи версияи релиз, инчунин ҳама объектҳое мебошад, ки мустақиман тавассути диаграммаи Helm сохта шудаанд.

Сирри версияи релиз релизро бо як қатор ислоҳот (насб, навсозӣ, бозгашт, ҳазф) алоқаманд мекунад.

Дар Helm 2, таҳрирҳо бениҳоят мувофиқ буданд. Занг занед helm install v1 офарида шудааст, навсозии минбаъда (навсозӣ) - v2 ва ғайра. Сирри версияи нашр ва озодкунӣ ба як объекти ягона, ки бо номи ревизия маълум аст, ҷамъ карда шуданд. Таҳрирҳо дар ҳамон фазои ном бо Тиллер нигоҳ дошта мешуданд, ки ин маънои онро дошт, ки ҳар як нашр аз ҷиҳати фазои ном "глобалӣ" буд; дар натиҷа, танҳо як мисоли ном метавонад истифода шавад.

Дар Helm 3, ҳар як нашр бо як ё якчанд сирри версияи релиз алоқаманд аст. Объекти нашр ҳамеша версияи ҷории дар Kubernetes ҷойгиршударо тавсиф мекунад. Ҳар як сирри версияи нашр танҳо як версияи ин версияро тавсиф мекунад. Навсозӣ, масалан, сирри версияи нави нашрро эҷод мекунад ва сипас объекти нашрро барои нишон додани он версияи нав иваз мекунад. Дар ҳолати бозгашт, шумо метавонед сирри версияи қаблиро барои баргардонидани версия ба ҳолати қаблӣ истифода баред.

Пас аз партофта шудани Тиллер, 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 баъзе танзимотро талаб мекунад.

Биёед як мисолро дида бароем. Биёед ба диаграмма дар Helm 2 вобастагӣ илова кунем ва бубинем, ки ҳангоми гузаштан ба Helm 3 чӣ тағир меёбад.

Дар руль 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 барои муҳокима кардани дархостҳои кашидан, рамз ва хатогиҳо.

Шумо инчунин метавонед дар зангҳои ҳарҳафтаинаи таҳиягарони ҷамъиятии мо дар рӯзҳои панҷшанбе соати 19:30 MSK сӯҳбат кунед. Вохӯриҳо ба муҳокимаи масъалаҳое бахшида шудаанд, ки таҳиягарони асосӣ ва ҷомеа бо онҳо кор мекунанд, инчунин мавзӯъҳои муҳокимаи ҳафта. Ҳар як шахс метавонад дар вохӯрӣ ширкат варзид. Истинод дар канали Slack дастрас аст #helm-dev.

PS аз тарҷумон

Инчунин дар блоги мо хонед:

Манбаъ: will.com

Илова Эзоҳ