HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: kubernetes, хуки, init-контейнеры</p>
1 <p>Теги: kubernetes, хуки, init-контейнеры</p>
2 <p>Одна из задач DevOps-специалиста может заключаться в обеспечении деплоев в Kubernetes без простоя для разработчиков. Реализовать эту задачу бывает трудно, а все потому, что есть много вариантов завершения работы программных приложений и освобождения этими приложениями использованных ресурсов. Но особые трудности могут возникнуть с<strong>Nginx</strong>. На практике при последовательном развертывании этих подов активные соединения могут прерываться до успешного завершения. Почему так происходит?</p>
2 <p>Одна из задач DevOps-специалиста может заключаться в обеспечении деплоев в Kubernetes без простоя для разработчиков. Реализовать эту задачу бывает трудно, а все потому, что есть много вариантов завершения работы программных приложений и освобождения этими приложениями использованных ресурсов. Но особые трудности могут возникнуть с<strong>Nginx</strong>. На практике при последовательном развертывании этих подов активные соединения могут прерываться до успешного завершения. Почему так происходит?</p>
3 <p>Дело в том, что Kubernetes, прежде чем завершить работу пода, не ждет, пока Nginx-соединения исчерпают себя. Полностью избавиться от даунтайма можно посредством<strong>pre-stop хука</strong>и путем внедрения соответствующей функциональности:</p>
3 <p>Дело в том, что Kubernetes, прежде чем завершить работу пода, не ждет, пока Nginx-соединения исчерпают себя. Полностью избавиться от даунтайма можно посредством<strong>pre-stop хука</strong>и путем внедрения соответствующей функциональности:</p>
4 <p>Ниже -<strong>nginx-killer.sh</strong>:</p>
4 <p>Ниже -<strong>nginx-killer.sh</strong>:</p>
5 <p>Другая очень полезная парадигма заключается в использовании<strong>init-контейнеров</strong>для обработки запуска конкретных программных приложений. Это действительно полезно, особенно в тех случаях, когда у вас в распоряжении ресурсоемкий процесс миграции БД, который надо запускать до момента запуска приложения. Для данного процесса, кстати, можно указать более высокий ресурсный лимит, не устанавливая такой лимит для основного программного приложения.</p>
5 <p>Другая очень полезная парадигма заключается в использовании<strong>init-контейнеров</strong>для обработки запуска конкретных программных приложений. Это действительно полезно, особенно в тех случаях, когда у вас в распоряжении ресурсоемкий процесс миграции БД, который надо запускать до момента запуска приложения. Для данного процесса, кстати, можно указать более высокий ресурсный лимит, не устанавливая такой лимит для основного программного приложения.</p>
6 <p>Еще одна распространенная схема -<strong>доступ к секретам в init-контейнере</strong>, который предоставляет главному модулю соответствующие учетные данные. Что это дает? Например, предотвращение несанкционированного доступа к секретам из основного модуля приложения.</p>
6 <p>Еще одна распространенная схема -<strong>доступ к секретам в init-контейнере</strong>, который предоставляет главному модулю соответствующие учетные данные. Что это дает? Например, предотвращение несанкционированного доступа к секретам из основного модуля приложения.</p>
7 <p>Напоследок приведем пару строк из официальной документации<a>Kubernetes</a>:</p>
7 <p>Напоследок приведем пару строк из официальной документации<a>Kubernetes</a>:</p>
8 <p>"Init-контейнеры осуществляют безопасный запуск пользовательского кода либо утилит, которые, в обратном случае, понизят безопасность образа контейнера программного приложения. Соответственно, если хранить ненужные инструменты отдельно, будет ограничена поверхность атаки образа контейнера".</p>
8 <p>"Init-контейнеры осуществляют безопасный запуск пользовательского кода либо утилит, которые, в обратном случае, понизят безопасность образа контейнера программного приложения. Соответственно, если хранить ненужные инструменты отдельно, будет ограничена поверхность атаки образа контейнера".</p>
9 <p><em>Источник - https://medium.com/gumgum-tech/5-things-we-overlooked-when-putting-our-first-app-on-kubernetes-58583c1783e4.</em></p>
9 <p><em>Источник - https://medium.com/gumgum-tech/5-things-we-overlooked-when-putting-our-first-app-on-kubernetes-58583c1783e4.</em></p>
10  
10