Этот туториал показывает, как добавить observability в EKS-кластер: перейти на паттерн App of Apps в ArgoCD и развернуть kube-prometheus-stack с корректно настроенным EBS CSI driver и конфигурацией kubelet cAdvisor
Читайте тут
👉 DevOps Portal
Читайте тут
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Helm _helpers.tpl file – что это такое?
Если вы работаете с Helm чартами, то наверняка видели файл
Многие просто игнорируют его, не понимая, зачем он нужен при деплое чарта.
В этом гайде разобрали:
- что такое
- что такое named templates / partial templates;
- практический пример использования;
- в каких случаях его лучше не использовать.
Читайте здесь: https://devopscube.com/_helpers-tpl-file-in-helm-charts/
👉 DevOps Portal
Если вы работаете с Helm чартами, то наверняка видели файл
_helpers.tpl внутри директории /templates.Многие просто игнорируют его, не понимая, зачем он нужен при деплое чарта.
В этом гайде разобрали:
- что такое
_helpers.tpl и как он работает;- что такое named templates / partial templates;
- практический пример использования;
- в каких случаях его лучше не использовать.
Читайте здесь: https://devopscube.com/_helpers-tpl-file-in-helm-charts/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2
Чеклист готовности Kubernetes к продакшену для команд, которые подготавливают workloads к запуску в production.
В него входят: интерактивный чеклист, подробные пояснения к каждому пункту проверки и PDF-воркшит для скачивания.
https://learnkube.com/production-best-practices
👉 DevOps Portal
В него входят: интерактивный чеклист, подробные пояснения к каждому пункту проверки и PDF-воркшит для скачивания.
https://learnkube.com/production-best-practices
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4
Развёртывание Kubernetes-кластера с помощью kubeadm
Этот туториал от Márk Sági-Kazár не просто пошагово объясняет процесс, но и даёт возможность выполнить каждую команду в изолированной песочнице, чтобы убедиться в её корректности.
Изучай Kubernetes на практике:
https://labs.iximiuz.com/tutorials/provision-k8s-kubeadm-900d1e53
👉 DevOps Portal
Этот туториал от Márk Sági-Kazár не просто пошагово объясняет процесс, но и даёт возможность выполнить каждую команду в изолированной песочнице, чтобы убедиться в её корректности.
Изучай Kubernetes на практике:
https://labs.iximiuz.com/tutorials/provision-k8s-kubeadm-900d1e53
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
This media is not supported in your browser
VIEW IN TELEGRAM
Новая серия практических челленджей от Kaloyan Preslavski, полностью сфокусированная на том, как работает планирование подов в Kubernetes
Приятного хаккинга!🤝
👉 DevOps Portal
- Kubernetes Pod Scheduling: Requests ресурсов
https://labs.iximiuz.com/challenges/resource-requests-scheduling-e607f0d4
- Kubernetes Pod Scheduling: QoS-классы (Quality of Service Classes)
https://labs.iximiuz.com/challenges/qos-classes-ed21d34c
- Kubernetes Pod Scheduling: Priority и Preemption
https://labs.iximiuz.com/challenges/priority-preemption-9c62482f
- Kubernetes Pod Scheduling: LimitRange и ResourceQuota
https://labs.iximiuz.com/challenges/limitrange-resourcequota-7d992c42
- Kubernetes Pod Scheduling: Pod Affinity и Anti-Affinity
https://labs.iximiuz.com/challenges/pod-scheduling-affinity-8733a9e2
- Kubernetes Pod Scheduling: nodeSelector и Node Affinity
https://labs.iximiuz.com/challenges/nodeselector-node-affinity-e80db96a
- Kubernetes Pod Scheduling: Topology Spread Constraints
https://labs.iximiuz.com/challenges/topology-spread-constraints-a806af86
- Kubernetes Pod Scheduling: Taints, Tolerations и Node Affinity — почему иногда нужны сразу оба механизма
https://labs.iximiuz.com/challenges/taints-tolerations-node-affinity-3cd4d1de
- Kubernetes Pod Scaling: Horizontal Pod Autoscaler (HPA)
https://labs.iximiuz.com/challenges/hpa-scaling-5f978f78
Приятного хаккинга!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Этот инструмент предоставляет доступ к операциям Kubernetes-кластера через Model Context Protocol, позволяя AI-агентам и инструментам безопасно читать состояние кластера и выполнять контролируемые действия, такие как команды kubectl
https://github.com/containers/kubernetes-mcp-server
👉 DevOps Portal
https://github.com/containers/kubernetes-mcp-server
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Kubernetes начинался как слой планировщика поверх набора однохостовых Docker-демонов. Это значит, что долгое время Kubernetes-поды были всего лишь "полусклеенными" группами Docker-контейнеров.
Со временем появился Container Runtime Interface (CRI), который дал возможность подменять и настраивать container runtime’ы. Большинство кластеров перешло с тяжеловесного Docker на более специализированный containerd в качестве «высокоуровневого» runtime’а, при этом низкоуровневый OCI runtime (runc) остался без изменений.
Однако потребность в более изолированных подах продолжала расти, и вслед за этим появились "альтернативные" реализации – альтернативные по отношению к Docker-style контейнерам. Самые заметные из них – gVisor и Kata Containers.
gVisor запускает контейнеры поверх урезанного user-land kernel, написанного на Go, а Kata Containers оборачивает обычные Linux-контейнеры в microVM’ы для дополнительной изоляции.
Естественно, возникла необходимость указывать container runtime на уровне пода. Так и появился ресурс RuntimeClass.
С помощью RuntimeClass можно сообщить Kubernetes, какие container runtime’ы поддерживают ноды кластера. Это позволяет кластеру запускать как традиционные поды на базе Linux-контейнеров, так и более изолированные поды на gVisor или Kata Containers.
Узнайте, как регистрировать новые RuntimeClass’ы и запускать поды с произвольными именами runtime class, в практическом туториале от Márk Sági-Kazár: https://labs.iximiuz.com/tutorials/kubernetes-runtime-class-61506808
👉 DevOps Portal
Со временем появился Container Runtime Interface (CRI), который дал возможность подменять и настраивать container runtime’ы. Большинство кластеров перешло с тяжеловесного Docker на более специализированный containerd в качестве «высокоуровневого» runtime’а, при этом низкоуровневый OCI runtime (runc) остался без изменений.
Однако потребность в более изолированных подах продолжала расти, и вслед за этим появились "альтернативные" реализации – альтернативные по отношению к Docker-style контейнерам. Самые заметные из них – gVisor и Kata Containers.
gVisor запускает контейнеры поверх урезанного user-land kernel, написанного на Go, а Kata Containers оборачивает обычные Linux-контейнеры в microVM’ы для дополнительной изоляции.
Естественно, возникла необходимость указывать container runtime на уровне пода. Так и появился ресурс RuntimeClass.
С помощью RuntimeClass можно сообщить Kubernetes, какие container runtime’ы поддерживают ноды кластера. Это позволяет кластеру запускать как традиционные поды на базе Linux-контейнеров, так и более изолированные поды на gVisor или Kata Containers.
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: nginx-kata-qemu
spec:
runtimeClassName: kata-qemu
containers:
- name: nginx
image: nginx:alpine
EOF
Узнайте, как регистрировать новые RuntimeClass’ы и запускать поды с произвольными именами runtime class, в практическом туториале от Márk Sági-Kazár: https://labs.iximiuz.com/tutorials/kubernetes-runtime-class-61506808
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4
Новая фича Kubernetes 1.36: Image Volumes
Контейнерные образы уже давно используют не только для упаковки приложений, но и для хранения произвольных артефактов: статических ассетов, весов моделей, конфигов и т.д. Во многом потому, что контейнерные registry есть практически везде, а такой «хак» сильно упрощает доставку крупных наборов данных.
Но чтобы использовать такой image-артефакт, раньше приходилось сначала pull’ить образ, а затем распаковывать его содержимое в директорию, доступную приложению. В Kubernetes это обычно означало дополнительный init container с набором кастомных скриптов.
К счастью, в Kubernetes v1.36 появился более чистый подход — image volumes. Теперь можно напрямую монтировать файловую систему OCI-образа в Pod как read-only volume.
Небольшой hands-on челлендж, чтобы попробовать это в деле: https://labs.iximiuz.com/challenges/kubernetes-pod-image-volume
👉 DevOps Portal
Контейнерные образы уже давно используют не только для упаковки приложений, но и для хранения произвольных артефактов: статических ассетов, весов моделей, конфигов и т.д. Во многом потому, что контейнерные registry есть практически везде, а такой «хак» сильно упрощает доставку крупных наборов данных.
Но чтобы использовать такой image-артефакт, раньше приходилось сначала pull’ить образ, а затем распаковывать его содержимое в директорию, доступную приложению. В Kubernetes это обычно означало дополнительный init container с набором кастомных скриптов.
К счастью, в Kubernetes v1.36 появился более чистый подход — image volumes. Теперь можно напрямую монтировать файловую систему OCI-образа в Pod как read-only volume.
Небольшой hands-on челлендж, чтобы попробовать это в деле: https://labs.iximiuz.com/challenges/kubernetes-pod-image-volume
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍2
This media is not supported in your browser
VIEW IN TELEGRAM
DevOps-инструмент недели: Kafbat UI
Запускать Kafka в проде – это здорово, ровно до того момента, когда нужно залезть внутрь и посмотреть, что там происходит
Kafbat UI — бесплатный open-source веб-интерфейс для мониторинга и управления кластерами Apache Kafka.
Он даёт единое окно управления всеми вашими Kafka-кластерами.
Брокеры, топики, партиции, consumer groups, schema registry, Kafka Connect – всё собрано в одном дашборде.
Можно просматривать сообщения в форматах JSON, Avro и Protobuf, фильтровать live-потоки через CEL-выражения, смотреть consumer lag по каждой партиции, а также создавать и перенастраивать топики без необходимости лезть в CLI.
GitHub-репозиторий:
Kafbat UI GitHub Repository
👉 DevOps Portal
Запускать Kafka в проде – это здорово, ровно до того момента, когда нужно залезть внутрь и посмотреть, что там происходит
Kafbat UI — бесплатный open-source веб-интерфейс для мониторинга и управления кластерами Apache Kafka.
Он даёт единое окно управления всеми вашими Kafka-кластерами.
Брокеры, топики, партиции, consumer groups, schema registry, Kafka Connect – всё собрано в одном дашборде.
Можно просматривать сообщения в форматах JSON, Avro и Protobuf, фильтровать live-потоки через CEL-выражения, смотреть consumer lag по каждой партиции, а также создавать и перенастраивать топики без необходимости лезть в CLI.
GitHub-репозиторий:
Kafbat UI GitHub Repository
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🤔1
Эта фича Kubernetes меняет то, как контейнеры работают с root-привилегиями
User Namespaces — это механизм безопасности, который сопоставляет ID пользователей и групп внутри контейнера с другим набором ID на хосте. По сути, это rootless-изоляция.
Ключевая идея такая.
Процесс, который запускается от root внутри контейнера, на хосте выполняется от имени непривилегированного пользователя, например с UID 100000.
Без User Namespaces контейнер, запущенный от root, использует ту же root-идентичность, что и хост.
То есть если злоумышленник сможет выбраться из контейнера, он получит полные привилегии на хосте.
Вот практический гайд, в котором разобрали следующее:
- что такое User Namespaces;
- как ядро выполняет маппинг root-пользователя на non-root пользователя;
- что меняется при установке hostUsers: false;
- как ограничивать диапазоны UID на хосте с помощью файла /etc/subuid;
- практический деплоймент для понимания User Namespace;
- ограничения User Namespace.
Читать здесь: https://newsletter.devopscube.com/p/kubernetes-user-namespaces
👉 DevOps Portal
User Namespaces — это механизм безопасности, который сопоставляет ID пользователей и групп внутри контейнера с другим набором ID на хосте. По сути, это rootless-изоляция.
Ключевая идея такая.
Процесс, который запускается от root внутри контейнера, на хосте выполняется от имени непривилегированного пользователя, например с UID 100000.
Без User Namespaces контейнер, запущенный от root, использует ту же root-идентичность, что и хост.
То есть если злоумышленник сможет выбраться из контейнера, он получит полные привилегии на хосте.
Вот практический гайд, в котором разобрали следующее:
- что такое User Namespaces;
- как ядро выполняет маппинг root-пользователя на non-root пользователя;
- что меняется при установке hostUsers: false;
- как ограничивать диапазоны UID на хосте с помощью файла /etc/subuid;
- практический деплоймент для понимания User Namespace;
- ограничения User Namespace.
Читать здесь: https://newsletter.devopscube.com/p/kubernetes-user-namespaces
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥4
Это руководство показывает, как построить локальную data platform с использованием KinD для Kubernetes и Terraform для провижининга инфраструктуры, а также Argo CD в качестве GitOps-движка для деплоя и управления приложениями.
➤ Ссылка на руководство
👉 DevOps Portal
➤ Ссылка на руководство
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤1
Наглядное руководство по основам Systemd
Статья подробно и наглядно раскрывает внутреннее устройство systemd, делая акцент на ключевых компонентах D-Bus и cgroups, и объясняет, как устроена их архитектура и взаимодействие на примерах и схемах
https://medium.com/@sebastiancarlos/systemds-nuts-and-bolts-0ae7995e45d3
👉 DevOps Portal
Статья подробно и наглядно раскрывает внутреннее устройство systemd, делая акцент на ключевых компонентах D-Bus и cgroups, и объясняет, как устроена их архитектура и взаимодействие на примерах и схемах
https://medium.com/@sebastiancarlos/systemds-nuts-and-bolts-0ae7995e45d3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3
GitHub Actions + AWS без долгоживущих секретов?
Современные DevOps-пайплайны не должны зависеть от захардкоженных AWS access keys.
Потому что утекшие CI/CD-учётные данные всё ещё остаются одним из самых серьёзных рисков для безопасности в облаке.
Именно здесь помогает OIDC.
Вместо того чтобы хранить AWS-секреты в GitHub, ваш workflow во время выполнения получает краткоживущие временные credentials напрямую от AWS.
- Никаких статических ключей.
- Никакой головной боли с ротацией секретов.
- Меньший blast radius, если что-то пойдёт не так.
В этом блоге разберем интеграцию GitHub Actions OIDC с AWS на пошаговом примере, который помогает безопасно настроить доступ к AWS cloud.
К концу этого гайда вы поймёте:
- Почему OIDC — это безопасный способ подключить GitHub Actions к AWS
- Как интеграция GitHub OIDC работает с AWS
- Как пошагово настроить OIDC через IAM roles
- Как протестировать настройку через AWS CLI и задеплоить в EKS с помощью GitHub Actions workflows
Подробный блог: https://devopscube.com/github-actions-oidc-aws/
👉 DevOps Portal
Современные DevOps-пайплайны не должны зависеть от захардкоженных AWS access keys.
Потому что утекшие CI/CD-учётные данные всё ещё остаются одним из самых серьёзных рисков для безопасности в облаке.
Именно здесь помогает OIDC.
Вместо того чтобы хранить AWS-секреты в GitHub, ваш workflow во время выполнения получает краткоживущие временные credentials напрямую от AWS.
- Никаких статических ключей.
- Никакой головной боли с ротацией секретов.
- Меньший blast radius, если что-то пойдёт не так.
В этом блоге разберем интеграцию GitHub Actions OIDC с AWS на пошаговом примере, который помогает безопасно настроить доступ к AWS cloud.
К концу этого гайда вы поймёте:
- Почему OIDC — это безопасный способ подключить GitHub Actions к AWS
- Как интеграция GitHub OIDC работает с AWS
- Как пошагово настроить OIDC через IAM roles
- Как протестировать настройку через AWS CLI и задеплоить в EKS с помощью GitHub Actions workflows
Подробный блог: https://devopscube.com/github-actions-oidc-aws/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3
Если вы изолируете своего coding-агента в sandbox-окружении, как дать ему возможность тестировать изменения в браузере?
Как и во многих Dev & Ops-задачах, ответ – пробросить порт
В этом воркфлоу используют Claude Code, запущенный в удалённой VM, вместе с локальным браузером: https://labs.iximiuz.com/docs/playground-recipes/coding-agent-with-browser-access
👉 DevOps Portal
Как и во многих Dev & Ops-задачах, ответ – пробросить порт
В этом воркфлоу используют Claude Code, запущенный в удалённой VM, вместе с локальным браузером: https://labs.iximiuz.com/docs/playground-recipes/coding-agent-with-browser-access
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
RTPENGINE как медиакомбайн - открытый онлайн-вебинар
Сегодня - 26 мая в 11:00 МСК
Подключайтесь к бесплатному вебинару по ссылке
Сегодня - 26 мая в 11:00 МСК
Иногда, DevOps должны знать, как медиапотоки живут в проде.
Разберём RTPengine + Kamailio с практической точки зрения: архитектура, обработка пакетов в ядре Linux, управление записью звонков через Kamailio, а также как мониторить и автоматизировать — метрики, логирование, интеграция в CI/CD и когда сниферы действительно нужны.
Подключайтесь к бесплатному вебинару по ссылке
❤1
Большинство DevOps-инженеров и SRE до сих пор плохо понимают, что на самом деле означают метрики P50, P95 и P99.
Объясню на примере пиццы.
Ты заказываешь пиццу в Dominos. Они обещают доставку за 30 минут. В день у них 5000 заказов.
P50 означает, что 2500 пицц приехали за 30 минут или быстрее. То есть половина клиентов получила сервис, который обещали. Вторая половина ждала дольше. Это и есть средний пользовательский опыт.
P95 означает, что 4750 заказов доставили за 45 минут или быстрее. Но для 250 клиентов всё было намного хуже. Пицца уже остыла, никто даже не отзвонился.
P99 означает, что 4950 заказов приехали максимум за 60 минут. Но оставшиеся 50 человек получили холодную пиццу, испорченный вечер и повод уйти к Pizza Hut.
Вот в чём проблема средних значений.
У тебя все графики зелёные. Average выглядит отлично. Но 50 реальных пользователей сегодня получили плохой опыт. И завтра получат. И послезавтра тоже.
В проде происходит ровно то же самое.
Среднее время ответа вашего API показывает 80 мс. Выглядит отлично. Но P99 для небольшой группы пользователей держится на уровне 3 секунд. Они не жалуются громко. Они просто тихо уходят.
При 1 миллионе запросов в день P99 означает, что 10 000 запросов получают "холодную пиццу". Каждый день. Тихо.
Именно поэтому опытные инженеры никогда не доверяют одним только средним значениям. Сначала они смотрят на P95 и P99.
👉 DevOps Portal
Объясню на примере пиццы.
Ты заказываешь пиццу в Dominos. Они обещают доставку за 30 минут. В день у них 5000 заказов.
P50 означает, что 2500 пицц приехали за 30 минут или быстрее. То есть половина клиентов получила сервис, который обещали. Вторая половина ждала дольше. Это и есть средний пользовательский опыт.
P95 означает, что 4750 заказов доставили за 45 минут или быстрее. Но для 250 клиентов всё было намного хуже. Пицца уже остыла, никто даже не отзвонился.
P99 означает, что 4950 заказов приехали максимум за 60 минут. Но оставшиеся 50 человек получили холодную пиццу, испорченный вечер и повод уйти к Pizza Hut.
Вот в чём проблема средних значений.
У тебя все графики зелёные. Average выглядит отлично. Но 50 реальных пользователей сегодня получили плохой опыт. И завтра получат. И послезавтра тоже.
В проде происходит ровно то же самое.
Среднее время ответа вашего API показывает 80 мс. Выглядит отлично. Но P99 для небольшой группы пользователей держится на уровне 3 секунд. Они не жалуются громко. Они просто тихо уходят.
При 1 миллионе запросов в день P99 означает, что 10 000 запросов получают "холодную пиццу". Каждый день. Тихо.
Именно поэтому опытные инженеры никогда не доверяют одним только средним значениям. Сначала они смотрят на P95 и P99.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤4🔥4🤔1
Гайд по подготовке к экзамену CKA + конспекты
По запросам сообщества мы добавили раздел с учебными заметками и иллюстрациями.
Внутри – ключевые темы: Gateway API, Network Policies, администрирование кластера и многое другое.
GitHub-репозиторий: https://github.com/techiescamp/cka-certification-guide
👉 DevOps Portal
По запросам сообщества мы добавили раздел с учебными заметками и иллюстрациями.
Внутри – ключевые темы: Gateway API, Network Policies, администрирование кластера и многое другое.
GitHub-репозиторий: https://github.com/techiescamp/cka-certification-guide
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🤝3🏆2
This media is not supported in your browser
VIEW IN TELEGRAM
Ubuntu анонсировали Workshop – решение для запуска изолированных сред разработки в Ubuntu одной командой.
Тратьте меньше времени на настройку окружения: всего несколько строк YAML, и у вас готово воспроизводимое окружение, которое можно использовать на разных машинах.
Узнайте, как это работает: Introducing Workshop – Launch sandboxed development environments on Ubuntu with a single command
👉 DevOps Portal
Тратьте меньше времени на настройку окружения: всего несколько строк YAML, и у вас готово воспроизводимое окружение, которое можно использовать на разных машинах.
Узнайте, как это работает: Introducing Workshop – Launch sandboxed development environments on Ubuntu with a single command
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥6
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤4
Docker 101: Жизненный цикл контейнера
Docker — это не только
https://labs.iximiuz.com/challenges/docker-101-container-lifecycle
👉 DevOps Portal
Docker — это не только
docker run и последующий Ctrl+C. Контейнеры можно создавать, запускать, ставить на паузу, снимать с паузы, останавливать, перезапускать, принудительно завершать и удалять. Понимание этих операций – ключ к эффективной работе с контейнерамиhttps://labs.iximiuz.com/challenges/docker-101-container-lifecycle
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5