Kubernetes кластерин даярдоо оңой жана ыңгайлуубу? Addon-операторду жарыялоо

Kubernetes кластерин даярдоо оңой жана ыңгайлуубу? Addon-операторду жарыялоо

кийинки шел-оператор биз анын улуу агасын тартуулайбыз - addon-operator. Бул системанын компоненттерин Kubernetes кластерине орнотуу үчүн колдонулган Open Source долбоору, аны кошумчалар деп атоого болот.

Эмне үчүн кандайдыр бир толуктоолор?

Kubernetes даяр бардыгы бир продукт эмес экендиги эч кимге жашыруун эмес жана "чоңдор" кластерин куруу үчүн сизге ар кандай кошумчалар керек болот. Addon-operator сизге бул кошумчаларды орнотууга, конфигурациялоого жана жаңыртып турууга жардам берет.

Кластерде кошумча компоненттерге муктаждык ачыкталган билдирүү кесиптештер Дриуша. Кыскача айтканда, учурда Kubernetes менен кырдаал ушундай, жөнөкөй "ойноп" орнотуу үчүн сиз кутудан чыккан компоненттер менен ала аласыз, иштеп чыгуучулар жана тестирлөө үчүн сиз Ingressди кошо аласыз, бирок толук орнотуу үчүн сиз "өндүрүшүңүз даяр" деп айта аласыз, сиз ондогон ар кандай кошумчаларды кошушуңуз керек: мониторинг үчүн бир нерсе, каттоо үчүн бир нерсе, кирүү жана сертификат-менеджерди унутпаңыз, түйүндөрдүн топторун тандаңыз, тармак саясатын кошуңуз, сезон sysctl жана pod autoscaler орнотуулары менен...

Kubernetes кластерин даярдоо оңой жана ыңгайлуубу? Addon-операторду жарыялоо

Алар менен иштөөнүн өзгөчөлүгү эмнеде?

Практика көрсөткөндөй, маселе бир орнотуу менен эле чектелбейт. Кластер менен ыңгайлуу иштөө үчүн кошумчаларды жаңыртуу, өчүрүү (кластерден алып салуу) керек болот жана аларды өндүрүш кластерине орнотуудан мурун айрымдарын сынап көргүңүз келет.

Демек, балким, Ansible бул жерде жетиштүү болот? Болушу мүмкүн. Бирок Жалпысынан алганда, толук кандуу кошумчалар жөндөөлөрсүз жашай албайт. Бул жөндөөлөр кластердин вариантына жараша айырмаланышы мүмкүн (aws, gce, azure, bare-metal, do, ...). Кээ бир орнотууларды алдын ала көрсөтүү мүмкүн эмес, алар кластерден алынышы керек. Ал эми кластер статикалык эмес: кээ бир орнотуулар үчүн өзгөрүүлөрдү көзөмөлдөөгө туура келет. Жана бул жерде Ansible мурунтан эле жок: сизге кластерде жашаган программа керек, б.а. Kubernetes оператору.

Иште сынап көргөндөр шел-оператор, алар толуктоолорду жана мониторинг орнотууларын орнотуу жана жаңыртуу милдеттерин колдонуу менен толугу менен чечсе болот деп айтышат. илгичтер кабык оператору үчүн. Сиз шарттуу кыла турган сценарий жаза аласыз kubectl apply жана Монитор, мисалы, ConfigMap, орнотуулар сактала турган жерде. Бул болжол менен addon-оператордо ишке ашырылган нерсе.

Бул addon-оператордо кантип уюштурулган?

Жаңы чечимди түзүүдө биз төмөнкү принциптерге таяндык:

  • Кошумча орнотуучу колдоого алышы керек шаблондоо жана декларативдик конфигурация. Биз кошумчаларды орноткон сыйкырдуу скрипттерди жасабайбыз. Addon-оператор кошумчаларды орнотуу үчүн Helm колдонот. Орнотуу үчүн сиз диаграмма түзүп, конфигурациялоо үчүн колдонула турган маанилерди тандооңуз керек.
  • Орнотуулар болушу мүмкүн орнотуу боюнча түзүү, алар мүмкүн кластерден алууже жаңыртууларды алуу, кластердик ресурстарга мониторинг жүргүзүү. Бул операциялар илгичтер аркылуу ишке ашырылышы мүмкүн.
  • Орнотуулар болушу мүмкүн кластерде сактоо. Орнотууларды кластерде сактоо үчүн ConfigMap/addon-operator түзүлөт жана Addon-operator бул ConfigMapга өзгөртүүлөрдү көзөмөлдөйт. Addon-оператор илгичтерге жөндөөлөргө жөнөкөй конвенцияларды колдонуу мүмкүнчүлүгүн берет.
  • Кошумча орнотуулар көз каранды. Эгер орнотуулар өзгөргөн болсо, анда Addon-оператор жаңы маанилер менен Helm диаграммасын чыгарат. Биз Helm диаграммасынын, анын маанилеринин жана илгичтеринин айкалышын модул деп атадык (көбүрөөк маалымат үчүн төмөндө караңыз).
  • Сахналоо. Сыйкырдуу релиз скрипттери жок. Жаңыртуу механизми кадимки тиркемеге окшош - кошумчаларды жана кошумча операторлорду сүрөткө чогултуп, аларга белгилөө жана жайылтуу.
  • Натыйжаларды көзөмөлдөө. Addon-оператор Prometheus үчүн көрсөткүчтөрдү бере алат.

Addon-оператордо толтуруу деген эмне?

Кошумча кластерге жаңы функцияларды кошкон нерселердин бардыгын караса болот. Мисалы, Ingress орнотуу - бул кошумчанын сонун үлгүсү. Бул өзүнүн CRDси бар каалаган оператор же контроллер болушу мүмкүн: прометей-оператор, сертификат-менеджер, кубе-контроллер-менеджер ж.б. Же кичинекей, бирок колдонууга оңой нерсе - мисалы, реестр сырларын жаңы аттар мейкиндигине көчүрүүчү жашыруун көчүргүч же жаңы түйүндөрдө sysctl параметрлерин конфигурациялоочу sysctl тюнер.

Кошумчаларды ишке ашыруу үчүн Addon-operator бир нече түшүнүктөрдү берет:

  • Руль диаграммасы кластерге ар кандай программаларды орнотуу үчүн колдонулат - мисалы, Prometheus, Grafana, nginx-ingress. Эгерде талап кылынган компонентте Helm диаграммасы бар болсо, анда аны Addon-operator аркылуу орнотуу абдан жөнөкөй болот.
  • Баалуулуктарды сактоо. Руль диаграммаларында, адатта, убакыттын өтүшү менен өзгөрүшү мүмкүн болгон көптөгөн ар кандай орнотуулар бар. Addon-operator бул жөндөөлөрдү сактоону колдойт жана Helm диаграммасын жаңы маанилер менен кайра орнотуу үчүн алардын өзгөрүүлөрүн көзөмөлдөй алат.
  • Илгичтер Addon-оператор окуяларда иштеген жана баалуулуктар дүкөнүнө кире турган аткарылуучу файлдар. Илмек кластердеги өзгөрүүлөрдү көзөмөлдөп, баалуулуктар дүкөнүндөгү баалуулуктарды жаңырта алат. Ошол. Илгичтерди колдонуу менен сиз кластерден баалуулуктарды баштоодо же график боюнча чогултуу үчүн ачылыш жасай аласыз, же кластердеги өзгөрүүлөрдүн негизинде кластерден баалуулуктарды чогултуп, үзгүлтүксүз ачылыштарды жасай аласыз.
  • Модуль Helm диаграммасынын, баалуулуктар дүкөнүнүн жана илгичтердин айкалышы. Модулдар иштетилген же өчүрүлүшү мүмкүн. Модулду өчүрүү Helm диаграммасынын бардык релиздерин жок кылууну билдирет. Модулдар өзүн динамикалык түрдө иштете алат, мисалы, эгер ага керектүү бардык модулдар иштетилген болсо же илгичтерде керектүү параметрлер табылган болсо - бул көмөкчү иштетилген скрипт аркылуу жасалат.
  • Глобалдык илгичтер. Булар "өз алдынча" илгичтер, алар модулдарга кирбейт жана глобалдык баалуулуктар дүкөнүнө кирүү мүмкүнчүлүгү бар, анын баалуулуктары модулдардагы бардык илгичтерге жеткиликтүү.

Бул бөлүктөр кантип чогуу иштешет? Келгиле, документациядан сүрөттү карап көрөлү:

Kubernetes кластерин даярдоо оңой жана ыңгайлуубу? Addon-операторду жарыялоо

Эки жумуш сценарийи бар:

  1. Глобалдык илгич окуядан улам пайда болот - мисалы, кластердеги ресурс өзгөргөндө. Бул илгич өзгөрүүлөрдү иштеп чыгат жана глобалдык баалуулуктар дүкөнүнө жаңы баалуулуктарды жазат. Addon-оператор глобалдык сактагычтын өзгөргөнүн байкап, бардык модулдарды баштайт. Ар бир модул, илгичтерин колдонуп, аны иштетүү керекпи же жокпу, аныктайт жана баалуулуктар сактагычын жаңылайт. Эгерде модуль иштетилген болсо, Addon-оператор Helm диаграммасын орнотууну баштайт. Бул учурда, Helm диаграммасы модулдук сактагычтан жана глобалдык сактагычтан баалуулуктарга мүмкүнчүлүк алат.
  2. Экинчи сценарий жөнөкөй: модулдук илгич окуядан улам ишке ашат жана модулдун баалуулуктар сактагычындагы маанилерди өзгөртөт. Addon-operator муну байкап, жаңыланган маанилер менен Helm диаграммасын ишке киргизет.

Кошумча бир илгич катары ишке ашырылышы мүмкүн, же бир Helm диаграммасы, же бир нече көз каранды модулдар катары да - бул кластерде орнотулуп жаткан компоненттин татаалдыгына жана конфигурациянын ийкемдүүлүгүнүн каалаган деңгээлине жараша болот. Мисалы, репозиторийде (/мисалдар) sysctl-тюнер кошумчасы бар, ал илгич жана Helm диаграммасы бар жөнөкөй модуль катары жана ConfigMapти түзөтүү аркылуу орнотууларды кошууга мүмкүндүк берген баалуулуктар дүкөнүн колдонуу менен ишке ашырылат.

Жаңыртууларды жеткирүү

Addon-оператор орноткон компоненттердин жаңыртууларын уюштуруу жөнүндө бир нече сөз.

Addon-операторду кластерде иштетүү үчүн сизге керек толуктоолор менен сүрөт түзүү илгич жана Helm диаграмма файлдары түрүндө бинардык файлды кошуңуз addon-operator жана илгичтерге керектүү нерселердин баары: bash, kubectl, jq, python жана башкалар. Андан кийин бул сүрөт кластерге кадимки тиркеме катары жайылтылат жана сиз тигил же бул белгилөө схемасын уюштурууну каалайсыз. Эгерде кластерлер аз болсо, тиркемелердегидей эле ыкма ылайыктуу болушу мүмкүн: жаңы релиз, жаңы версия, бардык кластерлерге өтүп, Pods сүрөтүн оңдоңуз. Бирок, кластерлердин олуттуу санына жайылган учурда, каналдан өзүн-өзү жаңылоо концепциясы бизге ылайыктуураак болду.

