Гоогле-ових 7 најбољих пракси за контејнере

Белешка. трансл.: Аутор оригиналног чланка је Тхео Цхамлеи, Гоогле Цлоуд Солутионс Арцхитецт. У овом посту за Гоогле Цлоуд блог, он даје резиме детаљнијег водича своје компаније, под називом "Најбоље праксе за рад са контејнерима" У њему су Гоогле стручњаци прикупили најбоље праксе за управљање контејнерима у контексту коришћења Гоогле Кубернетес Енгине-а и више, дотичући се широког спектра тема: од безбедности до надгледања и евидентирања. Дакле, које су најважније праксе контејнера према Гоогле-у?

Гоогле-ових 7 најбољих пракси за контејнере

Кубернетес Енгине (Услуга заснована на Кубернетес-у за покретање контејнерских апликација на Гоогле Цлоуд-у - прибл. превод) је један од најбољих начина за покретање радних оптерећења која треба да се скалирају. Кубернетес ће обезбедити несметано функционисање већине апликација ако су у контејнерима. Али ако желите да се вашом апликацијом лако управља и желите да у потпуности искористите предности Кубернетеса, морате да следите најбоље праксе. Они ће поједноставити рад апликације, њено праћење и отклањање грешака, а такође ће повећати безбедност.

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

1. Користите изворне механизме за евидентирање контејнера

Ако апликација ради на Кубернетес кластеру, није потребно много за евиденцију. Централизовани систем евидентирања је вероватно већ уграђен у кластер који користите. У случају коришћења Кубернетес Енгине-а, ово је одговорно Стацкдривер евидентирање. (Белешка. трансл.: А ако користите сопствену Кубернетес инсталацију, препоручујемо вам да ближе погледате наше решење отвореног кода - брвнара.) Нека ваш живот буде једноставан и користите механизме за евидентирање матичних контејнера. Упишите дневнике у стдоут и стдерр - они ће бити аутоматски примљени, сачувани и индексирани.

Ако желите, такође можете писати дневнике ЈСОН формат. Овај приступ ће им олакшати додавање метаподатака. Уз њих, Стацкдривер Логгинг ће имати могућност претраживања евиденција користећи ове метаподатке.

2. Уверите се да су контејнери без држављанства и непроменљиви

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

Држављанство значи да се било које стање (трајни подаци било које врсте) чува изван контејнера. За ово, у зависности од потреба, могу се користити различите врсте екстерног складишта: Цлоуд Стораге, Персистент Дискс, Редис, Цлоуд СКЛ или друге управљане базе података. (Белешка. трансл.: Прочитајте више о овоме у нашем чланку “Оператори за Кубернетес: како покренути апликације са стањем".)

Непроменљив значи да се контејнер неће мењати током свог животног века: нема ажурирања, закрпа, промена конфигурације. Ако треба да ажурирате код апликације или примените закрпу, направите нову слику и примените је. Препоручљиво је да конфигурацију контејнера (порт за слушање, опције окружења за извршавање итд.) преместите екстерно - на Тајне и ЦонфигМапс. Могу се ажурирати без потребе за прављењем новог имиџа контејнера. Да бисте лако креирали цевоводе са монтажом слике, можете користити Цлоуд Буилд. (Белешка. трансл.: За ове сврхе користимо алатку отвореног кода дапп.)

Гоогле-ових 7 најбољих пракси за контејнере
Пример ажурирања конфигурације примене у Кубернетес-у користећи ЦонфигМап монтиран у подовима као конфигурацију

3. Избегавајте привилеговане контејнере

Не покрећете апликације као роот на својим серверима, зар не? Ако нападач уђе у апликацију, добиће роот приступ. Иста разматрања важе за непокретање привилегованих контејнера. Ако треба да промените подешавања на хосту, можете да дате специфичан контејнер Могућности користећи опцију securityContext у Кубернетесу. Ако треба да се промените сисцтлс, Кубернетес има засебан апстракт за ово. Уопштено, покушајте да извучете максимум у томе- и бочне приколице за обављање сличних привилегованих операција. Они не морају да буду доступни ни унутрашњем ни спољном саобраћају.

Ако администрирате кластер, можете користити Под безбедносна политика за ограничења коришћења привилегованих контејнера.

4. Избегавајте покретање као роот

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

Најбољи начин да се ово избегне је да ништа не покрећете као роот. Да бисте то урадили, можете користити директиву USER в Dockerfile или runAsUser у Кубернетесу. Администратор кластера такође може да конфигурише понашање примене користећи Под безбедносна политика.

5. Учините апликацију лаком за праћење

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

Гоогле-ових 7 најбољих пракси за контејнере
Кубернетес контролна табла на Стацкдривер-у

Прометхеус очекује да апликација проследи метрику до ХТТП крајње тачке. Доступан за ово Прометхеус клијентске библиотеке. Исти формат користе и други алати као што је ОпенЦенсус и Истио.

6. Учините здравствени статус апликације доступним

Управљање апликацијама у производњи је потпомогнуто његовом способношћу да саопшти своје стање целом систему. Да ли је апликација покренута? У реду је? Да ли сте спремни да примите саобраћај? Како се понаша? Најчешћи начин за решавање овог проблема је спровођење здравствених прегледа (здравствени прегледи). Кубернетес има два типа: сонде за животност и спремност.

За сонду за живост (провере виталности) апликација мора имати ХТТП крајњу тачку која враћа одговор „200 ОК“ ако је функционална и ако су њене основне зависности задовољене. За сонду спремности (провере спремности услуге) апликација мора имати другу ХТТП крајњу тачку која враћа „200 ОК“ одговор ако је апликација у здравом стању, ако су кораци иницијализације завршени и ниједан важећи захтев не резултира грешком. Кубернетес ће усмеравати саобраћај ка контејнеру само ако је апликација спремна према овим проверама. Две крајње тачке се могу спојити ако нема разлике између стања животности и стања спремности.

Више о овоме можете прочитати у повезаном чланку Сандееп Динесх, адвокат програмера из Гоогле-а: „Кубернетес најбоље праксе: Подешавање здравствених провера са сондама спремности и живог стања'.

7. Пажљиво одаберите верзију слике

Већина јавних и приватних слика користи систем означавања сличан оном описаном у Најбоље праксе за прављење контејнера. Ако слика користи систем близу семантичко верзионисање, потребно је водити рачуна о специфичностима означавања. На пример, ознака latest може се често кретати са слике на слику – на њега се не можете ослонити ако су вам потребне предвидљиве и поновљиве конструкције и инсталације.

Можете користити ознаку X.Y.Z (они су скоро увек непромењени), али у овом случају пратите све закрпе и ажурирања слике. Ако слика коју користите има ознаку X.Y, ово је добра опција за златну средину. Његовим одабиром аутоматски добијате закрпе и истовремено се ослањате на стабилну верзију апликације.

ПС од преводиоца

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

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

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