Хуки и init-контейнеры в Kubernetes | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Разработчик IoT
-13%
C# Developer. Professional
-9%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Symfony Framework C++ Developer. Professional Java Developer. Basic JavaScript Developer. Professional Базы данных Android Developer. Professional Framework Laravel Cloud Solution Architecture Highload Architect Reverse-Engineering. Professional Vue.js разработчик Agile Project Manager Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool" PHP Developer. Basic
Инфраструктура
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Дизайн сетей ЦОД
-13%
Разработчик IoT
-13%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Основы Windows Server MS SQL Server Developer Разработчик программных роботов (RPA) на базе UiPath и PIX Microservice Architecture Reverse-Engineering. Professional Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Экспресс-курс «IaC Ansible» Network engineer. Basic
Корпоративные курсы
Безопасность веб-приложений Пентест. Практика тестирования на проникновение Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
IT-Recruiter
-15%
Дизайн сетей ЦОД
-13%
Компьютерное зрение
-13%
Enterprise Architect
-6%
Экосистема Hadoop, Spark, Hive
-8%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Основы Windows Server SRE практики и инструменты Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Agile Project Manager Супер-практикум по работе с протоколом BGP Infrastructure as a code in Ansible Супер-практикум по использованию и настройке GIT Промышленный ML на больших данных Супер-интенсив Azure Системный аналитик. Advanced
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Хуки и init-контейнеры в Kubernetes

Одна из задач DevOps-специалиста может заключаться в обеспечении деплоев в Kubernetes без простоя для разработчиков. Реализовать эту задачу бывает трудно, а все потому, что есть много вариантов завершения работы программных приложений и освобождения этими приложениями использованных ресурсов. Но особые трудности могут возникнуть с Nginx. На практике при последовательном развертывании этих подов активные соединения могут прерываться до успешного завершения. Почему так происходит?

Дело в том, что Kubernetes, прежде чем завершить работу пода, не ждет, пока Nginx-соединения исчерпают себя. Полностью избавиться от даунтайма можно посредством pre-stop хука и путем внедрения соответствующей функциональности:

Screenshot_1-1801-dcfab9.png

Ниже — nginx-killer.sh:

Screenshot_2-1801-b58ca1.png

Другая очень полезная парадигма заключается в использовании init-контейнеров для обработки запуска конкретных программных приложений. Это действительно полезно, особенно в тех случаях, когда у вас в распоряжении ресурсоемкий процесс миграции БД, который надо запускать до момента запуска приложения. Для данного процесса, кстати, можно указать более высокий ресурсный лимит, не устанавливая такой лимит для основного программного приложения.

Еще одна распространенная схема — доступ к секретам в init-контейнере, который предоставляет главному модулю соответствующие учетные данные. Что это дает? Например, предотвращение несанкционированного доступа к секретам из основного модуля приложения.

Напоследок приведем пару строк из официальной документации Kubernetes:

«Init-контейнеры осуществляют безопасный запуск пользовательского кода либо утилит, которые, в обратном случае, понизят безопасность образа контейнера программного приложения. Соответственно, если хранить ненужные инструменты отдельно, будет ограничена поверхность атаки образа контейнера».

Источник — https://medium.com/gumgum-tech/5-things-we-overlooked-when-putting-our-first-app-on-kubernetes-58583c1783e4.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться