Амнияти руль

Моҳияти ҳикояро дар бораи маъмултарин менеҷери бастаи Kubernetes метавон бо истифода аз эмодзи тасвир кард:

  • қуттӣ Helm аст (ки он чизест, ки ба версияи охирини Emoji наздиктар аст);
  • қулф - амният;
  • одами хурдакак халли масъала аст.

Амнияти руль

Дар асл, ҳама чиз каме мураккабтар хоҳад буд ва ҳикоя пур аз тафсилоти техникӣ дар бораи он аст Ҳелмро чӣ гуна бехатар кардан мумкин аст.

  • Агар шумо намедонед ё фаромӯш карда бошед, ба таври мухтасар Ҳелм чист. Он чӣ гуна мушкилотро ҳал мекунад ва он дар экосистема дар куҷо ҷойгир аст.
  • Биёед ба меъмории Хелм назар кунем. Ҳеҷ сӯҳбат дар бораи амният ва чӣ гуна бехатартар кардани асбоб ё ҳалли масъала бидуни фаҳмидани меъмории ҷузъ анҷом намешавад.
  • Биёед ҷузъҳои Helm-ро муҳокима кунем.
  • Саволи аз ҳама ҷолиб ин оянда аст - версияи нави Helm 3. 

Ҳама чиз дар ин мақола ба Helm 2 дахл дорад. Ин версия дар ҳоли ҳозир дар истеҳсолот аст ва эҳтимоли зиёд он версияест, ки шумо ҳоло истифода мебаред ва он версияи дорои хатарҳои амниятӣ мебошад.


Дар бораи спикер: Александр Хайров (allexx) 10 сол боз инкишоф ёфта, ба бехтар шудани мазмун ёрй мерасонад Москва Python Conf++ ва ба хайати комитет дохил шуд Саммити Ҳелм. Ҳоло ӯ дар Chainstack ҳамчун роҳбари рушд кор мекунад - ин гибриди байни менеҷери рушд ва шахсе мебошад, ки барои расонидани релизҳои ниҳоӣ масъул аст. Яъне, он дар майдони набард вокеъ аст, ки дар он чо аз офариниши махсулот cap карда, то кор фармудани он сурат мегирад.

Chainstack як стартапи хурд ва фаъолона рушдёбанда аст, ки рисолати он ба мизоҷон имкон медиҳад, ки инфрасохтор ва мураккабии истифодаи барномаҳои ғайримарказиро фаромӯш кунанд; дастаи таҳиякунанда дар Сингапур ҷойгир аст. Аз Chainstack хоҳиш накунед, ки криптовалютаро фурӯшад ё харад, балки пешниҳод кунед, ки дар бораи чаҳорчӯбаҳои blockchain корхона сӯҳбат кунед ва онҳо ба шумо бо камоли майл ҷавоб хоҳанд дод.

Helm

Ин менеҷери баста (диаграмма) барои Kubernetes аст. Роҳи аз ҳама маъмултарин ва универсалии овардани барномаҳо ба кластери Kubernetes.

Амнияти руль

Мо, албатта, дар бораи як равиши сохторӣ ва саноатӣ бештар аз эҷоди манифестҳои YAML худ ва навиштани утилитаҳои хурд сухан меронем.

Helm беҳтаринест, ки ҳоло дастрас ва маъмул аст.

Чаро Ҳелм? Пеш аз ҳама, зеро он аз ҷониби CNCF дастгирӣ карда мешавад. Cloud Native як ташкилоти калон аст ва ширкати волидайн барои лоиҳаҳои Kubernetes, etcd, Fluentd ва ғайра мебошад.

Боз як далели муҳим ин аст, ки Helm лоиҳаи хеле маъмул аст. Вақте ки ман дар бораи чӣ гуна бехатар кардани Helm дар моҳи январи соли 2019 сӯҳбатро сар кардам, лоиҳа дар GitHub ҳазор ситора дошт. То май шумораи онхо 12 хазор нафар буд.

Бисёр одамон ба Helm таваҷҷӯҳ доранд, аз ин рӯ ҳатто агар шумо онро ҳоло истифода набаред, шумо аз донистани амнияти он манфиат хоҳед гирифт. Бехатарӣ муҳим аст.

Дастаи асосии Helm аз ҷониби Microsoft Azure дастгирӣ карда мешавад ва аз ин рӯ, бар хилофи бисёре аз дигарон лоиҳаи хеле устувор аст. Нашри Helm 3 Alpha 2 дар нимаи моҳи июл нишон медиҳад, ки шумораи зиёди одамон дар лоиҳа кор мекунанд ва онҳо хоҳиш ва қувват барои рушд ва такмили Helm доранд.

Амнияти руль

Helm якчанд мушкилоти асосии идоракунии барномаҳоро дар Kubernetes ҳал мекунад.

  • Бастаи барнома. Ҳатто як барнома ба монанди "Салом, Ҷаҳон" дар WordPress аллакай аз якчанд хидмат иборат аст ва шумо мехоҳед онҳоро якҷоя кунед.
  • Идоракунии мураккабие, ки бо идоракунии ин барномаҳо меояд.
  • Давраи ҳаёт, ки пас аз насб ё ҷойгиркунии барнома ба охир намерасад. Он зиндагї мекунад, онро нав кардан лозим аст ва Ҳелм дар ин ёрї мекунад ва мекўшад, ки барои ин чорањо ва сиёсатњои дуруст андешад.

Халтабандӣ он ба таври возеҳ ташкил карда шудааст: метамаълумотҳо комилан мувофиқи кори менеҷери бастаҳои муқаррарии Linux, Windows ё MacOS мавҷуд аст. Яъне, репозиторий, вобастагӣ аз бастаҳои гуногун, иттилооти мета барои замимаҳо, танзимот, хусусиятҳои конфигуратсия, индексатсияи иттилоот ва ғайра. Helm ба шумо имкон медиҳад, ки ҳамаи инро барои барномаҳо дастрас ва истифода баред.

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

Идоракунии давраи ҳаёти барнома - ба назари ман, ин саволи ҷолибтарин ва ҳалношуда аст. Аз ин чост, ки ман дар руз ба Хельм омадам. Ба мо лозим буд, ки давраи зиндагии барномаҳоро назорат кунем ва мехостем, ки давраҳои CI/CD ва барномаҳои худро ба ин парадигма гузаронем.

Helm ба шумо имкон медиҳад, ки:

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

Илова бар ин Руль дорои "батареяҳо" - шумораи зиёди чизҳои болаззат, ки метавонанд ба шакли плагинҳо дохил карда шаванд, ҳаёти шуморо содда мекунанд. Плагинҳоро мустақилона навиштан мумкин аст, онҳо хеле ҷудо ҳастанд ва меъмории ҳамоҳангро талаб намекунанд. Агар шумо хоҳед, ки чизеро амалӣ кунед, ман тавсия медиҳам, ки онро ҳамчун плагин иҷро кунед ва эҳтимолан онро дар болооб дохил кунед.

Helm ба се мафҳуми асосӣ асос ёфтааст:

  • Диаграммаи репо — тавсиф ва массиви параметрсозӣ барои манифести шумо имконпазир аст. 
  • Танзим кунед -яъне арзишҳое, ки татбиқ хоҳанд шуд (матн, арзишҳои ададӣ ва ғайра).
  • озод кардан ду ҷузъи болоиро ҷамъ мекунад ва якҷоя онҳо ба Release табдил меёбанд. Нашрияҳоро метавон нусхабардорӣ кард ва ба ин васила ба як давраи муташаккили ҳаёт ноил мешавад: хурд дар вақти насб ва калон ҳангоми навсозӣ, коҳиш ё бозгашт.

Меъмории руль

Диаграмма ба таври консептуалӣ меъмории сатҳи баланди Ҳелмро тасвир мекунад.

Амнияти руль

Ба шумо хотиррасон мекунам, ки Ҳелм чизест, ки ба Кубернетес алоқаманд аст. Аз ин рӯ, мо бе кластери Кубернетес кор карда наметавонем (росткунҷа). Ҷузъи kube-apiserver дар усто ҷойгир аст. Бе Helm мо Kubeconfig дорем. Helm як бинарии хурдро меорад, агар шумо метавонед онро чунин бигӯед, утилитаи Helm CLI, ки дар компютер, ноутбук, mainframe - дар ҳама чиз насб карда мешавад.

Аммо ин кифоя нест. Helm дорои як ҷузъи сервер бо номи Tiller мебошад. Он манфиатҳои Helm дар дохили кластерро ифода мекунад; он як барнома дар дохили кластери Kubernetes аст, мисли ҳама гуна дигар.

Ҷузъи навбатии Диаграммаи репо анбори дорои диаграммаҳо мебошад. Анбори расмӣ вуҷуд дорад ва метавонад як анбори хусусии ширкат ё лоиҳа бошад.

Муносибат

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

  • Мо гап мезанем Helm install, ба репозиторий дастрасӣ пайдо кунед (Chart Repo) ва диаграммаи Helm гиред.

  • Утилитаи Helm (Helm CLI) бо Kubeconfig ҳамкорӣ мекунад, то бифаҳмад, ки бо кадом кластер тамос мегирад. 
  • Бо гирифтани ин маълумот, утилита ба Tiller, ки дар кластери мо ҷойгир аст, ҳамчун замима ишора мекунад. 
  • Tiller Kube-apiserver-ро даъват мекунад, ки амалҳоро дар Kubernetes иҷро кунад, баъзе объектҳоро созад (хизматҳо, подкастҳо, репликаҳо, асрор ва ғайра).

Минбаъд, мо диаграммаро душвор мегардонем, то вектори ҳамларо бубинем, ки тамоми меъмории Helm дар маҷмӯъ ба он дучор шуда метавонад. Ва он гоҳ мо кӯшиш мекунем, ки ӯро муҳофизат кунем.

Вектори ҳамла

Аввалин нуқтаи заифии эҳтимолӣ ин аст API имтиёзнок-истифодабаранда. Ҳамчун як қисми нақша, ин ҳакерест, ки дастрасии администраторро ба Helm CLI гирифтааст.

Корбари беимтиёзи API инчунин метавонад хатар эҷод кунад, агар он дар ҷои наздик бошад. Чунин корбар контексти дигар хоҳад дошт, масалан, ӯро дар як фазои номи кластер дар танзимоти Kubeconfig собит кардан мумкин аст.

Вектори ҷолибтарин ҳамла метавонад раванде бошад, ки дар дохили кластер дар ҷое дар наздикии Тиллер ҷойгир аст ва метавонад ба он дастрасӣ пайдо кунад. Ин метавонад сервери веб ё микросервис бошад, ки муҳити шабакаи кластерро мебинад.

Варианти экзотикӣ, вале торафт маъмултарини ҳамла Чарт Репоро дар бар мегирад. Диаграммае, ки муаллифи беинсоф офаридааст, метавонад дорои захираҳои хатарнок бошад ва шумо онро бо боварии худ ба анҷом мерасонед. Ё он метавонад диаграммаеро, ки шумо аз анбори расмӣ зеркашӣ мекунед, иваз карда метавонад ва масалан, захираеро дар шакли сиёсат эҷод кунад ва дастрасии онро афзоиш диҳад.

Амнияти руль

Биёед кӯшиш кунем, ки ҳамлаҳои ҳамаи ин чаҳор тарафро пешгирӣ кунем ва бифаҳмем, ки дар меъмории Ҳелм дар куҷо мушкилот вуҷуд доранд ва дар куҷо, шояд ҳеҷ чиз вуҷуд надорад.

Биёед диаграммаро калон кунем, унсурҳои бештар илова кунем, аммо ҳамаи ҷузъҳои асосиро нигоҳ дорем.

Амнияти руль

Helm CLI бо Chart Repo муошират мекунад, бо Kubeconfig ҳамкорӣ мекунад ва кор ба кластер ба ҷузъи Tiller интиқол дода мешавад.

Тиллер бо ду объект муаррифӣ мешавад:

  • Tiller-deploy svc, ки хидмати муайянро фош мекунад;
  • Тиллер-ҷойгир (дар диаграмма дар як нусха дар як реплика), ки дар он тамоми бор кор мекунад, ки ба кластер дастрасӣ дорад.

Барои ҳамкорӣ протоколҳо ва схемаҳои гуногун истифода мешаванд. Аз нуқтаи назари амният, мо бештар манфиатдорем:

  • Механизме, ки тавассути он Helm CLI ба репо диаграмма дастрасӣ пайдо мекунад: кадом протокол, аутентификатсия вуҷуд дорад ва бо он чӣ кор кардан мумкин аст.
  • Протоколе, ки тавассути он Helm CLI бо истифода аз kubectl бо Тиллер муошират мекунад. Ин сервери RPC аст, ки дар дохили кластер насб шудааст.
  • Худи Tiller ба микросервисҳое дастрас аст, ки дар кластер зиндагӣ мекунанд ва бо Kube-apiserver ҳамкорӣ мекунанд.

Амнияти руль

Биёед хамаи ин сохахоро бо тартиб мухокима кунем.

РБАК

Агар RBAC фаъол набошад, дар бораи ягон амнияти Helm ё ягон хидмати дигар дар дохили кластер гап задан ҷоиз нест.

Чунин ба назар мерасад, ки ин тавсияи охирин нест, аммо ман итминон дорам, ки бисёриҳо то ҳол RBAC-ро ҳатто дар истеҳсолот фаъол накардаанд, зеро ин ғавғои зиёд аст ва бисёр чизҳоро танзим кардан лозим аст. Бо вуҷуди ин, ман шуморо ташвиқ мекунам, ки ин корро кунед.

Амнияти руль

https://rbac.dev/ — ҳуқуқшиноси вебсайт барои RBAC. Он миқдори зиёди маводи ҷолибро дар бар мегирад, ки ба шумо дар ташкили RBAC кӯмак мерасонанд, нишон медиҳанд, ки чаро он хуб аст ва чӣ гуна бо он дар истеҳсолот зиндагӣ кардан мумкин аст.

Ман кӯшиш мекунам фаҳмонам, ки Тиллер ва RBAC чӣ гуна кор мекунанд. Тиллер дар дохили кластер таҳти ҳисоби муайяни хидматрасонӣ кор мекунад. Одатан, агар RBAC танзим нашуда бошад, ин суперкорбар хоҳад буд. Дар конфигуратсияи асосӣ, Тиллер администратор хоҳад буд. Ин аст, ки чаро аксар вақт мегӯянд, ки Тиллер нақби SSH ба кластери шумост. Дар асл, ин дуруст аст, аз ин рӯ шумо метавонед ба ҷои Ҳисоби хидматрасонии пешфарз дар диаграммаи боло ҳисоби хидматрасонии ҷудогонаро истифода баред.

Вақте ки шумо Helm-ро оғоз мекунед ва онро бори аввал дар сервер насб мекунед, шумо метавонед бо истифода аз ҳисоби хидматрасонӣ насб кунед --service-account. Ин ба шумо имкон медиҳад, ки корбарро бо ҳадди ақали ҳуқуқҳои зарурӣ истифода баред. Дуруст аст, ки ба шумо лозим меояд, ки чунин "галланд" эҷод кунед: Нақш ва Нақш.

Амнияти руль

Мутаассифона, Ҳелм ин корро барои шумо намекунад. Шумо ё мудири кластери Kubernetes шумо бояд барои гузаштан аз Helm маҷмӯи Нақшҳо ва RoleBindings-ро барои ҳисоби хидмат пешакӣ омода созед.

Савол ба миён меояд - фарқияти байни Нақш ва ClusterRole чист? Фарқият дар он аст, ки ClusterRole барои ҳама фазоҳои ном кор мекунад, бар хилофи Нақшҳои муқаррарӣ ва RoleBindings, ки танҳо барои фазои номҳои махсус кор мекунанд. Шумо метавонед сиёсатҳоро барои тамоми кластер ва ҳама фазои номҳо танзим кунед ё барои ҳар як фазои ном ба таври инфиродӣ танзим кунед.

Қобили зикр аст, ки RBAC боз як мушкилоти бузургро ҳал мекунад. Бисёр одамон шикоят мекунанд, ки Helm, мутаассифона, бисёриҷорӣ нест (бисёртиҷорӣ дастгирӣ намекунад). Агар якчанд даста кластерро истеъмол кунанд ва Helm-ро истифода баранд, дар ин кластер муқаррар кардани сиёсатҳо ва маҳдуд кардани дастрасии онҳо аслан ғайриимкон аст, зеро ҳисоби хидмати муайяне вуҷуд дорад, ки Helm зери он кор мекунад ва он тамоми захираҳоро дар кластер аз зери он эҷод мекунад. , ки баъзан хеле нороҳат аст. Ин дуруст аст - ба монанди худи файли бинарӣ, ба монанди раванд, Хелм Тиллер мафҳуми иҷораи бисёрсола надорад.

Бо вуҷуди ин, як роҳи олие вуҷуд дорад, ки ба шумо имкон медиҳад, ки Tiller-ро дар як кластер чанд маротиба иҷро кунед. Бо ин ҳеҷ мушкиле нест, Tiller метавонад дар ҳама фазои номҳо оғоз шавад. Ҳамин тариқ, шумо метавонед RBAC, Kubeconfig -ро ҳамчун контекст истифода баред ва дастрасӣ ба Helm махсусро маҳдуд кунед.

Чунин хоҳад буд.

Амнияти руль

Масалан, ду Kubeconfig бо контекст барои дастаҳои гуногун мавҷуданд (ду фазои ном): X Team барои дастаи таҳия ва кластери маъмур. Кластери маъмурӣ дорои Tiller-и васеи худро дорад, ки дар фазои номи системаи Kube ҷойгир аст, ки мутаносибан ҳисоби хидматрасонии пешрафта мебошад. Ва як фазои алоҳида барои гурӯҳи таҳиягарон, онҳо метавонанд хидматҳои худро дар фазои номҳои махсус ҷойгир кунанд.

Ин як равиши қобили кор аст, Тиллер он қадар гурусна нест, ки ба буҷаи шумо таъсири калон мерасонад. Ин яке аз роҳҳои ҳалли зуд аст.

Озод ҳис кунед, ки Tiller-ро алоҳида танзим кунед ва Kubeconfig-ро бо контекст барои гурӯҳ, барои таҳиягари мушаххас ё муҳити атроф таъмин кунед: Dev, Staging, Production (шубҳа аст, ки ҳама чиз дар як кластер хоҳад буд, аммо ин корро кардан мумкин аст).

Ҳикояи худро идома дода, биёед аз RBAC гузаред ва дар бораи ConfigMaps сӯҳбат кунем.

ConfigMaps

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

Мушкилоти асосии ConfigMaps маълум аст - онҳо асосан хатарноканд; нигоҳ доштани маълумоти ҳассос ғайриимкон аст. Мо дар бораи ҳама чизҳое сухан меронем, ки набояд аз доираи хидмат берун равад, масалан, паролҳо. Дар айни замон роҳи аслии Helm ин гузаштан аз истифодаи ConfigMaps ба асрор аст.

Ин хеле содда анҷом дода мешавад. Танзимоти Tiller-ро бекор кунед ва муайян кунед, ки нигоҳдорӣ махфӣ хоҳад буд. Пас барои ҳар як ҷойгиркунӣ шумо на ConfigMap, балки сирре хоҳед гирифт.

Амнияти руль

Шумо метавонед баҳс кунед, ки асрор худ як мафҳуми аҷиб аст ва он қадар бехатар нест. Аммо, фаҳмидан лозим аст, ки худи таҳиягарони Kubernetes ин корро мекунанд. Аз версияи 1.10 сар карда, яъне. Муддати зиёде аст, ки ҳадди аққал дар абрҳои ҷамъиятӣ, пайваст кардани нигаҳдории дуруст барои нигоҳ доштани асрор имконпазир аст. Ҳоло даста дар бораи роҳҳои беҳтар паҳн кардани дастрасӣ ба асрор, подкастҳои инфиродӣ ё дигар объектҳо кор мекунад.

