Please open Telegram to view this post
VIEW IN TELEGRAM
😁31❤13👍4
Как собрать продакшн-готовый образ контейнера для Go-приложения
Достаточно ли тебе
👉 DevOps Portal
Достаточно ли тебе
FROM scratch? Посмотри эти практические задания, чтобы разобраться с типичными проблемами контейнеризации Go:- Cтатическая линковка: https://labs.iximiuz.com/challenges/dockerize-golang-application-static-linking
- Динамическая линковка https://labs.iximiuz.com/challenges/dockerize-golang-application-dynamic-linking
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6🔥4
Forwarded from Мир Linux
Сообщество Kubernetes официально объявило о выводе ingress-nginx из эксплуатации
Много лет этот контроллер был выбором по умолчанию для маршрутизации HTTP/HTTPS-трафика в бесчисленных кластерах, но в марте 2026 года он перейдёт в архивный режим.
Основная причина этого решения в том, что Kubernetes Ingress API уже давно заморожен. В сам API больше не добавляются новые фичи, что ограничивает дальнейшее развитие ingress-nginx.
Параллельно экосистема смещается в сторону Gateway API, который обеспечивает больше гибкости, лучшую расширяемость и более чёткий дизайн для современных сценариев управления трафиком.
До марта 2026 года ingress-nginx будет получать только best-effort поддержку - без гарантированных релизов, исправлений багов или обновлений безопасности. После этого он больше не будет получать активную поддержку.
Командам, зависящим от ingress-nginx, стоит начать подготовку уже сейчас: определить кластеры, где он используется, оценить альтернативы, протестировать план миграции и рассмотреть контроллеры, поддерживающие Gateway API, чтобы дальнейшие апгрейды проходили безболезненно
@linuxos_tg
Много лет этот контроллер был выбором по умолчанию для маршрутизации HTTP/HTTPS-трафика в бесчисленных кластерах, но в марте 2026 года он перейдёт в архивный режим.
Основная причина этого решения в том, что Kubernetes Ingress API уже давно заморожен. В сам API больше не добавляются новые фичи, что ограничивает дальнейшее развитие ingress-nginx.
Параллельно экосистема смещается в сторону Gateway API, который обеспечивает больше гибкости, лучшую расширяемость и более чёткий дизайн для современных сценариев управления трафиком.
До марта 2026 года ingress-nginx будет получать только best-effort поддержку - без гарантированных релизов, исправлений багов или обновлений безопасности. После этого он больше не будет получать активную поддержку.
Командам, зависящим от ingress-nginx, стоит начать подготовку уже сейчас: определить кластеры, где он используется, оценить альтернативы, протестировать план миграции и рассмотреть контроллеры, поддерживающие Gateway API, чтобы дальнейшие апгрейды проходили безболезненно
@linuxos_tg
👍9❤3
Замечательный туториал: How to Build Smaller Container Images: Docker Multi-Stage Builds.
Основная задача материала научить делать маленькие/тонкие и более безопасные образы для приложений. Одним из основных посылов является: "build and runtime images should also be completely separate!".
В статье:
- Как делать не надо.
- Что такое
- Примеры
👉 DevOps Portal
Основная задача материала научить делать маленькие/тонкие и более безопасные образы для приложений. Одним из основных посылов является: "build and runtime images should also be completely separate!".
В статье:
- Как делать не надо.
- Что такое
Multi-Stage сборки- Примеры
Multi-Stage сборки для Node.js, Go, Rust, Java, PHPPlease open Telegram to view this post
VIEW IN TELEGRAM
❤9👍1
DevOps vs SRE vs Platform Engineering
DevOps Engineers обеспечивают эффективную и надёжную доставку ПО, сокращая разрыв между командами разработки и операций.
Site Reliability Engineers (SRE) концентрируются на оптимизации надёжности, производительности и эффективности программных систем.
Platform Engineers проектируют, создают и поддерживают инфраструктуру и инструменты для поддержки разработки, деплоя и эксплуатации ПО.
Вот простенькая картинка, чтобы тебе было легче понять.
👉 DevOps Portal
DevOps Engineers обеспечивают эффективную и надёжную доставку ПО, сокращая разрыв между командами разработки и операций.
Site Reliability Engineers (SRE) концентрируются на оптимизации надёжности, производительности и эффективности программных систем.
Platform Engineers проектируют, создают и поддерживают инфраструктуру и инструменты для поддержки разработки, деплоя и эксплуатации ПО.
Вот простенькая картинка, чтобы тебе было легче понять.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍6🔥4
Когда на одной машине крутится несколько контейнеров, один из них легко может начать потреблять больше CPU, чем ожидается.
Docker не балансирует CPU между контейнерами автоматически: если одному контейнеру нужно больше циклов, он их заберёт, пока не заданы ограничения. Это может замедлить другие контейнеры или сделать работу системы нестабильной по ощущениям
Docker предоставляет два основных механизма для контроля CPU:
Это соответствует модели планировщика Docker:
Без этих параметров один загруженный контейнер может занять столько CPU, сколько ему позволит хост.
В реальных нагрузках такие ограничения делают работу контейнеров более предсказуемой и защищают критичные сервисы, работающие на той же машине.
👉 DevOps Portal
Docker не балансирует CPU между контейнерами автоматически: если одному контейнеру нужно больше циклов, он их заберёт, пока не заданы ограничения. Это может замедлить другие контейнеры или сделать работу системы нестабильной по ощущениям
Docker предоставляет два основных механизма для контроля CPU:
--cpus – задаёт жёсткий лимит CPU (например, --cpus="0.5" позволяет контейнеру использовать не более 50% одного ядра).--cpu-shares – задаёт относительный вес, а не жёсткий лимит. Контейнеры с более высоким значением получают больше CPU только когда несколько контейнеров конкурируют за ресурсы.Это соответствует модели планировщика Docker:
cpu_shares влияет на приоритет, а cpus задаёт фактический потолок.Без этих параметров один загруженный контейнер может занять столько CPU, сколько ему позволит хост.
В реальных нагрузках такие ограничения делают работу контейнеров более предсказуемой и защищают критичные сервисы, работающие на той же машине.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤6🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Интерактивные лабораторные по Kubernetes
Проект Kubelab предлагает готовую инфраструктуру для обучения и экспериментов с Kubernetes. Он позволяет реализовать «интерактивный Kubernetes-тренажер» локально и проходить различные задания.
Для лабораторных есть подсказки или готовые решения, если не получилось сделать самостоятельно. Кроме этого, Kubelab обладает Web UI и редактором кода, чтобы упростить обучение
Забираем с GitHub
👉 DevOps Portal
Проект Kubelab предлагает готовую инфраструктуру для обучения и экспериментов с Kubernetes. Он позволяет реализовать «интерактивный Kubernetes-тренажер» локально и проходить различные задания.
Для лабораторных есть подсказки или готовые решения, если не получилось сделать самостоятельно. Кроме этого, Kubelab обладает Web UI и редактором кода, чтобы упростить обучение
Забираем с GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤5
Проверить bash-скрипт на синтаксические ошибки можно командой:
bash -n scriptname
Please open Telegram to view this post
VIEW IN TELEGRAM
❤31👍16
Когда вы собираете контейнерные образы, которые должны запускаться на разном железе, одного тега недостаточно.
Нужно понимать, действительно ли образ поддерживает несколько архитектур, и здесь помогает
С её помощью можно точно увидеть, под какие платформы собран образ, например, AMD64 для облачных серверов и ARM64 для edge-устройств, всё это под одним тегом. Это простой способ убедиться, что образ, который вы тянете, будет стабильно работать в разных окружениях.
Это особенно важно для гибридных деплоев. Например, ваш бэкенд крутится в облаке на AMD64, а edge-шлюзы или IoT-устройства работают на ARM.
Проверяя манифест, вы гарантируете, что одна и та же версия контейнера будет корректно работать везде, без необходимости вручную собирать и тегировать отдельные образы.
Для команд, которые доставляют приложения на разнородное железо, использование
👉 DevOps Portal
Нужно понимать, действительно ли образ поддерживает несколько архитектур, и здесь помогает
docker manifest. Команда docker manifest позволяет инспектировать и управлять мультиархитектурными образами.С её помощью можно точно увидеть, под какие платформы собран образ, например, AMD64 для облачных серверов и ARM64 для edge-устройств, всё это под одним тегом. Это простой способ убедиться, что образ, который вы тянете, будет стабильно работать в разных окружениях.
Это особенно важно для гибридных деплоев. Например, ваш бэкенд крутится в облаке на AMD64, а edge-шлюзы или IoT-устройства работают на ARM.
Проверяя манифест, вы гарантируете, что одна и та же версия контейнера будет корректно работать везде, без необходимости вручную собирать и тегировать отдельные образы.
Для команд, которые доставляют приложения на разнородное железо, использование
docker manifest – простой способ избежать ситуации, когда работает на одной машине, но не работает на другой.Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍5
Многим организациям сложно управлять несколькими Kubernetes-кластерами
Например,
У вас могут быть отдельные кластеры для dev, stage и prod.
Если вы хотите задеплоить что-то вроде стека Prometheus в каждый кластер, вам обычно приходится переключать контексты kubeconfig и накатывать всё по одному.
Вместо этого вы можете использовать Clusternet (открытый проект CNCF) чтобы управлять всеми Kubernetes-кластерами из одного хост-кластера.
Clusternet умеет работать с:
- обычными Kubernetes-кластерами
- managed-кластерами
- on-prem кластерами
- edge-кластерами
В хост-кластере вы поднимаете hub и регистрируете кластеры, которыми хотите управлять, как дочерние.
После регистрации вы можете использовать API-сервер хост-кластера, чтобы деплоить приложения и выполнять операции во всех этих кластерах.
GitHub: clusternet
👉 DevOps Portal
Например,
У вас могут быть отдельные кластеры для dev, stage и prod.
Если вы хотите задеплоить что-то вроде стека Prometheus в каждый кластер, вам обычно приходится переключать контексты kubeconfig и накатывать всё по одному.
Вместо этого вы можете использовать Clusternet (открытый проект CNCF) чтобы управлять всеми Kubernetes-кластерами из одного хост-кластера.
Clusternet умеет работать с:
- обычными Kubernetes-кластерами
- managed-кластерами
- on-prem кластерами
- edge-кластерами
В хост-кластере вы поднимаете hub и регистрируете кластеры, которыми хотите управлять, как дочерние.
После регистрации вы можете использовать API-сервер хост-кластера, чтобы деплоить приложения и выполнять операции во всех этих кластерах.
GitHub: clusternet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
Kubeshark обеспечивает глубокую видимость и мониторинг всего API-трафика и payload'ов, проходящих внутрь, наружу и между контейнерами и подами внутри кластера Kubernetes
Забираем здесь
👉 DevOps Portal
Забираем здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥6👍4
Большинство обсуждений Docker в итоге приходят к одному вопросу: использовать slim или alpine, какой базовый образ выбрать?
Alpine очень маленький и выглядит привлекательно, если нужно максимально ужать размер образа.
Но он использует musl вместо glibc, поэтому некоторые приложения ведут себя иначе, некоторые библиотеки работают не так, как ожидается, и отладка может быть болезненной.
Отлично подходит для простых статических бинарников, которые почти не завязаны на зависимости уровня ОС.
Slim-образы (например,
Это обычно означает меньше сюрпризов в проде, проще отладку и лучшую совместимость с существующей документацией и примерами.
Для большинства веб-приложений, API и инструментов slim — более безопасный выбор по умолчанию. Вы всё равно получаете меньшие образы, быстрые pull’ы и нормальную безопасность, но без борьбы с странными edge-кейсами musl.
Alpine имеет смысл, когда вы:
- доставляете один статический бинарник,
- полностью понимаете свои зависимости,
- готовы разруливать возможные проблемы совместимости, если они появятся.
👉 DevOps Portal
Alpine очень маленький и выглядит привлекательно, если нужно максимально ужать размер образа.
Но он использует musl вместо glibc, поэтому некоторые приложения ведут себя иначе, некоторые библиотеки работают не так, как ожидается, и отладка может быть болезненной.
Отлично подходит для простых статических бинарников, которые почти не завязаны на зависимости уровня ОС.
Slim-образы (например,
debian:slim или node:22-slim) больше, чем Alpine, но всё ещё значительно меньше полноразмерных дистрибутивов. Они используют glibc, поэтому большинство инструментов и библиотек просто работают.Это обычно означает меньше сюрпризов в проде, проще отладку и лучшую совместимость с существующей документацией и примерами.
Для большинства веб-приложений, API и инструментов slim — более безопасный выбор по умолчанию. Вы всё равно получаете меньшие образы, быстрые pull’ы и нормальную безопасность, но без борьбы с странными edge-кейсами musl.
Alpine имеет смысл, когда вы:
- доставляете один статический бинарник,
- полностью понимаете свои зависимости,
- готовы разруливать возможные проблемы совместимости, если они появятся.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤13🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Быстрый совет по командам Linux
Скорее всего, вы не знали, но команда
👉 DevOps Portal
Скорее всего, вы не знали, но команда
find позволяет быстро найти все исполняемые файлы в каталоге:find . -type f -executable
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍10💊2
Одна простая привычка, которая делает Dockerfile гораздо проще в поддержке: это алфавитная сортировка многострочных списков пакетов.
Звучит мелочью, но это сильно влияет на читаемость и долгосрочную поддержку
Когда вы ставите пакеты внутри многострочного блока
Алфавитный порядок полностью убирает эту проблему: список можно быстро просканировать, моментально найти дубликаты и держать всё единообразным в разных окружениях.
Это также уменьшает «шумные» диффы в код-ревью
Когда пакеты отсортированы, добавление или удаление одного пункта даёт чистое и предсказуемое изменение.
Без сортировки маленькое обновление часто превращается в большой дифф, усложняя ревью больше, чем нужно.
Этот приём помогает и при росте команды.
Когда Dockerfile трогают несколько человек, никто не будет по-разному переставлять пакеты или использовать несогласованное форматирование.
Структура остаётся стабильной, и поддержка со временем становится проще.
Мелкое улучшение, но на сотнях билдов оно экономит массу нервов
👉 DevOps Portal
Звучит мелочью, но это сильно влияет на читаемость и долгосрочную поддержку
Когда вы ставите пакеты внутри многострочного блока
apt-get install или apk add, легко случайно добавить дубликаты или пропустить что-то, затерявшееся в середине списка.Алфавитный порядок полностью убирает эту проблему: список можно быстро просканировать, моментально найти дубликаты и держать всё единообразным в разных окружениях.
Это также уменьшает «шумные» диффы в код-ревью
Когда пакеты отсортированы, добавление или удаление одного пункта даёт чистое и предсказуемое изменение.
Без сортировки маленькое обновление часто превращается в большой дифф, усложняя ревью больше, чем нужно.
Этот приём помогает и при росте команды.
Когда Dockerfile трогают несколько человек, никто не будет по-разному переставлять пакеты или использовать несогласованное форматирование.
Структура остаётся стабильной, и поддержка со временем становится проще.
Мелкое улучшение, но на сотнях билдов оно экономит массу нервов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤5
NGINX Gateway Fabric - это опенсорс проект, который реализует Gateway API, используя NGINX в качестве data plane.
Цель проекта: реализовать базовые возможности Gateway API.
GitHub: nginx-gateway-fabric
👉 DevOps Portal
Цель проекта: реализовать базовые возможности Gateway API.
GitHub: nginx-gateway-fabric
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💊3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Интересный симулятор DDoS-атак, чтобы понять, как работают такие атаки и почему защита критически важна.
http://devops-daily.com/games/ddos-simulator
👉 DevOps Portal
http://devops-daily.com/games/ddos-simulator
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍6
OpenTelemetry — это опенсорс стандарт для сбора трассировок, метрик и логов в современных приложениях
Вместо того чтобы каждый язык, фреймворк или библиотека предоставляли собственный способ генерации телеметрии, OpenTelemetry предлагает единый и консистентный подход.
С его API и SDK вы один раз инструментируете свой код и отправляете данные в любой backend по вашему выбору — Grafana, Datadog, New Relic, Prometheus или любой другой. Это означает, что вы не привязаны к какому-то одному вендору и не зависите от конкретного агента.
Он также унифицирует телеметрию между сервисами. Если у вас распределённая система с несколькими микросервисами на разных языках, OpenTelemetry помогает связать их поведение в единый trace, чтобы вы могли понять, откуда берутся задержки или сбои.
Цель проста: сделать наблюдаемость проще, переносимой и последовательной, чтобы командытратили меньше времени на «склейку» инфраструктуры и больше - на понимание своих систем.
👉 DevOps Portal
Вместо того чтобы каждый язык, фреймворк или библиотека предоставляли собственный способ генерации телеметрии, OpenTelemetry предлагает единый и консистентный подход.
С его API и SDK вы один раз инструментируете свой код и отправляете данные в любой backend по вашему выбору — Grafana, Datadog, New Relic, Prometheus или любой другой. Это означает, что вы не привязаны к какому-то одному вендору и не зависите от конкретного агента.
Он также унифицирует телеметрию между сервисами. Если у вас распределённая система с несколькими микросервисами на разных языках, OpenTelemetry помогает связать их поведение в единый trace, чтобы вы могли понять, откуда берутся задержки или сбои.
Цель проста: сделать наблюдаемость проще, переносимой и последовательной, чтобы командытратили меньше времени на «склейку» инфраструктуры и больше - на понимание своих систем.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3😁1
Не нравится бесконечно длинный вывод в команде
top?Используйте опцию
-i, чтобы скрыть неактивные процессы и видеть только активные:$ top -i
Please open Telegram to view this post
VIEW IN TELEGRAM
❤29🔥5👍3🤝2