Google бойынша контейнерлерді пайдаланудың 7 үздік тәжірибесі

Ескерту. аударма: Түпнұсқа мақаланың авторы - Google Cloud Solutions архитекторы Тео Чамли. Google Cloud блогына арналған бұл жазбада ол өз компаниясының «деп аталатын егжей-тегжейлі нұсқаулығының қысқаша мазмұнын береді.Контейнерлерді пайдаланудың ең жақсы тәжірибелері" Онда Google сарапшылары Google Kubernetes Engine және т.б. пайдалану контекстінде контейнерлерді пайдаланудың озық тәжірибелерін жинап, кең ауқымды тақырыптарды қозғады: қауіпсіздіктен бақылау мен тіркеуге дейін. Сонымен, Google бойынша ең маңызды контейнерлік тәжірибелер қандай?

Google бойынша контейнерлерді пайдаланудың 7 үздік тәжірибесі

Kubernetes қозғалтқышы (Google Cloud жүйесінде контейнерлік қолданбаларды іске қосуға арналған Кубернетес негізіндегі қызмет - шамамен. аударма) масштабтауды қажет ететін жұмыс жүктемелерін орындаудың ең жақсы тәсілдерінің бірі болып табылады. Kubernetes егер олар контейнерде болса, көптеген қолданбалардың біркелкі жұмыс істеуін қамтамасыз етеді. Бірақ қолданбаңызды басқару оңай болғанын қаласаңыз және Kubernetes мүмкіндіктерін толық пайдаланғыңыз келсе, ең жақсы тәжірибелерді ұстануыңыз керек. Олар қолданбаның жұмысын, оны бақылауды және жөндеуді жеңілдетеді, сонымен қатар қауіпсіздікті арттырады.

Бұл мақалада біз Kubernetes-те контейнерлерді тиімді іске қосу үшін сіз білуіңіз және істеуіңіз керек нәрселердің тізімін қарастырамыз. Мәліметтерге тереңірек үңілгісі келетіндер материалды оқып шығуы керек Контейнерлерді пайдаланудың ең жақсы тәжірибелері, сонымен қатар біздің назар аударыңыз бұрынғы пост контейнерлерді құрастыру туралы.

1. Контейнерлерді тіркеудің жергілікті механизмдерін пайдаланыңыз

Қолданба Kubernetes кластерінде жұмыс істеп тұрса, журналдар үшін көп нәрсе қажет емес. Орталықтандырылған тіркеу жүйесі сіз пайдаланып жатқан кластерге ендірілген болуы мүмкін. Kubernetes Engine пайдаланылған жағдайда, бұл жауапты Stackdriver журналы. (Ескерту. аударма: Егер сіз жеке Kubernetes орнатуыңызды пайдалансаңыз, біз ашық бастапқы шешімді мұқият қарауды ұсынамыз - ағаш үй.) Өміріңізді қарапайым ұстаңыз және жергілікті контейнерлерді тіркеу механизмдерін пайдаланыңыз. stdout және stderr-ге журналдарды жазыңыз - олар автоматты түрде қабылданады, сақталады және индекстеледі.

Қаласаңыз, журналдарды да жаза аласыз JSON пішімі. Бұл тәсіл оларға метадеректерді қосуды жеңілдетеді. Олармен бірге Stackdriver Logging осы метадеректерді пайдаланып журналдар арқылы іздеу мүмкіндігіне ие болады.

2. Контейнерлердің азаматтығы жоқ және өзгермейтінін тексеріңіз

Контейнерлер Kubernetes кластерінде дұрыс жұмыс істеуі үшін олар азаматтығы жоқ және өзгермейтін болуы керек. Осы шарттар орындалғаннан кейін, Кубернетес өз жұмысын орындай алады, қажет кезде және жерде қолданба нысандарын жасап, жоя алады.

Азаматтығы жоқ адамдар кез келген күй (кез келген түрдегі тұрақты деректер) контейнерден тыс сақталады дегенді білдіреді. Бұл үшін қажеттіліктерге байланысты сыртқы жадтың әртүрлі түрлерін пайдалануға болады: Бұлтты сақтау, Тұрақты дискілер, Редис, Бұлтты SQL немесе басқа басқарылатын дерекқорлар. (Ескерту. аударма: Бұл туралы толығырақ біздің мақалада оқыңызKubernetes операторлары: күйі бар қолданбаларды қалай іске қосу керек«.)

Өзгермейтін контейнердің қызмет ету мерзімі ішінде өзгертілмейтінін білдіреді: жаңартулар, патчтар, конфигурациялар өзгермейді. Қолданба кодын жаңарту немесе патч қолдану қажет болса, жаңа кескін жасап, оны орналастырыңыз. Контейнер конфигурациясын (тыңдау порты, орындалу ортасының опциялары, т.б.) сыртқа жылжыту ұсынылады. Secrets и ConfigMaps. Оларды жаңа контейнер кескінін жасамай-ақ жаңартуға болады. Кескінді құрастыру арқылы құбырларды оңай жасау үшін пайдалануға болады Cloud Build. (Ескерту. аударма: Осы мақсаттар үшін біз ашық бастапқы код құралын қолданамыз Dapper.)

Google бойынша контейнерлерді пайдаланудың 7 үздік тәжірибесі
Конфигурация ретінде подкасттарға орнатылған ConfigMap көмегімен Kubernetes жүйесінде орналастыру конфигурациясын жаңарту мысалы

3. Артықшылықты контейнерлерден аулақ болыңыз