Беҳтар аст, ки Helm-ро ба сирр интиқол диҳед ва онҳо дар навбати худ ба таври мутамарказ ҳифз карда мешаванд.

Албатта боқӣ мемонад маҳдудияти нигоҳдории маълумот аз 1 MB. Helm дар ин ҷо etcd-ро ҳамчун анбори тақсимшуда барои ConfigMaps истифода мебарад. Ва дар он ҷо онҳо фикр карданд, ки ин як порчаи мувофиқ барои нусхабардорӣ ва ғайра аст. Дар ин бора дар Reddit як баҳси ҷолиб вуҷуд дорад, ман тавсия медиҳам, ки ин хониши хандоварро барои рӯзҳои истироҳат пайдо кунед ё иқтибосро хонед. дар ин ҷо.

Диаграмма Repos

Диаграммаҳо осебпазиртарини иҷтимоӣ мебошанд ва метавонанд манбаи "Одам дар мобайн" шаванд, хусусан агар шумо ҳалли саҳҳомӣ истифода баред. Пеш аз ҳама, мо дар бораи анборҳое сухан меронем, ки тавассути HTTP фош карда мешаванд.

Шумо бешубҳа бояд Helm Repo-ро тавассути HTTPS фош кунед - ин беҳтарин вариант аст ва арзон аст.

Диққат диҳед механизми имзои диаграмма. Технология мисли ҷаҳаннам оддӣ аст. Ин ҳамон чизест, ки шумо дар GitHub, як мошини муқаррарии PGP бо калидҳои ҷамъиятӣ ва хусусӣ истифода мекунед. Насб кунед ва боварӣ ҳосил кунед, ки калидҳои заруриро дошта бошед ва ҳама чизро имзо кунед, ки ин дар ҳақиқат диаграммаи шумост.

Илова бар ин, Мизоҷи Helm TLS-ро дастгирӣ мекунад (на ба маънои HTTP-тарафи сервер, балки TLS-и мутақобила). Шумо метавонед калидҳои сервер ва муштариро барои муошират истифода баред. Ростӣ, ман чунин механизмро истифода намебарам, зеро ман шаҳодатномаҳои мутақобиларо дӯст намедорам. Асосан, музейи диаграмма - воситаи асосӣ барои насб кардани Helm Repo for Helm 2 - инчунин аутентификатсияи асосиро дастгирӣ мекунад. Шумо метавонед аутентификатсияи асосиро истифода баред, агар он қулайтар ва оромтар бошад.

Инчунин як плагин вуҷуд дорад руль-гкс, ки ба шумо имкон медиҳад Chart Repos -ро дар Google Cloud Storage ҷойгир кунед. Ин хеле қулай аст, хуб кор мекунад ва хеле бехатар аст, зеро ҳамаи механизмҳои тавсифшуда дубора коркард карда мешаванд.

Амнияти руль

Агар шумо HTTPS ё TLS-ро фаъол созед, mTLS-ро истифода баред ва аутентификатсияи асосиро барои минбаъд кам кардани хатарҳо фаъол созед, шумо канали муоширати бехатарро бо Helm CLI ва Chart Repo мегиред.

API gRPC

Қадами навбатӣ хеле муҳим аст - бехатарии Tiller, ки дар кластер ҷойгир аст ва аз як тараф сервер аст, аз тарафи дигар, худаш ба ҷузъҳои дигар дастрасӣ пайдо мекунад ва кӯшиш мекунад, ки худро касе вонамуд кунад.

Тавре ки ман аллакай гуфтам, Tiller хидматест, ки gRPC-ро фош мекунад, муштарии Helm ба он тавассути gRPC меояд. Бо нобаёнӣ, албатта, TLS ғайрифаъол аст. Чаро ин кор карда шуд, як саволи баҳсбарангез аст, ба назарам дар оғоз танзимро соддатар кардан лозим аст.

Барои истеҳсол ва ҳатто саҳнасозӣ, ман тавсия медиҳам, ки TLS-ро дар gRPC фаъол созам.

Ба андешаи ман, бар хилофи mTLS барои диаграммаҳо, ин дар ин ҷо мувофиқ аст ва хеле содда анҷом дода мешавад - инфрасохтори PQI эҷод кунед, сертификат эҷод кунед, Тиллерро оғоз кунед, сертификатро ҳангоми оғозёбӣ интиқол диҳед. Пас аз ин, шумо метавонед ҳамаи фармонҳои Helm-ро иҷро кунед ва худро бо шаҳодатномаи тавлидшуда ва калиди хусусӣ пешниҳод кунед.

Амнияти руль

Бо ин роҳ шумо худро аз ҳама дархостҳо ба Тиллер аз берун аз кластер муҳофизат мекунед.

Ҳамин тавр, мо канали пайвастшавӣ ба Тиллерро таъмин кардем, мо аллакай RBAC-ро муҳокима кардем ва ҳуқуқҳои аписервери Kubernetesро танзим карда, доменеро, ки бо он метавонад ҳамкорӣ кунад, коҳиш дод.

Дастгоҳи муҳофизатшуда

Биёед ба диаграммаи ниҳоӣ назар кунем. Ин ҳамон меъморӣ бо ҳамон тирҳо.

Амнияти руль

Ҳама пайвастҳоро акнун метавон бо ранги сабз бехатар кашид:

  • барои Chart Repo мо TLS ё mTLS ва аутентификатсияи асосиро истифода мебарем;
  • mTLS барои Tiller ва он ҳамчун хидмати gRPC бо TLS фош мешавад, мо сертификатҳоро истифода мебарем;
  • кластер ҳисоби хидмати махсусро бо Role ва RoleBinding истифода мебарад. 

Мо кластерро ба таври назаррас муҳофизат кардем, аммо касе боақл гуфт:

"Танҳо як роҳи комилан бехатар буда метавонад - компютери хомӯшшуда, ки дар қуттии бетонӣ ҷойгир аст ва аз ҷониби сарбозон муҳофизат карда мешавад."

Роҳҳои гуногуни коркарди маълумот ва пайдо кардани векторҳои нави ҳамла вуҷуд доранд. Бо вуҷуди ин, ман боварӣ дорам, ки ин тавсияҳо ба стандарти асосии саноат барои бехатарӣ ноил хоҳанд шуд.

Бонус

Ин қисм бевосита ба амният алоқаманд нест, балки муфид хоҳад буд. Ман ба шумо чизҳои ҷолиберо нишон медиҳам, ки кам одамон дар бораи онҳо медонанд. Масалан, чӣ гуна ҷустуҷӯ кардани диаграммаҳо - расмӣ ва ғайрирасмӣ.

Дар анбор github.com/helm/charts Ҳоло тақрибан 300 диаграмма ва ду ҷараён мавҷуданд: устувор ва инкубатор. Ҳар касе, ки саҳм мегузорад, хуб медонад, ки аз инкубатор ба стабил гузаштан то чӣ андоза мушкил аст ва парвоз кардан аз огил то чӣ андоза осон аст. Бо вуҷуди ин, ин беҳтарин воситаи ҷустуҷӯи диаграммаҳо барои Prometheus ва ҳар чизи дигаре, ки ба шумо маъқул нест, бо як сабаби оддӣ - он портал нест, ки шумо метавонед бастаҳоро ба осонӣ ҷустуҷӯ кунед.

Аммо хидмат вуҷуд дорад hub.helm.sh, ки ин пайдо кардани диаграммаҳоро хеле қулайтар мекунад. Муҳимтар аз ҳама, боз бисёр анборҳои беруна ва қариб 800 тӯмор мавҷуданд. Ғайр аз он, шумо метавонед анбори худро пайваст кунед, агар бо ягон сабаб намехоҳед диаграммаҳои худро ба устувор фиристед.

hub.helm.sh-ро санҷед ва биёед онро якҷоя таҳия кунем. Ин хидмат дар доираи лоиҳаи Helm аст ва шумо ҳатто метавонед дар UI он саҳм гузоред, агар шумо як таҳиягари пешрафта бошед ва танҳо хоҳед, ки намуди зоҳириро беҳтар кунед.

Диккати шуморо низ ба он чалб кардан мехостам Интегратсияи API Service Broker Open. Ин душвор ва норавшан ба назар мерасад, аммо он мушкилотеро, ки ҳама бо онҳо рӯ ба рӯ мешаванд, ҳал мекунад. Биёед бо як мисоли оддӣ шарҳ диҳам.

Амнияти руль

Кластери Kubernetes мавҷуд аст, ки дар он мо мехоҳем як барномаи классикиро иҷро кунем - WordPress. Умуман, базаи маълумот барои фаъолияти пурра лозим аст. Роҳҳои зиёди ҳалли гуногун мавҷуданд, масалан, шумо метавонед хидмати давлатии худро оғоз кунед. Ин хеле қулай нест, аммо бисёриҳо ин корро мекунанд.

Дигарон, ба монанди мо дар Chainstack, барои серверҳои худ пойгоҳи додаҳои идорашавандаро ба монанди MySQL ё PostgreSQL истифода мебаранд. Аз ин рӯ, пойгоҳи додаҳои мо дар ҷое дар абр ҷойгиранд.

Аммо мушкилот ба миён меояд: мо бояд хидмати худро бо пойгоҳи додаҳо пайваст кунем, маззаи махзани маълумотро эҷод кунем, эътимодномаро интиқол диҳем ва бо ягон роҳ онро идора кунем. Ҳамаи ин одатан аз ҷониби маъмури система ё таҳиякунанда дастӣ анҷом дода мешавад. Ва вақте ки барномаҳо каманд, ҳеҷ мушкиле вуҷуд надорад. Вакте ки онхо бисьёранд, комбайн лозим аст. Чунин комбайн вуҷуд дорад - он Сервис Брокер аст. Он ба шумо имкон медиҳад, ки плагини махсусро барои кластери абрии ҷамъиятӣ истифода баред ва захираҳоро аз провайдер тавассути Брокер фармоиш диҳед, гӯё он API бошад. Барои ин, шумо метавонед асбобҳои аслии Kubernetes -ро истифода баред.