Бул жерде биз муну кантип жасайбыз:

  • Канал негизи каалаган нерсеге коюла турган идентификатор (мисалы, dev/stage/ea/stable).
  • Каналдын аты сүрөт теги болуп саналат. Каналга жаңыртууларды чыгаруу керек болгондо, жаңы сүрөт чогулуп, каналдын аталышы менен белгиленет.
  • Реестрде жаңы сүрөт пайда болгондо, Addon-оператор кайра жүктөлөт жана жаңы сүрөт менен ишке киргизилет.

Бул жерде жазылгандай мыкты тажрыйба эмес Kubernetes документтери. Муну жасоо сунушталбайт, бирок биз сөз кылып жатабыз бир кластерде жашаган кадимки колдонмо. Addon-operator учурда, тиркеме кластерлер боюнча чачырап кеткен көп жайгаштыруу болуп саналат жана өзүн-өзү жаңыртуу көп жардам берет жана жашоону жеңилдетет.

Каналдар жардам берет жана тестирлөөдө: көмөкчү кластер болсо, аны каналга конфигурациялай аласыз stage жана каналдарга жайылтуудан мурун ага жаңыртууларды киргизиңиз ea и stable. Каналда кластер болсо ea ката кетти, ага которулсаңыз болот stable, бул кластер менен көйгөй иликтенип жатканда. Эгерде кластер активдүү колдоодон чыгарылса, ал өзүнүн "тоңгон" каналына өтөт - мисалы, freeze-2019-03-20.

Илгичтерди жана Helm диаграммаларын жаңыртуудан тышкары, сизге керек болушу мүмкүн жаңыртуу жана үчүнчү тараптын компоненти. Мисалы, сиз шарттуу түйүн-экспорттордо катаны байкадыңыз жана аны кантип оңдоону түшүндүңүз. Андан кийин, сиз PR ачтыңыз жана жаңы релизди бардык кластерлерден өтүп, сүрөттүн версиясын көбөйтүүнү күтүп жатасыз. Чексиз күтпөө үчүн, сиз түйүн экспорттоочуңузду куруп, пиарды кабыл алуудан мурун ага өтсөңүз болот.

Жалпысынан, бул Addon-операторсуз жасалышы мүмкүн, бирок Addon-operator менен түйүн-экспортторду орнотуу модулу бир репозиторийде көрүнөт, сиздин сүрөтүңүздү куруу үчүн Dockerfile ошол жерде сакталышы мүмкүн, бардык катышуучулар үчүн жеңил болот. эмне болорун түшүнүү процесси... Жана эгерде бир нече кластерлер болсо, анда пиарыңызды сынап көрүү жана жаңы версияны чыгаруу оңой болот!

Компоненттерди жаңылоонун бул уюму биз үчүн ийгиликтүү иштеп жатат, бирок каалаган башка ылайыктуу схеманы ишке ашырууга болот - баары бир бул учурда Addon-оператор жөнөкөй экилик файл болуп саналат.

жыйынтыктоо

Addon-оператордо ишке ашырылган принциптер кадимки тиркемелерди иштеп чыгуу процесстерине окшош кластерде кошумчаларды түзүү, сыноо, орнотуу жана жаңыртуу үчүн ачык процессти курууга мүмкүндүк берет.

Модуль форматындагы Addon-operator үчүн кошумчалар (Helm диаграмма + илгичтер) жалпыга жеткиликтүү болушу мүмкүн. Биз, Flant компаниясы, мындай толуктоолор түрүндө биздин иштеп чыгууларды жай мезгилинде жарыялоону пландап жатабыз. GitHub'да иштеп чыгууга кошулуңуз (шел-оператор, addon-operator), негизинде өзүңүздүн толуктооңузду жасоого аракет кылыңыз мисалдар и документтер, Habré жана биздин боюнча жаңылыктарды күтүңүз YouTube канал!

PS

Биздин блогдон дагы окуңуз:

Source: www.habr.com

Комментарий кошуу