7 најдобри практики за користење контејнери според Google

Забелешка. превод.: Авторот на оригиналната статија е Тео Чамли, архитект на Google Cloud Solutions. Во оваа објава за блогот Google Cloud, тој дава резиме на подеталниот водич на неговата компанија, наречен „Најдобри практики за работа со контејнери" Во него, експертите на Google собраа најдобри практики за ракување со контејнери во контекст на користење на Google Kubernetes Engine и многу повеќе, допирајќи широк спектар на теми: од безбедност до следење и евиденција. Значи, кои се најважните практики за контејнери според Google?

7 најдобри практики за користење контејнери според Google

Кубернетес мотор (Услуга базирана на Kubernetes за водење контејнеризирани апликации на Google Cloud - прибл. превод) е еден од најдобрите начини за извршување на оптоварувањата што треба да се зголемуваат. Кубернети ќе обезбеди непречено функционирање на повеќето апликации доколку се во контејнери. Но, ако сакате вашата апликација да биде лесна за управување и сакате целосно да ги искористите предностите на Kubernetes, треба да ги следите најдобрите практики. Тие ќе ја поедностават работата на апликацијата, нејзиното следење и дебагирање, а исто така ќе ја зголемат безбедноста.

Во оваа статија, ќе разгледаме список на работи што треба да ги знаете и да ги направите за ефикасно да ги извршувате контејнерите на Kubernetes. Оние кои сакаат да навлезат подлабоко во детали треба да го прочитаат материјалот Најдобри практики за работа со контејнери, а исто така обрнете внимание на нашите претходен пост за склопување на контејнери.

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

Ако апликацијата работи на кластер на Kubernetes, не е потребно многу за дневници. Централизиран систем за евиденција веројатно е веќе вграден во кластерот што го користите. Во случај на користење Kubernetes Engine, ова е одговорно Вклучување на Stackdriver. (Забелешка. превод.: И ако ја користите вашата сопствена инсталација на Kubernetes, препорачуваме внимателно да го погледнете нашето решение со отворен код - дневник.) Одржувајте го вашиот живот едноставен и користете механизми за евиденција на контејнери. Напишете дневници на stdout и stderr - тие ќе бидат автоматски примени, зачувани и индексирани.

Доколку сакате, можете и да пишувате дневници на JSON формат. Овој пристап ќе го олесни додавањето метаподатоци на нив. А со нив, Stackdriver Logging ќе има можност да пребарува низ дневниците користејќи ги овие метаподатоци.

2. Проверете дали контејнерите се без државјанство и непроменливи

За контејнерите да функционираат правилно во кластерот Kubernetes, тие мора да бидат без државјанство и непроменливи. Откако ќе се исполнат овие услови, Kubernetes може да ја заврши својата работа, создавајќи и уништувајќи ентитети на апликации кога и каде е потребно.

Без државјанство значи дека секоја состојба (постојани податоци од секаков вид) се чуваат надвор од контејнерот. За ова, во зависност од потребите, може да се користат различни видови на надворешно складирање: облак чување, Постојани дискови, Redis, Облак SQL или други управувани бази на податоци. (Забелешка. превод.: Прочитајте повеќе за ова во нашата статија “Оператори за Kubernetes: како да стартувате државни апликации".)

Непроменлив значи дека контејнерот нема да се менува за време на неговиот животен век: нема ажурирања, закрпи, промени во конфигурацијата. Ако треба да го ажурирате кодот на апликацијата или да примените лепенка, креирајте нова слика и распоредете ја. Се препорачува да се премести конфигурацијата на контејнерот (порта за слушање, опции за опкружување за време на работа итн.) надворешно - во Тајни и ConfigMaps. Тие можат да се ажурираат без да треба да се изгради нова слика на контејнер. За лесно да креирате цевководи со склопување на слики, можете да користите Изградба на облак. (Забелешка. превод.: За овие цели користиме алатка со отворен код дап.)

7 најдобри практики за користење контејнери според Google
Пример за ажурирање на конфигурацијата Deployment во Kubernetes користејќи ConfigMap монтирана во pods како конфигурација

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

Не пуштате апликации како root на вашите сервери, нели? Ако напаѓачот влезе во апликацијата, тој ќе добие root пристап. Истите размислувања важат и за неискористување на привилегирани контејнери. Ако треба да ги промените поставките на домаќинот, можете да му дадете специфичен контејнерот способности користејќи ја опцијата securityContext во Кубернетес. Ако треба да се промените sysctls, Кубернетес има посебен апстракт за ова. Во принцип, обидете се да го искористите максимумот во тоа- и контејнери со странични кола за извршување слични привилегирани операции. Тие не треба да бидат достапни ниту за внатрешен ниту за надворешен сообраќај.

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

4. Избегнувајте да трчате како root

Веќе се разговараше за привилегирани контејнери, но ќе биде уште подобро ако, покрај ова, не стартувате апликации внатре во контејнерот како root. Ако напаѓачот најде далечинска ранливост во апликација со права на root што овозможува извршување на кодот, по што може да го напушти контејнерот преку сè уште непозната ранливост, тој ќе добие root на домаќинот.

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

5. Направете ја апликацијата лесна за следење

Како и логирањето, следењето е составен дел од управувањето со апликациите. Популарно решение за следење во заедницата Кубернетес е Прометеј - систем кој автоматски открива подлоги и услуги кои бараат мониторинг. (Забелешка. превод.: Видете ги и нашите детален извештај на тема следење со помош на Прометеј и Кубернет.) Stackdriver е способен да ги следи кластерите на Kubernetes и вклучува своја верзија на Prometheus за следење на апликации.

7 најдобри практики за користење контејнери според Google
Kubernetes Dashboard на Stackdriver

Prometheus очекува апликацијата да препраќа метрика до крајната точка HTTP. Достапно за ова Библиотеки на клиенти на Прометеј. Истиот формат го користат и други алатки како Отворен попис и Истио.

6. Направете го здравствениот статус на апликацијата достапен

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

За сонда за живост (проверки на виталност) апликацијата мора да има HTTP крајна точка која враќа одговор „200 OK“ доколку е функционална и нејзините основни зависности се задоволени. За истрага за подготвеност (проверки на подготвеност за сервис) апликацијата мора да има друга крајна точка на HTTP која враќа одговор „200 OK“ доколку апликацијата е во здрава состојба, чекорите за иницијализација се завршени и секое валидно барање не резултира со грешка. Kubernetes ќе го насочи сообраќајот до контејнерот само ако апликацијата е подготвена според овие проверки. Две крајни точки може да се спојат ако нема разлика помеѓу состојбите на живост и подготвеност.

Можете да прочитате повеќе за ова во поврзаната статија од Sandeep Dinesh, програмерски застапник од Google:Најдобри практики на Kubernetes: Поставување здравствени проверки со сонди за подготвеност и живост".

7. Изберете ја вашата верзија на сликата внимателно

Повеќето јавни и приватни слики користат систем за означување сличен на оној опишан во Најдобри практики за градење контејнери. Ако сликата користи систем близок до семантичка верзија, потребно е да се земат предвид спецификите на означување. На пример, означете latest може често да се движи од слика на слика - не може да се потпрете ако ви требаат предвидливи и повторливи градби и инсталации.

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

PS од преведувач

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

Извор: www.habr.com

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