Оё омода кардани кластери Kubernetes осон ва қулай аст? Эълони addon-operator

Оё омода кардани кластери Kubernetes осон ва қулай аст? Эълони addon-operator

Баъд аз он оператори снаряд бародари калониашро пешниҳод мекунем - addon-operator. Ин як лоиҳаи кушодаасос аст, ки барои насб кардани ҷузъҳои система дар кластери Kubernetes истифода мешавад, ки онро иловаҳо номидан мумкин аст.

Чаро ҳама гуна иловаҳо?

Пӯшида нест, ки Kubernetes маҳсулоти тайёри ҳама дар як нест ва барои сохтани кластери "калонсолон" ба шумо иловаҳои гуногун лозим мешавад. Addon-operator ба шумо дар насб, танзим ва навсозии ин замимаҳо кӯмак мекунад.

Зарурати ҷузъҳои иловагӣ дар кластер дар ифшо шудааст хисобот ҳамкорон Дриуша. Хулоса, дар айни замон вазъ бо Kubernetes чунин аст, ки барои насби оддии "бозӣ" шумо метавонед бо ҷузъҳои берун аз қуттӣ кор кунед, барои таҳиягарон ва санҷиш шумо метавонед Ingress илова кунед, аммо барои насби пурра, ки дар бораи он шумо метавонед бигӯед, ки "истеҳсоли шумо омода аст", шумо бояд бо даҳҳо замимаҳои гуногун илова кунед: чизе барои назорат, чизе барои сабти ном, вуруд ва сертификат-менеҷерро фаромӯш накунед, гурӯҳҳои гиреҳҳоро интихоб кунед, сиёсати шабакаро илова кунед, мавсим бо танзимоти sysctl ва pod autoscaler...

Оё омода кардани кластери Kubernetes осон ва қулай аст? Эълони addon-operator

Хусусиятҳои кор бо онҳо чӣ гунаанд?

Чунон ки амалия нишон медихад, масъала бо як установка махдуд намешавад. Барои кори бароҳат бо кластер, иловаҳо бояд навсозӣ, ғайрифаъол (аз кластер хориҷ карда шаванд) ва шумо мехоҳед, ки пеш аз насб кардани онҳо дар кластери истеҳсолӣ баъзеи онҳоро санҷед.

Пас, шояд Ansible дар ин ҷо кофӣ бошад? Мумкин ки. Аммо Умуман, иловаҳои мукаммал бидуни танзимот зиндагӣ намекунанд. Ин танзимотҳо вобаста ба варианти кластер метавонанд фарқ кунанд (aws, gce, azure, bare-metal, do, ...). Баъзе танзимотро пешакӣ муайян кардан мумкин нест; онҳо бояд аз кластер гирифта шаванд. Ва кластер статикӣ нест: барои баъзе танзимот шумо бояд тағиротро назорат кунед. Ва дар ин ҷо Ansible аллакай гум шудааст: ба шумо барномае лозим аст, ки дар кластер зиндагӣ мекунад, яъне. Оператори Kubernetes.

Онхое, ки онро дар кор озмудаанд оператори снаряд, онҳо хоҳанд гуфт, ки вазифаҳои насб ва навсозии изофаҳо ва танзимоти мониторинг метавонанд бо истифода аз пурра ҳал карда шаванд. қалмоқҳо барои оператори шел. Шумо метавонед скрипт нависед, ки шартро иҷро кунад kubectl apply ва назорат кунед, масалан, ConfigMap, ки дар он танзимот нигоҳ дошта мешаванд. Ин тақрибан он чизест, ки дар addon-operator амалӣ карда мешавад.