Ин хеле содда аст. Шумо метавонед, масалан, MySQL-и идорашавандаро дар Azure бо сатҳи асосӣ дархост кунед (инро метавон танзим кард). Бо истифода аз Azure API, пойгоҳи додаҳо барои истифода сохта ва омода карда мешаванд. Ба шумо лозим нест, ки ба ин дахолат кунед, плагин барои ин масъул аст. Масалан, OSBA (плагини Azure) эътимодномаро ба хидмат бармегардонад ва онро ба Helm интиқол медиҳад. Шумо метавонед WordPress-ро бо абрии MySQL истифода баред, умуман бо пойгоҳи додаҳои идорашаванда сару кор надоред ва дар бораи хидматҳои давлатӣ дар дохили он хавотир нашавед.

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

Шумо метавонед плагини худро нависед ва тамоми ин ҳикояро дар дохили бино истифода баред. Он гоҳ шумо танҳо плагини шахсии худро барои провайдери абрии корпоративӣ хоҳед дошт. Ман тавсия медиҳам, ки ин равишро санҷед, хусусан агар шумо миқёси калон дошта бошед ва хоҳед, ки таҳия, саҳна ё тамоми инфрасохтори як хусусиятро зуд ҷойгир кунед. Ин ҳаётро барои амалиётҳои шумо ё DevOps осонтар мекунад.

Бозёфти дигаре, ки ман аллакай зикр кардам плагини helm-gcs, ки ба шумо имкон медиҳад, ки Google-сатилҳоро (нигоҳдории объект) барои нигоҳ доштани диаграммаҳои Helm истифода баред.

Амнияти руль

Барои оғози истифодаи он ба шумо танҳо чаҳор фармон лозим аст:

  1. плагинро насб кунед;
  2. оғоз кардан;
  3. роҳро ба сатил муқаррар кунед, ки дар gcp ҷойгир аст;
  4. диаграммаҳоро ба таври стандартӣ нашр кунед.

Зебоӣ дар он аст, ки усули аслии gcp барои иҷозат истифода мешавад. Шумо метавонед ҳисоби хидматрасонӣ, ҳисоби таҳиякунанда, ҳар чизе ки мехоҳед, истифода баред. Ин хеле қулай аст ва барои кор кардан ҳеҷ арзише надорад. Агар шумо, мисли ман, фалсафаи бефоидаро тарғиб кунед, пас ин барои дастаҳои хурд хеле қулай хоҳад буд.

Тафовутҳо

Helm ягона ҳалли идоракунии хидмат нест. Дар ин бора саволҳои зиёде вуҷуд доранд, ки шояд версияи сеюм ин қадар зуд пайдо шуд. Албатта, алтернативаҳо вуҷуд доранд.

Инҳо метавонанд ҳалли махсус бошанд, масалан, Ksonnet ё Metaparticle. Шумо метавонед асбобҳои классикии идоракунии инфрасохтори худро (Ansible, Terraform, Chef ва ғайра) бо ҳамон мақсадҳое, ки ман дар бораи он гуфта будам, истифода баред.

Ниҳоят роҳи ҳалли масъала вуҷуд дорад Чаҳорчӯбаи оператор, ки шухрати онхо торафт меафзояд.

Operator Framework алтернативаи беҳтарини Helm мебошад, ки бояд баррасӣ шавад.

Он бештар аз CNCF ва Kubernetes аст, вале монеаи дохилшавй хеле зиёд аст, шумо бояд бештар барномарезӣ кунед ва манифестҳоро камтар тавсиф кунед.

Иловаҳои гуногун мавҷуданд, ба монанди Draft, Scaffold. Онҳо ҳаётро хеле осон мекунанд, масалан, онҳо давраи фиристодан ва ба кор андохтани Helm-ро барои таҳиягарон барои ҷойгир кардани муҳити санҷиш содда мекунанд. Ман онҳоро қувватдиҳанда меномам.

Дар ин ҷо як диаграммаи визуалӣ дар куҷост.

Амнияти руль

Дар меҳвари x сатҳи назорати шахсии шумо аз болои он чизест, ки дар меҳвари y сатҳи модарии Кубернетес аст. Версияи Helm 2 дар мобайн ҷойгир аст. Дар версияи 3, на ба таври назаррас, балки ҳам назорат ва ҳам сатҳи модарӣ беҳтар карда шуданд. Қарорҳо дар сатҳи Ksonnet то ҳол ҳатто аз Helm 2 пасттаранд. Бо вуҷуди ин, онҳо ба назар гирифтан лозим аст, то бидонед, ки дар ин ҷаҳон чизи дигаре ҳаст. Албатта, менеҷери конфигуратсияи шумо таҳти назорати шумо хоҳад буд, аммо он комилан барои Kubernetes нест.

Чаҳорчӯбаи Operator комилан барои Kubernetes аст ва ба шумо имкон медиҳад, ки онро хеле шево ва бодиққат идора кунед (аммо дар бораи сатҳи вуруд дар хотир доред). Баръакс, ин барои як барномаи махсусгардонидашуда ва ташкили менеҷмент барои он мувофиқ аст, на як комбайни оммавӣ барои бастабандии шумораи зиёди барномаҳо бо истифода аз Helm.

Экстендерҳо танҳо назоратро каме беҳтар мекунанд, ҷараёни корро пурра мекунанд ё гӯшаҳои қубурҳои CI/CD-ро бур мекунанд.

Ояндаи Хелм

Хабари хуш ин аст, ки Helm 3 меояд. Версияи алфа Helm 3.0.0-alpha.2 аллакай бароварда шудааст, шумо метавонед онро санҷед. Он хеле устувор аст, аммо функсия ҳанӯз маҳдуд аст.

Чаро ба шумо Helm 3 лозим аст? Пеш аз ҳама, ин ҳикоя дар бораи он аст нопадид шудани Тиллер, ҳамчун ҷузъи. Ин, чунон ки шумо аллакай фаҳмидед, як қадами бузург ба пеш аст, зеро аз нуқтаи назари амнияти меъморӣ ҳама чиз содда карда шудааст.

Вақте ки Helm 2 сохта шуд, ки тақрибан дар замони Kubernetes 1.8 ё ҳатто пештар буд, бисёре аз мафҳумҳо пухта набуданд. Масалан, холо концепцияи CRD фаъолона амалй шуда истодааст ва Хелм CRD-ро истифода баредбарои нигоҳ доштани сохторҳо. Танҳо муштариро истифода бурдан мумкин аст ва қисми серверро нигоҳ надоред. Мувофиқи он, барои кор бо сохторҳо ва захираҳо фармонҳои аслии Kubernetes -ро истифода баред. Ин як қадами бузург ба пеш аст.

Пайдо мешавад дастгирии анборҳои аслии OCI (Ташаббуси контейнери кушод). Ин як ташаббуси бузург аст ва Ҳелм пеш аз ҳама ба интишори диаграммаҳои худ таваҷҷӯҳ дорад. Ин ба он мерасад, ки масалан, Docker Hub бисёр стандартҳои OCI -ро дастгирӣ мекунад. Ман гумон намекунам, аммо шояд провайдерҳои анбори классикии Docker ба шумо имкони ҷойгир кардани диаграммаҳои Helm -ро оғоз кунанд.

Ҳикояи баҳсбарангез барои ман аст Дастгирии Луа, ҳамчун муҳаррики шаблон барои навиштани скриптҳо. Ман як мухлиси бузурги Луа нестам, аммо ин як хусусияти комилан ихтиёрӣ хоҳад буд. Ман инро 3 маротиба тафтиш кардам - ​​истифодаи Луа лозим нест. Аз ин рӯ, онҳое, ки мехоҳанд Луаро истифода баранд, онҳое, ки Go дӯст медоранд, ба лагери бузурги мо ҳамроҳ мешаванд ва барои ин go-tmpl -ро истифода мебаранд.

Ниҳоят, он чизе ки ман бешубҳа гум карда будам пайдоиши схема ва тасдиқи навъи додаҳо. Дигар мушкилот бо int ё сатр вуҷуд нахоҳад дошт ва зарурати печонидани сифр дар нохунакҳои дукарата нест. Схемаи JSONS пайдо мешавад, ки ба шумо имкон медиҳад, ки инро барои арзишҳо ба таври возеҳ тавсиф кунед.

Ба таври ҷиддӣ аз нав кор карда мешавад модели ба рӯйдодҳо асосёфта. Он аллакай ба таври консептуалӣ тавсиф шудааст. Ба шохаи Helm 3 нигаред, ва шумо хоҳед дид, ки чӣ қадар рӯйдодҳо, қалмоқҳо ва чизҳои дигар илова карда шудаанд, ки онҳо хеле содда ва аз тарафи дигар, назоратро аз болои равандҳои ҷойгиркунӣ ва аксуламалҳо ба онҳо илова мекунанд.

Helm 3 соддатар, бехатартар ва шавқовартар хоҳад буд, на аз он сабаб, ки мо Helm 2-ро дӯст намедорем, балки аз он сабаб, ки Кубернетес пешрафтатар мешавад. Ҳамин тариқ, Ҳелм метавонад аз пешрафтҳои Kubernetes истифода барад ва дар он менеҷерони аъло барои Kubernetes эҷод кунад.

Боз як хабари хуш ин аст DevOpsConf Александр Хайёров ба шумо мегуяд, метавонад контейнерҳо бехатар бошанд? Ёдовар мешавем, ки дар Маскав конфронс оид ба ҳамгироии равандҳои коркард, озмоиш ва истифодабарӣ баргузор мешавад 30 сентябрь ва 1 октябрь. Шумо метавонед онро то 20 август анҷом диҳед ҳисобот пешниҳод кунанд ва дар бораи таҷрибаи худ бо ҳалли мо нақл кунед яке аз бисьёр Вазифаҳои равиши DevOps.

Нуқтаҳои конфронс ва хабарҳоро дар ин ҷо пайгирӣ кунед рӯйхати почта и канали телеграм.

Манбаъ: will.com

Илова Эзоҳ