Алати за програмере апликација које раде на Кубернетесу

Алати за програмере апликација које раде на Кубернетесу

Модеран приступ пословању решава многе хитне пословне проблеме. Контејнери и оркестратори олакшавају скалирање пројеката било које сложености, поједностављују издавање нових верзија, чине их поузданијим, али у исто време стварају додатне проблеме програмерима. Програмеру је, пре свега, стало до свог кода: архитектуре, квалитета, перформанси, елеганције – а не како ће функционисати у Кубернетесу и како да га тестира и отклони грешке након што направи чак и минималне промене. Стога је такође сасвим природно да се алати за Кубернетес активно развијају, помажући да се реше проблеми чак и „архаичнијих“ програмера и омогућавају им да се фокусирају на главну ствар.

Овај преглед пружа кратке информације о неким алатима који олакшавају живот програмеру чији се код покреће у под'аку Кубернетес кластера.

Једноставни помагачи

Кубецтл-дебуг

  • Доња линија: додајте свој контејнер у Под и видите шта се дешава у њему.
  • ГитХуб.
  • Кратка ГХ статистика: 715 звездица, 54 урезивања, 9 сарадника.
  • Језик: Иди.
  • Лиценца: Апацхе Лиценсе 2.0.

Овај додатак за кубецтл вам омогућава да направите додатни контејнер унутар под од интереса, који ће делити простор имена процеса са другим контејнерима. У њему можете да отклоните грешке у раду модула: проверите мрежу, ослушкујете мрежни саобраћај, урадите приказ процеса од интереса итд.

Такође можете да се пребаците на процесни контејнер тако што ћете покренути chroot /proc/PID/root - ово може бити веома згодно када треба да набавите роот схелл у контејнеру за који је постављен у манифесту securityContext.runAs.

Алат је једноставан и ефикасан, тако да може бити од користи сваком програмеру. Више о томе писали смо у посебан чланак.

Телеприсутност

  • Доња линија: пренесите апликацију на свој рачунар. Развијте и отклањајте грешке локално.
  • Сајт; ГитХуб.
  • Кратка ГХ статистика: 2131 звездица, 2712 урезивања, 33 сарадника.
  • Језик: Питхон.
  • Лиценца: Апацхе Лиценсе 2.0.

Идеја овог снап-ина је да се покрене контејнер са апликацијом на рачунару локалног корисника и прокси сав саобраћај од кластера до њега и назад. Овај приступ вам омогућава да се развијате локално једноставним уређивањем датотека у вашем омиљеном ИДЕ-у: резултати ће бити доступни одмах.

Предности локалног покретања су погодност уређивања и тренутни резултати, могућност отклањања грешака у апликацији на уобичајен начин. Лоша страна је што је захтевна за брзину везе, што је посебно приметно када морате да радите са апликацијом са прилично високим РПС-ом и саобраћајем. Поред тога, Телепресенце има проблема са монтирањем јачине звука на Виндовс-у, што може бити одлучујуће ограничење за програмере који су навикли на овај ОС.

Већ смо поделили наше искуство коришћења Телепресенце-а овде.

Ксинц

  • Доња линија: скоро тренутна синхронизација кода са контејнером у кластеру.
  • ГитХуб.
  • Кратка ГХ статистика: 555 звездица, 362 урезивања, 11 сарадника.
  • Језик: Иди.
  • Лиценца: Апацхе Лиценсе 2.0.

Услужни програм вам омогућава да синхронизујете садржај локалног директоријума са директоријумом контејнера који ради у кластеру. Такав алат је савршен за програмере у програмским језицима за писање скрипти, чији је главни проблем испорука кода у покренути контејнер. Ксинц је дизајниран да ублажи ову главобољу.

Када се једном иницијализира командом ksync init у кластеру се креира ДаемонСет који се користи за праћење стања система датотека изабраног контејнера. На свом локалном рачунару програмер покреће команду ksync watch, који надгледа конфигурације и ради синцтхинг, који директно синхронизује датотеке са кластером.

Остаје само да упутите ксинц шта да синхронизује са чиме. На пример, ова команда:

ksync create --name=myproject --namespace=test --selector=app=backend --container=php --reload=false /home/user/myproject/ /var/www/myproject/

... ће креирати посматрача са именом myprojectкоји ће тражити махуну са ознаком app=backend и покушајте да синхронизујете локални именик /home/user/myproject/ са каталогом /var/www/myproject/ код контејнера зв php.

Проблеми и белешке о ксинц-у из нашег искуства:

  • Мора се користити на чворовима Кубернетес кластера overlay2 као драјвер за складиштење за Доцкер. Услужни програм неће радити ни са једним другим.
  • Када користите Виндовс као клијентски ОС, посматрач система датотека можда неће радити исправно. Ова грешка је примећена при раду са великим директоријумима – са великим бројем угнежђених датотека и директоријума. Створили смо релевантно питање у пројекту синхронизације, али на њему још нема помака (од почетка јула).
  • Користи датотеку .stignore да бисте навели путање или обрасце датотека које не треба синхронизовати (на пример, директоријуми app/cache и .git).
  • Подразумевано, ксинц ће поново покренути контејнер кад год се датотеке промене. За Ноде.јс ово је згодно, али за ПХП је потпуно непотребно. Боље је искључити опцацхе и користити заставу --reload=false.
  • Конфигурација се увек може исправити $HOME/.ksync/ksync.yaml.

Бундева

  • Доња линија: процеси за отклањање грешака директно у кластеру.
  • ГитХуб.
  • Кратка ГХ статистика: 1154 звездице, 279 урезивања, 23 сарадника.
  • Језик: Иди.
  • Лиценца: Апацхе Лиценсе 2.0.

Овај алат је дизајниран за отклањање грешака у процесима директно у подовима. Услужни програм је једноставан и интерактивно вам омогућава да изаберете жељени програм за отклањање грешака (види доле) и намеспаце + под, у чији процес треба да интервенишете. Тренутно подржано:

  • делве - за Го апликације;
  • ГДБ - преко циљног даљинског + прослеђивање порта;
  • Прослеђивање ЈДВП портова за отклањање грешака у Јава апликацијама.

На страни ИДЕ, подршка је доступна само у ВСцоде-у (користећи експанзија), међутим, планови за текућу (2019) годину укључују Ецлипсе и Интеллиј.

Да би отклонио грешке у процесима, Скуасх покреће привилеговани контејнер на чворовима кластера, тако да се прво морате упознати са могућностима безбедни режим да би избегли безбедносне проблеме.

Комплетна решења

Пређимо на тешку артиљерију - више „великих“ пројеката дизајнираних да одмах задовоље многе потребе програмера.

NB: На овој листи, наравно, постоји место за наш Опен Соурце услужни програм верф (раније познат као дапп). Међутим, већ смо писали и разговарали о томе више пута, па смо одлучили да га не укључимо у рецензију. За оне који желе да се боље упознају са његовим могућностима, препоручујемо да прочитају/преслушају извештај „верф је наш алат за ЦИ/ЦД у Кубернетесу'.

ДевСпаце

  • Доња линија: за оне који желе да почну да раде у Кубернетесу, али не желе да зароне дубоко у његову џунглу.
  • ГитХуб.
  • Кратка ГХ статистика: 630 звездица, 1912 урезивања, 13 сарадника.
  • Језик: Иди.
  • Лиценца: Апацхе Лиценсе 2.0.

Решење истоимене компаније, које обезбеђује управљане кластере са Кубернетес-ом за развој тима. Услужни програм је креиран за комерцијалне кластере, али одлично функционише са било којим другим.

Приликом покретања команде devspace init у каталогу пројекта биће вам понуђено (интерактивно):

  • изаберите радни Кубернетес кластер,
  • користити постојеће Dockerfile (или генеришите нови) да бисте креирали контејнер на основу њега,
  • изаберите спремиште за чување слика контејнера, итд.

Након свих ових припремних корака, можете започети развој покретањем команде devspace dev. Направиће контејнер, отпремити га у спремиште, покренути примену у кластер и покренути прослеђивање портова и синхронизацију контејнера са локалним директоријумом.

Опционо, од вас ће бити затражено да преместите терминал у контејнер. Не би требало да одбијете, јер у ствари контејнер почиње командом за спавање, а за право тестирање апликацију треба ручно покренути.

Коначно, тим devspace deploy избацује апликацију и припадајућу инфраструктуру у кластер, након чега све почиње да функционише у борбеном режиму.

Сва конфигурација пројекта се чува у датотеци devspace.yaml. Поред подешавања развојног окружења, у њему можете пронаћи и опис инфраструктуре, сличан стандардним Кубернетес манифестима, само што је знатно поједностављен.

Алати за програмере апликација које раде на Кубернетесу
Архитектура и главне фазе рада са ДевСпаце-ом

Поред тога, пројекту је лако додати унапред дефинисану компоненту (на пример, МиСКЛ ДБМС) или Хелм графикон. Прочитајте више у документација - није компликовано.

Скаффолд

  • Сајт; ГитХуб.
  • Кратка ГХ статистика: 7423 звездице, 4173 урезивања, 136 сарадника.
  • Језик: Иди.
  • Лиценца: Апацхе Лиценсе 2.0.

Овај Гоогле-ов услужни програм тврди да покрива све потребе програмера чији ће код на неки начин радити на Кубернетес кластеру. Почети да га користите није тако лако као девспаце: нема интерактивности, детекције језика и аутоматског креирања Dockerfile овде вам то неће понудити.

Међутим, ако вас ово не плаши, ево шта вам Скаффолд дозвољава:

  • Пратите промене изворног кода.
  • Синхронизујте га са контејнером за махуне ако не захтева склапање.
  • Сакупите контејнере са кодом, ако је језик интерпретиран, или компајлирајте артефакте и спакујте их у контејнере.
  • Добијене слике се аутоматски проверавају помоћу контејнер-структура-тест.
  • Означавање и отпремање слика у Доцкер регистар.
  • Поставите апликацију у кластер користећи кубецтл, Хелм или кустомизе.
  • Извршите прослеђивање порта.
  • Отклањање грешака у апликацијама написаним у Јави, Ноде.јс, Питхон-у.

Ток рада у различитим варијацијама је декларативно описан у датотеци skaffold.yaml. За пројекат такође можете дефинисати неколико профила у којима можете делимично или потпуно променити фазе склапања и постављања. На пример, за развој наведите основну слику погодну за програмера, а за постављање и производњу - минималну (+ користите securityContext контејнере или редефинисати кластер у коме ће апликација бити распоређена).

Доцкер контејнери се могу изградити локално или даљински: ин Гоогле Цлоуд Буилд или у кластеру користећи Канико. Базел и Јиб Мавен/Градле су такође подржани. За означавање, Скаффолд подржава многе стратегије: хешом гит урезивања, датумом/временом, сха256-збиром извора итд.

Одвојено, вреди напоменути могућност тестирања контејнера. Већ поменути оквир за тестирање структуре контејнера нуди следеће методе верификације:

  • Извршавање команди у контексту контејнера са праћењем излазних статуса и провером текстуалног излаза команде.
  • Провера присуства датотека у контејнеру и подударање наведених атрибута.
  • Контрола садржаја датотеке помоћу регуларних израза.
  • Верификација метаподатака слике (ENV, ENTRYPOINT, VOLUMES итд.)
  • Провера компатибилности лиценце.

Синхронизација датотека са контејнером се не врши на најоптималнији начин: Скаффолд једноставно креира архиву са изворима, копира је и распакује у контејнер (тар мора бити инсталиран). Стога, ако је ваш главни задатак синхронизација кода, боље је погледати специјализовано решење (ксинц).

Алати за програмере апликација које раде на Кубернетесу
Главне фазе рада Скаффолда

Генерално, алат вам не дозвољава да апстрахујете од Кубернетес манифеста и нема никакву интерактивност, тако да може изгледати да је тешко савладати. Али то је и његова предност - већа слобода деловања.

Башта

  • Сајт; ГитХуб.
  • Кратка ГХ статистика: 1063 звездице, 1927 уплата, 17 сарадника.
  • Језик: ТипеСцрипт (планирано је да се пројекат подели на неколико компоненти, од којих ће неке бити у Го, као и да се направи СДК за креирање додатака у ТипеСцрипт/ЈаваСцрипт и Го).
  • Лиценца: Апацхе Лиценсе 2.0.

Као и Скаффолд, Гарден има за циљ да аутоматизује процесе испоруке кода апликације у К8с кластер. Да бисте то урадили, прво морате да опишете структуру пројекта у ИАМЛ датотеци, а затим да покренете команду garden dev. Она ће учинити сву магију:

  • Прикупите контејнере са различитим деловима пројекта.
  • Спроводи интеграцијске и јединичне тестове, ако су они описани.
  • Пребацује све компоненте пројекта у кластер.
  • Ако се изворни код промени, поново ће покренути цео цевовод.

Главни фокус коришћења овог алата је дељење удаљеног кластера са развојним тимом. У овом случају, ако су неки од корака изградње и тестирања већ урађени, то ће значајно убрзати цео процес, јер ће Гарден моћи да користи кеширане резултате.

Модул пројекта може бити контејнер, Мавен контејнер, Хелм графикон, манифест за kubectl apply или чак ОпенФааС функцију. Штавише, било који од модула се може извући из удаљеног Гит спремишта. Модул може, али и не мора да дефинише услуге, задатке и тестове. Услуге и задаци могу имати зависности, тако да можете одредити редослед примене одређене услуге и организовати покретање задатака и тестова.

Гарден пружа кориснику прелепу контролну таблу (тренутно у експериментално стање), који приказује граф пројекта: компоненте, редослед склапања, извршавање задатака и тестова, њихове везе и зависности. Право у претраживачу можете да видите евиденцију свих компоненти пројекта и проверите шта одређена компонента излази преко ХТТП-а (ако је, наравно, декларисан улазни ресурс за њу).

Алати за програмере апликација које раде на Кубернетесу
Панел за башту

Овај алат такође има режим врућег поновног учитавања, који једноставно синхронизује промене скрипте са контејнером у кластеру, увелико убрзавајући процес отклањања грешака у апликацији. Врт има добар документацију и није лоше скуп примера, што вам омогућава да се брзо навикнете на њега и почнете да га користите. Иначе, недавно смо објавили превод чланка од њених аутора.

Закључак

Наравно, ова листа алата за развој и отклањање грешака у апликацијама у Кубернетес-у није ограничена на. Постоји још много корисних и практичних услужних програма који су вредни, ако не засебног чланка, онда барем спомена. Реците нам шта користите, на које проблеме сте наишли и како сте их решили!

ПС

Прочитајте и на нашем блогу:

Извор: ввв.хабр.цом

Додај коментар