Ин дар addon-operator чӣ гуна ташкил карда шудааст?

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

  • Насбкунандаи иловагӣ бояд дастгирӣ кунад Шаблонсозӣ ва конфигуратсияи декларативӣ. Мо скриптҳои ҷодугарӣ намесозем, ки замимаҳоеро насб мекунанд. Addon-оператор барои насб кардани иловаҳо Helm-ро истифода мебарад. Барои насб кардан, шумо бояд диаграмма эҷод кунед ва арзишҳоеро интихоб кунед, ки барои конфигуратсия истифода мешаванд.
  • Танзимот метавонад бошад ҳангоми насбкунӣ тавлид кунед, ту метавонӣ аз кластер гиред, ё навсозиҳоро қабул кунед, мониторинги захираҳои кластер. Ин амалиётҳоро метавон бо истифода аз қалмоқҳо иҷро кард.
  • Танзимот метавонад бошад дар кластер нигоҳ доред. Барои нигоҳ доштани танзимот дар кластер, ConfigMap/addon-оператор сохта мешавад ва Addon-оператор тағиротро ба ин ConfigMap назорат мекунад. Addon-оператор ба қалмоқҳо бо истифода аз конвенсияҳои оддӣ дастрасӣ медиҳад.
  • Илова ба танзимот вобаста аст. Агар танзимот тағир ёфта бошанд, он гоҳ Addon-оператор диаграммаи Helm-ро бо арзишҳои нав мебарорад. Мо омезиши диаграммаи Helm, арзишҳо барои он ва қалмоқҳоро модул номидем (барои тафсилоти бештар ба поён нигаред).
  • Саҳнагузорӣ. Скриптҳои ҷодугарӣ вуҷуд надоранд. Механизми навсозӣ ба як замимаи муқаррарӣ шабоҳат дорад - изофаҳо ва операторҳои изофӣ дар тасвир ҷамъоварӣ кунед, онҳоро нишон диҳед ва онҳоро паҳн кунед.
  • Назорати натиҷа. Addon-оператор метавонад барои Prometheus ченакҳоро пешниҳод кунад.

padding дар addon-operator чист?

Иловаро метавон ҳама чизеро баррасӣ кард, ки ба кластер функсияҳои нав илова мекунад. Масалан, насб кардани Ingress як намунаи олии илова аст. Ин метавонад ҳама гуна оператор ё контролер бо CRD-и худ бошад: prometheus-operator, cert-meneger, kube-controller-meneger ва ғайра. Ё чизи хурд, аммо истифодааш осонтар - масалан, нусхабардории махфӣ, ки сирри реестрро ба фазои номҳои нав нусхабардорӣ мекунад ё tuner sysctl, ки параметрҳои sysctl-ро дар гиреҳҳои нав танзим мекунад.

Барои татбиқи иловаҳо, Addon-operator якчанд консепсияҳоро пешниҳод мекунад:

  • Диаграммаи руль барои насб кардани нармафзорҳои гуногун ба кластер истифода мешавад - масалан, Prometheus, Grafana, nginx-ingress. Агар ҷузъи зарурӣ диаграммаи Helm дошта бошад, пас насб кардани он бо истифода аз Addon-operator хеле содда хоҳад буд.
  • Нигоҳдории арзишҳо. Диаграммаҳои Helm одатан танзимоти гуногун доранд, ки метавонанд бо мурури замон тағир ёбанд. Addon-operator нигоҳдории ин танзимотро дастгирӣ мекунад ва метавонад тағироти онҳоро назорат кунад, то диаграммаи Helm-ро бо арзишҳои нав аз нав насб кунад.
  • Ҳукҳо файлҳои иҷрошаванда мебошанд, ки Addon-оператор дар рӯйдодҳо кор мекунад ва ба анбори арзишҳо дастрасӣ доранд. Қалмоқ метавонад тағиротро дар кластер назорат кунад ва арзишҳоро дар мағозаи арзишҳо нав кунад. Онхое. Бо истифода аз қалмоқҳо, шумо метавонед барои ҷамъоварии арзишҳо аз кластер ҳангоми оғозёбӣ ё мувофиқи ҷадвал кашф кунед ё шумо метавонед кашфи пайваста анҷом дода, арзишҳоро аз кластер дар асоси тағирот дар кластер ҷамъоварӣ кунед.
  • Модул омезиши диаграммаи Helm, мағозаи арзишҳо ва қалмоқҳо мебошад. Модулҳо метавонанд фаъол ё ғайрифаъол карда шаванд. Хомӯш кардани модул маънои нест кардани ҳама варақаҳои диаграммаи Helm мебошад. Модулҳо метавонанд худро ба таври динамикӣ фаъол созанд, масалан, агар ҳамаи модулҳои ба он ниёздошта фаъол бошанд ё агар кашф параметрҳои заруриро дар қалмоқҳо пайдо карда бошад - ин бо истифода аз скрипти ёрирасони фаъол анҷом дода мешавад.
  • Қуттиҳои глобалӣ. Инҳо қалмоқҳои "худӣ" ҳастанд, онҳо ба модулҳо дохил карда нашудаанд ва ба мағозаи глобалии арзишҳо дастрасӣ доранд, ки арзишҳои онҳо барои ҳама қалмоқҳои модулҳо дастрасанд.