Сіз қолданбаларды серверлеріңізде түбірлік ретінде іске қоспайсыз, солай ма? Егер шабуылдаушы қолданбаға кірсе, ол түбірлік рұқсат алады. Дәл осындай ойлар артықшылықты контейнерлерді іске қоспауға қатысты. Хосттағы параметрлерді өзгерту қажет болса, контейнерді нақты бере аласыз мүмкіндіктері опциясын пайдалану securityContext Кубернетес қаласында. Егер өзгерту керек болса sysctls, Кубернетес бар бөлек реферат Осыған. Жалпы, барынша пайдалануға тырысыңыз ішінде- және ұқсас артықшылықты операцияларды орындауға арналған бүйірлік контейнерлер. Олардың ішкі немесе сыртқы трафикке қол жетімді болуы қажет емес.

Кластерді басқарсаңыз, пайдалана аласыз Pod қауіпсіздік саясаты артықшылықты контейнерлерді пайдалануға шектеулер үшін.

4. Түбір ретінде іске қосудан аулақ болыңыз

Артықшылықты контейнерлер қазірдің өзінде талқыланды, бірақ бұған қоса, контейнер ішіндегі қолданбаларды түбір ретінде іске қоспасаңыз, одан да жақсырақ болады. Егер шабуылдаушы кодты орындауға мүмкіндік беретін түбірлік құқықтары бар қолданбада қашықтағы осалдықты тапса, содан кейін ол әлі белгісіз осалдық арқылы контейнерден шыға алады, ол хостта тамыр алады.

Бұған жол бермеудің ең жақсы жолы - бірінші кезекте ештеңені root ретінде іске қоспау. Ол үшін директиваны пайдалануға болады USER в Dockerfile немесе runAsUser Кубернетес қаласында. Кластер әкімшісі, сонымен қатар, қолдану арқылы орындау әрекетін конфигурациялай алады Pod қауіпсіздік саясаты.

5. Қолданбаны бақылауды жеңілдетіңіз

Тіркеу сияқты, мониторинг қолданбаларды басқарудың ажырамас бөлігі болып табылады. Kubernetes қауымдастығындағы танымал мониторинг шешімі Прометей - бақылауды қажет ететін бөлімдер мен қызметтерді автоматты түрде анықтайтын жүйе. (Ескерту. аударма: Сондай-ақ біздің егжей-тегжейлі есеп Prometheus және Kubernetes көмегімен мониторинг тақырыбы бойынша.) Stackdriver Kubernetes кластерлерін бақылауға қабілетті және қолданбаларды бақылауға арналған Prometheus бағдарламасының жеке нұсқасын қамтиды.

Google бойынша контейнерлерді пайдаланудың 7 үздік тәжірибесі
Stackdriver жүйесіндегі Kubernetes бақылау тақтасы

Prometheus қолданбадан метриканы HTTP соңғы нүктесіне жіберуді күтеді. Бұл үшін қол жетімді Prometheus клиенттерінің кітапханалары. Дәл осындай пішімді басқа құралдар пайдаланады OpenCensus и Istio.

6. Қолданбаның денсаулық күйін қолжетімді етіңіз

Өндірістегі қолданбаларды басқару оның күйін бүкіл жүйеге жеткізу мүмкіндігімен көмектеседі. Қолданба жұмыс істеп жатыр ма? Жарайды ма? Сіз трафикті қабылдауға дайынсыз ба? Ол өзін қалай ұстайды? Бұл мәселені шешудің ең көп таралған жолы - денсаулықты тексеру (денсаулығын тексеру). Kubernetes екі түрі бар: жандылық пен дайындық зондтары.

Тірілік зонд үшін (тіршілікті тексеру) қолданбада функционалды және оның негізгі тәуелділіктері қанағаттандырылған болса, "200 OK" жауабын қайтаратын HTTP соңғы нүктесі болуы керек. Дайындықты тексеру үшін (қызметтің дайындығын тексеру) қолданба дұрыс күйде болса, баптандыру қадамдары орындалса және кез келген жарамды сұрау қатеге әкелмесе, қолданбада "200 OK" жауабын қайтаратын басқа HTTP соңғы нүктесі болуы керек. Кубернетес трафикті контейнерге бағыттайды, егер қолданба осы тексерулерге сәйкес дайын болса. Екі соңғы нүктені біріктіруге болады, егер белсенділік пен дайындық күйлері арасында айырмашылық болмаса.

Бұл туралы толығырақ Google әзірлеушілерінің адвокаты Сандип Динештің тиісті мақаласынан оқи аласыз: «Kubernetes үздік тәжірибелері: Дайындық пен жандылық зондтары арқылы денсаулықты тексеруді орнату«.

7. Сурет нұсқасын мұқият таңдаңыз

Жалпыға ортақ және жеке кескіндердің көпшілігінде сипатталғанға ұқсас тегтеу жүйесі пайдаланылады Контейнерлер салудың ең жақсы тәжірибелері. Егер сурет жақын жүйені пайдаланса семантикалық нұсқалау, таңбалау ерекшеліктерін ескеру қажет. Мысалы, тег latest кескіннен кескінге жиі жылжи алады - болжанатын және қайталанатын құрастырулар мен қондырғылар қажет болса, оған сенуге болмайды.

Сіз тегті пайдалана аласыз X.Y.Z (олар әрдайым дерлік өзгермейді), бірақ бұл жағдайда кескіннің барлық патчтары мен жаңартуларын қадағалаңыз. Егер сіз пайдаланып жатқан суретте тег болса X.Y, бұл алтын орта үшін жақсы нұсқа. Оны таңдау арқылы сіз автоматты түрде патчтарды аласыз және сонымен бірге қолданбаның тұрақты нұсқасына сенесіз.

Аудармашыдан PS

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру