Как HTTP(S)-порты пробрасываются из VM, у которых есть только приватные IP-адреса
- У каждого bare-metal хоста есть только один публичный IP-адрес
- DNS-запись
- Каждый раз, когда наружу пробрасывается порт VM, генерируется новый случайный поддомен
- Этот рандомный поддомен не существует за пределами конкретного хоста, он известен только соответствующему bare-metal серверу
- Все запросы к этому поддомену приходят на единственный публичный IP хоста, где слушает ingress-прокси (Envoy)
-Интерфейс VM виден только внутри её «обёртки» — Docker-контейнера (для дополнительной изоляции), поэтому Envoy не может достучаться до VM напрямую
- Вместо этого Envoy прокидывает запросы к поддомену в локальный UNIX-сокет, смонтированный в контейнер-обёртку VM
- Этот UNIX-сокет открыт специальным процессом-forwarder’ом (крошечный Go-сервис), который работает внутри контейнера-обёртки
- Forwarder делает
Профит! Десятки полностью изолированных VM на одном bare-metal хосте, и у каждой свой публичный URL
👉 DevOps Portal
- У каждого bare-metal хоста есть только один публичный IP-адрес
- DNS-запись
*.node-xyz.iximiuz.com и wildcard-сертификат Let’s Encrypt указывают на этот IP- Каждый раз, когда наружу пробрасывается порт VM, генерируется новый случайный поддомен
- Этот рандомный поддомен не существует за пределами конкретного хоста, он известен только соответствующему bare-metal серверу
- Все запросы к этому поддомену приходят на единственный публичный IP хоста, где слушает ingress-прокси (Envoy)
-Интерфейс VM виден только внутри её «обёртки» — Docker-контейнера (для дополнительной изоляции), поэтому Envoy не может достучаться до VM напрямую
- Вместо этого Envoy прокидывает запросы к поддомену в локальный UNIX-сокет, смонтированный в контейнер-обёртку VM
- Этот UNIX-сокет открыт специальным процессом-forwarder’ом (крошечный Go-сервис), который работает внутри контейнера-обёртки
- Forwarder делает
io.Copy(UNIX socket, VM's private IP:port)Профит! Десятки полностью изолированных VM на одном bare-metal хосте, и у каждой свой публичный URL
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍4
Если вы хотите избавиться от сотен уязвимостей (CVE) в своих контейнерных образах, первым шагом будет понять, откуда они берутся
Типичные источники:
- «Толстый» базовый образ
- Забытые инструменты сборки
- Устаревшие зависимости
Простое решение? Многоэтапная сборка с более свежим и лёгким базовым образом.
Пример анализа базового образа: Более глубокий взгляд на Docker-образы Node.js: «Помогите, в моём Node-образе есть Python!»
👉 DevOps Portal
Типичные источники:
- «Толстый» базовый образ
- Забытые инструменты сборки
- Устаревшие зависимости
Простое решение? Многоэтапная сборка с более свежим и лёгким базовым образом.
Пример анализа базового образа: Более глубокий взгляд на Docker-образы Node.js: «Помогите, в моём Node-образе есть Python!»
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Найдите недавно изменённые файлы за последние 5 минут:
find . -type f -mmin -5
Полезно, когда вы устраняете неполадки и хотите знать, какие файлы были недавно изменены
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤7
Совет по Docker
Вот как проанализировать, что раздувает образ
Как вы знаете, любой Docker-образ состоит из слоёв.
Каждый слой добавляется отдельной строкой в вашем Dockerfile.
И по этим слоям можно понять, почему образ получился большим, медленно собирается или плохо кэшируется.
Вот как можно инспектировать слои и увидеть, что изменилось в каждом слое.
Можно использовать утилиту dive.
Она даёт визуальное представление:
✅ Каждый созданный слой
✅ Какие файлы были добавлены или изменены
✅ Сколько места занимает каждый слой
Когда вы начинаете анализировать слои образа, вы сможете выявить:
- Какая команда добавляет лишний вес
- Как оптимизировать Dockerfile для более маленьких и эффективных сборок
Утилита также показывает оценку эффективности образа, которая отражает, сколько данных дублируется или тратится впустую между слоями
👉 DevOps Portal
Вот как проанализировать, что раздувает образ
Как вы знаете, любой Docker-образ состоит из слоёв.
Каждый слой добавляется отдельной строкой в вашем Dockerfile.
И по этим слоям можно понять, почему образ получился большим, медленно собирается или плохо кэшируется.
Вот как можно инспектировать слои и увидеть, что изменилось в каждом слое.
Можно использовать утилиту dive.
Она даёт визуальное представление:
Когда вы начинаете анализировать слои образа, вы сможете выявить:
- Какая команда добавляет лишний вес
- Как оптимизировать Dockerfile для более маленьких и эффективных сборок
Утилита также показывает оценку эффективности образа, которая отражает, сколько данных дублируется или тратится впустую между слоями
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤9
Многие не до конца понимают, чем отличаются конвейеры CI/CD в DevOps и GitOps
В DevOps-конвейере CI/CD весь процесс выполняется единым потоком - от коммита кода, тестов, сборки, создания образа до прямого деплоя в кластер Kubernetes.
Такой подход быстрый и централизованный, но жёстко связывает деплой с процессом CI, оставляя мало возможностей для разделения или дополнительного контроля.
В GitOps-конвейере CI отвечает за тесты и сборку, а деплой выполняется через Git-коммиты: контроллер синхронизирует изменения из репозитория с кластером.
Вот инфографика, чтобы помочь вам лучше разобраться👍
👉 DevOps Portal
В DevOps-конвейере CI/CD весь процесс выполняется единым потоком - от коммита кода, тестов, сборки, создания образа до прямого деплоя в кластер Kubernetes.
Такой подход быстрый и централизованный, но жёстко связывает деплой с процессом CI, оставляя мало возможностей для разделения или дополнительного контроля.
В GitOps-конвейере CI отвечает за тесты и сборку, а деплой выполняется через Git-коммиты: контроллер синхронизирует изменения из репозитория с кластером.
Вот инфографика, чтобы помочь вам лучше разобраться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤7🔥2
Вот интересный факт о Linux
Вы можете запустить полноценное отдельное ядро Linux внутри одного процесса на своей машине. Без root-доступа и без какого-либо ПО для виртуализации.
Это User-Mode Linux (UML) - специальный порт ядра, который работает как обычное пользовательское приложение.
Вместо взаимодействия с аппаратным обеспечением оно общается с вашей хостовой ОС. Файл используется как жёсткий диск, а ваш терминал становится его консолью. Вы можете загрузить систему, войти в неё и запускать программы, как в виртуальной машине, но всего одной командой.
Это мощный инструмент для разработки и отладки ядра, а также для создания изолированных тестовых окружений за считанные секунды.
Хотите разобраться глубже? Ознакомьтесь с полной статьей: тык
👉 DevOps Portal
Вы можете запустить полноценное отдельное ядро Linux внутри одного процесса на своей машине. Без root-доступа и без какого-либо ПО для виртуализации.
Это User-Mode Linux (UML) - специальный порт ядра, который работает как обычное пользовательское приложение.
Вместо взаимодействия с аппаратным обеспечением оно общается с вашей хостовой ОС. Файл используется как жёсткий диск, а ваш терминал становится его консолью. Вы можете загрузить систему, войти в неё и запускать программы, как в виртуальной машине, но всего одной командой.
Это мощный инструмент для разработки и отладки ядра, а также для создания изолированных тестовых окружений за считанные секунды.
Хотите разобраться глубже? Ознакомьтесь с полной статьей: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4
Actions Runner Controller (ARC) — это контроллер Kubernetes для self-hosted раннеров GitHub Actions.
С помощью ARC вы можете:
🔹 Развертывать self-hosted раннеры в кластерах Kubernetes простым набором команд
🔹 Автоматически масштабировать раннеры по требованию
GitHub: actions-runner-controller
👉 DevOps Portal
С помощью ARC вы можете:
GitHub: actions-runner-controller
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5
Forwarded from Мир Linux
Принёс швейцарский нож для сетевиков: Networking Toolbox
Это офлайн-набор из 100+ сетевых инструментов в одном приложении. Конвертация данных, диагностика серверов, сетевые вычисления, проверка конфигов, всё под рукой и без интернета
Никаких сторонних зависимостей и опенсорс. Забираем здесь
@linuxos_tg
Это офлайн-набор из 100+ сетевых инструментов в одном приложении. Конвертация данных, диагностика серверов, сетевые вычисления, проверка конфигов, всё под рукой и без интернета
Никаких сторонних зависимостей и опенсорс. Забираем здесь
@linuxos_tg
❤9
GitLab Architecture: A Complete Guide
В этом вводном гайде вы узнаете:
- Основные компоненты GitLab
- Хранилище GitLab
- Высокая доступность и масштабируемость
- Аутентификация и авторизация
- Мониторинг GitLab с помощью Prometheus и Grafana
Подробное руководство: https://devopscube.com/gitlab-architecture/
👉 DevOps Portal
В этом вводном гайде вы узнаете:
- Основные компоненты GitLab
- Хранилище GitLab
- Высокая доступность и масштабируемость
- Аутентификация и авторизация
- Мониторинг GitLab с помощью Prometheus и Grafana
Подробное руководство: https://devopscube.com/gitlab-architecture/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3🔥3
Как (и зачем) использовать containerd? 🧐
containerd — вероятно, самый широко используемый контейнерный рантайм:
🔹 Docker использует его под капотом для запуска контейнеров и хранения образов.
🔹 Kubernetes использует его как CRI-рантайм для запуска Pod'ов.
Практикуйтесь в работе с containerd: https://labs.iximiuz.com/courses/containerd-cli
👉 DevOps Portal
containerd — вероятно, самый широко используемый контейнерный рантайм:
Практикуйтесь в работе с containerd: https://labs.iximiuz.com/courses/containerd-cli
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
Это CSI-драйвер для хранилищ S3 (или совместимых с S3)
Этот инструмент может динамически создавать (выделять) бакеты и монтировать их в любой контейнер через FUSE-маунт
GitHub: k8s-csi-s3
👉 DevOps Portal
Этот инструмент может динамически создавать (выделять) бакеты и монтировать их в любой контейнер через FUSE-маунт
GitHub: k8s-csi-s3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Большинство инженеров DevOps сосредоточены на автоматизации
Но, DevOps сегодня - это гораздо больше, чем просто CI/CD-пайплайны.
Это также про понимание того, как на самом деле работают системы и как проектировать их так, чтобы они выдерживали сбои.
В этом контексте есть одна концепция, которую должен знать каждый инженер DevOps: Write-Ahead Log (WAL), или «журнал предварительной записи».
Вот короткий пост, где объясняют, как работает WAL, с простыми примерами из реальной практики. Прочитать можно здесь: https://newsletter.devopscube.com/p/write-ahead-log-wal
Если вы хотите увидеть, как этот подход используется в масштабных системах, отличным примером будет платформа данных Netflix.
Они построили свою отказоустойчивую data-платформу вокруг принципа WAL, чтобы обеспечить сохранность данных даже при сбоях
👉 DevOps Portal
Но, DevOps сегодня - это гораздо больше, чем просто CI/CD-пайплайны.
Это также про понимание того, как на самом деле работают системы и как проектировать их так, чтобы они выдерживали сбои.
В этом контексте есть одна концепция, которую должен знать каждый инженер DevOps: Write-Ahead Log (WAL), или «журнал предварительной записи».
Вот короткий пост, где объясняют, как работает WAL, с простыми примерами из реальной практики. Прочитать можно здесь: https://newsletter.devopscube.com/p/write-ahead-log-wal
Если вы хотите увидеть, как этот подход используется в масштабных системах, отличным примером будет платформа данных Netflix.
Они построили свою отказоустойчивую data-платформу вокруг принципа WAL, чтобы обеспечить сохранность данных даже при сбоях
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍2🌚1
Бесплатный лайфхак для Linux 😎
Многие про это не знают или почти не пользуются.
В Linux можно сделать файл или каталог неудаляемым с помощью команды chattr, установив флаг +i:
Флаг +i запрещает удалять, изменять и переименовывать файл, даже root не сможет этого сделать, пока флаг не снят.
Опция -V включает подробный вывод (verbose), чтобы увидеть, что именно команда делает.
Чтобы вернуть всё обратно:
👉 DevOps Portal
Многие про это не знают или почти не пользуются.
В Linux можно сделать файл или каталог неудаляемым с помощью команды chattr, установив флаг +i:
sudo chattr +i -V CH-13.pdf
Флаг +i запрещает удалять, изменять и переименовывать файл, даже root не сможет этого сделать, пока флаг не снят.
Опция -V включает подробный вывод (verbose), чтобы увидеть, что именно команда делает.
Чтобы вернуть всё обратно:
sudo chattr -i CH-13.pdf
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Dockly
Это интерактивный терминальный интерфейс для управления контейнерами Docker.
Утилита позволяет в режиме реального времени просматривать активные контейнеры, образы и сети, выполнять команды, такие как перезапуск или удаление контейнеров, а также получать доступ к их логам и ресурсам.
Подходит для разработчиков и администраторов, которым нужен быстрый и удобный способ мониторинга и управления Docker-средами.
GitHub: dockly
👉 DevOps Portal
Это интерактивный терминальный интерфейс для управления контейнерами Docker.
Утилита позволяет в режиме реального времени просматривать активные контейнеры, образы и сети, выполнять команды, такие как перезапуск или удаление контейнеров, а также получать доступ к их логам и ресурсам.
Подходит для разработчиков и администраторов, которым нужен быстрый и удобный способ мониторинга и управления Docker-средами.
GitHub: dockly
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍1
Этот репозиторий - настоящая находка для инженеров DevOps и SRE
30+ практических лабораторных работ по Kubernetes, охватывающих всю экосистему DevOps
GitHub: Fast-Kubernetes
👉 DevOps Portal
30+ практических лабораторных работ по Kubernetes, охватывающих всю экосистему DevOps
GitHub: Fast-Kubernetes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤6
Более чистый способ управлять алиасами kubectl
Мы подготовили подробное практическое руководство, чтобы помочь вам начать работу.
До выхода Kubernetes v1.33 приходилось вручную прописывать алиасы в
Это не было нативным и структурированным решением.
Теперь с kuberc вы можете определить все свои алиасы для
Это чисто, просто и даже можно держать под версионным контролем
Подробное руководство: https://devopscube.com/kubectl-aliases/
👉 DevOps Portal
Мы подготовили подробное практическое руководство, чтобы помочь вам начать работу.
До выхода Kubernetes v1.33 приходилось вручную прописывать алиасы в
.bashrc или .zshrc, вперемешку с другими настройками шеллаЭто не было нативным и структурированным решением.
Теперь с kuberc вы можете определить все свои алиасы для
kubectl в отдельном YAML-файле.Это чисто, просто и даже можно держать под версионным контролем
Подробное руководство: https://devopscube.com/kubectl-aliases/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4
Kubernetes 101: назначение Pod'ов на узлы
В статье подробно рассматриваются механизмы назначения Pod'ов на узлы в Kubernetes.
Автор объясняет такие инструменты, как nodeSelector, nodeAffinity и taints/tolerations, которые позволяют контролировать, где именно будут запускаться ваши Pod'ы
👉 Ссылка на статью
👉 DevOps Portal
В статье подробно рассматриваются механизмы назначения Pod'ов на узлы в Kubernetes.
Автор объясняет такие инструменты, как nodeSelector, nodeAffinity и taints/tolerations, которые позволяют контролировать, где именно будут запускаться ваши Pod'ы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Kubernetes Swap
Когда вы деплойте Pod в Kubernetes, каждый нод использует свою физическую оперативную память (RAM) для запуска контейнеров.
Если на ноде заканчивается память, Kubernetes может начать убивать Pods, чтобы сохранить стабильность ноды.
С Kubernetes Swap можно избежать этого, разрешив ноде использовать часть диска как дополнительную виртуальную память (swap).
Вот статья, где подробно объяснили:
- Как работает Kubernetes Swap
- Основные сценарии использования swap
- Классы QoS для Pod и поведение при использовании swap
- Как выделяется swap для Pod'ов
- Практика: тестирование swap на воркер-нодах
- Определение нод с включённым swap с помощью NFD
- Мониторинг swap через метрики
Читайте здесь
👉 DevOps Portal
Когда вы деплойте Pod в Kubernetes, каждый нод использует свою физическую оперативную память (RAM) для запуска контейнеров.
Если на ноде заканчивается память, Kubernetes может начать убивать Pods, чтобы сохранить стабильность ноды.
С Kubernetes Swap можно избежать этого, разрешив ноде использовать часть диска как дополнительную виртуальную память (swap).
Вот статья, где подробно объяснили:
- Как работает Kubernetes Swap
- Основные сценарии использования swap
- Классы QoS для Pod и поведение при использовании swap
- Как выделяется swap для Pod'ов
- Практика: тестирование swap на воркер-нодах
- Определение нод с включённым swap с помощью NFD
- Мониторинг swap через метрики
Читайте здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
Kubernetes Toolkit — это контейнерный образ, который включает в себя основные инструменты: kubectl, Helm, Kustomize, Trivy и Flux.
Он предназначен для использования в CI/CD-пайплайнах и при локальной разработке, обеспечивая валидацию, сканирование безопасности, GitOps-функциональность и другие возможности
Забираем с GitHub
👉 DevOps Portal
Он предназначен для использования в CI/CD-пайплайнах и при локальной разработке, обеспечивая валидацию, сканирование безопасности, GitOps-функциональность и другие возможности
Забираем с GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Твой первый кластер Kubernetes не должен быть кошмаром
Большинство новичков начинают с KubeADM, и бросают уже через неделю.
В чём проблема?
KubeADM создан для продакшн-сред, а не для обучения. Чтобы сохранить мотивацию, тебе нужно сначала получить быстрый успех
https://www.youtube.com/shorts/rQDZgbZwNvs
👉 DevOps Portal
Большинство новичков начинают с KubeADM, и бросают уже через неделю.
В чём проблема?
KubeADM создан для продакшн-сред, а не для обучения. Чтобы сохранить мотивацию, тебе нужно сначала получить быстрый успех
https://www.youtube.com/shorts/rQDZgbZwNvs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3👍3