Чӣ тавр ин қисмҳо якҷоя кор мекунанд? Биёед ба расм аз ҳуҷҷатҳо назар андозем:

Оё омода кардани кластери Kubernetes осон ва қулай аст? Эълони addon-operator

Ду сенарияи корӣ вуҷуд дорад:

  1. Ҳодисаи глобалӣ тавассути ҳодиса ба вуҷуд меояд - масалан, вақте ки захира дар кластер тағир меёбад. Ин қалмоқ тағиротро коркард мекунад ва арзишҳои навро ба мағозаи арзишҳои ҷаҳонӣ менависад. Addon-оператор пай мебарад, ки нигаҳдории глобалӣ тағир ёфтааст ва ҳамаи модулҳоро оғоз мекунад. Ҳар як модул бо истифода аз қалмоқҳои худ муайян мекунад, ки оё он бояд фаъол карда шавад ва мағозаи арзишҳои худро навсозӣ мекунад. Агар модул фаъол бошад, Addon-оператор насби диаграммаи Helm-ро оғоз мекунад. Дар ин ҳолат, диаграммаи Helm ба арзишҳо аз нигаҳдории модул ва аз нигаҳдории глобалӣ дастрасӣ дорад.
  2. Сенарияи дуюм соддатар аст: қалмоқе, ки модул тавассути як ҳодиса оғоз мешавад ва арзишҳоро дар анбори арзишҳои модул тағир медиҳад. Addon-operator инро пай мебарад ва диаграммаи Helm-ро бо арзишҳои навшуда оғоз мекунад.

Илова кардан мумкин аст ҳамчун як қалмоқе ягона, ё ҳамчун як диаграммаи Helm, ё ҳатто ҳамчун якчанд модулҳои вобаста - ин аз мураккабии ҷузъи дар кластер насбшуда ва аз сатҳи дилхоҳи чандирии конфигуратсия вобаста аст. Масалан, дар анбор (/мисолхо) иловаи sysctl-tuner мавҷуд аст, ки он ҳам ҳамчун модули оддӣ бо қалмоқ ва диаграммаи Helm амалӣ карда мешавад ва ҳам бо истифода аз мағозаи арзишҳо, ки имкон медиҳад танзимот тавассути таҳрири ConfigMap илова карда шавад.

Интиқоли навсозиҳо

Якчанд сухан дар бораи ташкили навсозии ҷузъҳо, ки Addon-оператор насб мекунад.

Барои идора кардани Addon-оператор дар кластер ба шумо лозим аст бо иловаҳо тасвир созед дар шакли файлҳои диаграммаи қалмоқ ва Helm, файли дуӣ илова кунед addon-operator ва ҳама чизҳое, ки ба шумо барои қалмоқҳо лозиманд: bash, kubectl, jq, python ва гайра. Пас ин тасвирро метавон ҳамчун як барномаи муқаррарӣ ба кластер интиқол дод ва эҳтимоли зиёд шумо мехоҳед ин ё он схемаи барчаспро ташкил кунед. Агар кластерҳо кам бошанд, ҳамон равише, ки бо барномаҳо вуҷуд дорад, метавонад мувофиқ бошад: версияи нав, версияи нав, ба ҳама кластерҳо гузаред ва тасвири Pods-ро ислоҳ кунед. Аммо, дар сурати паҳн кардани шумораи зиёди кластерҳо, консепсияи худтанзимкунӣ аз канал барои мо мувофиқтар буд.

Ин аст, ки мо инро чӣ тавр мекунем:

  • Канал аслан идентификаторест, ки онро ба ҳама чиз танзим кардан мумкин аст (масалан, dev/stage/ea/stable).
  • Номи канал теги тасвир аст. Вақте ки ба шумо лозим аст, ки навсозиҳоро ба канал паҳн кунед, тасвири нав ҷамъ карда мешавад ва бо номи канал барчасп карда мешавад.
  • Вақте ки тасвири нав дар реестр пайдо мешавад, Addon-operator бозоғоз мешавад ва бо тасвири нав оғоз меёбад.

Ин таҷрибаи беҳтарин нест, тавре ки дар он навишта шудааст Ҳуҷҷатҳои Kubernetes. Тавсия дода намешавад, ки ин корро анҷом диҳед, аммо мо дар бораи он гап мезанем барномаи муқаррарӣ, ки дар як кластер зиндагӣ мекунад. Дар мавриди Addon-оператор, барнома як қатор Ҷойгиркуниҳоест, ки дар кластерҳо парокандаанд ва худнавсозӣ бисёр кӯмак мекунад ва ҳаётро осон мекунад.

Каналҳо кӯмак мекунанд ва дар озмоиш: агар кластери ёрирасон мавҷуд бошад, шумо метавонед онро ба канал танзим кунед stage ва пеш аз паҳн кардани он ба каналҳо навсозиҳоро ба он гузоред ea и stable. Агар бо кластер дар канал ea хатогӣ рӯй дод, шумо метавонед онро ба он гузаред stable, дар ҳоле ки мушкили ин кластер таҳқиқ мешавад. Агар кластер аз дастгирии фаъол хориҷ карда шавад, он ба канали "яхшуда" -и худ мегузарад - масалан, freeze-2019-03-20.

Илова ба навсозии қалмоқҳо ва диаграммаҳои Helm, ба шумо лозим аст навсозӣ ва ҷузъи тарафи сеюм. Масалан, шумо хатогиро дар гиреҳ-экспортгари шартӣ мушоҳида кардед ва ҳатто фаҳмидед, ки чӣ тавр онро часпонед. Баъдан, шумо PR-ро кушодед ва интизоред, ки версияи нав аз тамоми кластерҳо мегузарад ва версияи тасвирро афзоиш медиҳад. Барои беохир интизор нашавед, шумо метавонед пеш аз қабули PR гиреҳ-экспортери худро созед ва ба он гузаред.

Умуман, ин корро бе Addon-оператор кардан мумкин аст, аммо бо Addon-operator модули насби гиреҳ-экспортёр дар як репозиторий намоён хоҳад шуд, файли Dockerfile барои сохтани тасвири шумо дар ҳамон ҷо нигоҳ дошта мешавад, барои ҳамаи иштирокчиёни барнома осонтар мешавад. раванд барои фаҳмидани чӣ ҳодиса рӯй медиҳад... Ва агар якчанд кластерҳо вуҷуд дошта бошанд, пас ҳам санҷидани PR-и худ ва ҳам паҳн кардани версияи нав осонтар мешавад!

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

хулоса

Принсипҳое, ки дар Addon-operator амалӣ мешаванд, ба шумо имкон медиҳанд, ки раванди шаффоф барои эҷод, озмоиш, насб ва навсозии изофаҳо дар кластер ба монанди равандҳои таҳияи замимаҳои муқаррарӣ бунёд кунед.

Иловаҳо барои Addon-operator дар формати модул (диаграммаи Ҳелм + қалмоқҳо) метавонанд дастраси омма бошанд. Мо, ширкати Flant, нақша дорем, ки коркардҳои худро дар шакли чунин иловаҳо дар тобистон нашр кунем. Ба рушд дар GitHub ҳамроҳ шавед (оператори снаряд, addon-operator), кӯшиш кунед, ки иловаи худро дар асоси мисолҳо и хуччатхо, мунтазири хабарҳо дар бораи Habré ва мо бошед Канали YouTube!

PS

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

Манбаъ: will.com

Илова Эзоҳ