DevOps Portal | Linux – Telegram
DevOps Portal | Linux
13.5K subscribers
802 photos
94 videos
10 files
809 links
Присоединяйтесь к нашему каналу и погрузитесь в мир DevOps

Связь: @devmangx

РКН: https://clck.ru/3P8kFH
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Совет дня по Linux

Можно использовать команду fc для редактирования команд из истории. Допустим, вам нужно отредактировать команды с номерами 230 по 232 в истории.

fc 230 232


Это откроет выбранные команды в редакторе терминала по умолчанию. Внесите изменения в команды, сохраните файл и выйдите, после этого команда будет выполнена

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍8
DNS resolution в Linux и Kubernetes

Автор делится своими знаниями о том, как устроен DNS resolution в Linux и Kubernetes.

В статье можно найти информацию о:
- Общая теория DNS в Kubernetes
- DNS в Linux: resolv.conf и nssswitch.conf
- Что изменится при использовании, например, Alpine?
- DNS в Kubernetes: kube-dns, настройки и модификации, dnsPolicy

Все это описывается максимально подробно, с примерами, комментариями и ссылками на документацию по теме.

Читайте здесь

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Паттерны проброса портов в Kubernetes

Ты находишься внутри dev-кластера, доступ к сети ограничен, и сервис, который ты только что задеплоил, ведёт себя странно.

Нет ни LoadBalancer, ни настроенного ingress-контроллера, и «просто открыть порт» – не вариант, потому что сетевики либо тормозят, либо отвечают отказом.

Вот здесь тебя и выручает kubectl port-forward.

Вот простая инфографика, чтобы было легче понять.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Быстрый совет по Linux

Используйте less, чтобы просматривать длинный файл с прокруткой, не открывая редактор:

$ less /var/log/syslog


Нажмите q, чтобы выйти

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥61
Environment branching – это модель, при которой для каждого окружения существует отдельная ветка.

Код продвигается по пайплайну за счёт мерджей из одной ветки в следующую, обычно по цепочке dev → qa → staging → prod.

Этот подход даёт командам очень явный контроль над тем, что именно деплоится. Разработчики работают в dev, тестировщики подхватывают изменения в qa, staging используется для стабилизации релизов, а в production попадает только то, что было последовательно промоутировано через все этапы.

Такая модель часто встречается в легаси-системах или в конфигурациях без развитых CI/CD-инструментов.

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

Однако компромиссы здесь существенные. Ветки быстро расходятся, окружения начинают вести себя по-разному, и поддержание синхронизации превращается в отдельную задачу.

Эта модель плохо масштабируется и обычно противоречит современным практикам, которые опираются на единый источник истины.

Environment branching даёт контроль, но ценой консистентности. Для большинства современных команд это анти-паттерн, если только ограничения системы не делают его неизбежным.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥3
Как создать Kubernetes-оператор с нуля

Операторы упрощают рабочие процессы, сокращают объём ручных операций и помогают в управлении инфраструктурой – это ключевые навыки для всех, кто работает в DevOps.

https://thenewstack.io/how-to-build-a-kubernetes-operator-from-scratch/

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2
GoBackup – занятная CLI-утилита для бэкапов баз данных и не только

Всё описывается в YAML-конфиге, после чего можно запускать резервное копирование прямо в системе. Из приятных бонусов – у GoBackup есть простая веб-морда для просмотра и управления бэкапами

- Сайт тут
- Github здесь

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96🔥2
Forwarded from IT Portal
GitHub Actions начнёт взимать плату за self-hosted раннеры

Теперь за привилегию запускать CI на собственной инфраструктуре будут брать $0.002 за минуту

При этом параллельно объявлено существенное снижение цен на cloud-hosted раннеры

@IT_Portal
🤯21💊9👍2
Запутались, когда использовать Kubernetes Operators, а когда Helm? Это для вас.

Хотя на первый взгляд они могут казаться взаимозаменяемыми для деплоя приложений, на самом деле они решают разные задачи

Kubernetes Operator: обеспечивает расширенное управление за счёт автоматизации, учитывающей жизненный цикл, для сложных приложений

Helm: упрощает деплой приложений с помощью готовых шаблонов, называемых chart’ами, и идеально подходит для настройки простых, воспроизводимых окружений

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84
В этом репозитории вы найдёте роадмап для изучения Kubernetes с нуля (от уровня новичка до продвинутого).

Внутри много ссылок на курсы, статьи, материалы по теме

Забираем на GitHub

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥73🤝1
Знаете ли вы?

SSH-сессии не исчезают, когда вы отключаетесь.

Пути:

/var/log/wtmp — история входов

/var/log/btmp — неудачные попытки входа

/var/log/lastlog — последний вход

Что могут увидеть специалисты по цифровой криминалистике:

- успешные логины;

- неудачные brute-force попытки;

- исходные IP-адреса;

- длительность сессий;

-какая учётная запись использовалась.

Вы отключились. Linux сохранил журнал посещений.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2110😁1🤝1
Учимся сетям на практике

Вот пример сложной сетевой топологии, которую можно развернуть в playground от iximiuz Labs, где узлы – это реальные виртуальные машины, соединённые с произвольным количеством сетевых бриджей.

Пора поработать руками:
https://labs.iximiuz.com/playgrounds/flexbox

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥2
Когда-нибудь задумывались, как Kubernetes-сервисы обрабатывают балансировку нагрузки?

Вот как это работает.

По умолчанию компонент kube-proxy в Kubernetes использует iptables для маршрутизации запросов (также поддерживается IPVS).

В iptables есть функция, называемая statistic mode random probability.

Эта функция является частью iptables и используется для фильтрации пакетов и NAT. Она позволяет создавать правила, которые случайным образом матчят определённый процент пакетов.

Например, мы протестировали endpoint сервиса, указывающий на деплоймент из трёх подов.

Он показал значение statistic mode random probability = 0.33, что по сути распределяет трафик между тремя подами.

Это скорее вероятностное распределение трафика, а не полноценная балансировка нагрузки.

- Оно не учитывает фактическую нагрузку на серверы.
- Не гарантирует равномерное распределение трафика во времени.
- Не поддерживает session persistence (липкие сессии)

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3
Forwarded from IT Portal
This media is not supported in your browser
VIEW IN TELEGRAM
Нашёл максимально залипательный способ прокачать system design и облачную архитектуруигра Server Survival

Это 3D tower defense, где вы играете за облачного архитектора: строите инфраструктуру, раскидываете файрволы, балансировщики, сторэджи, отбиваетесь от дудоса, следите за бюджетом и здоровьем сервисов.

По сути, интерактивный симулятор продакшн-нагрузки, только в формате игры 🥳

И да, проект опенсорс, код на GitHub

@IT_Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94
Самый распространённый способ запустить контейнер — использовать Docker CLI. Но что именно делает команда docker run? Чем она отличается от:

🔹 podman run

🔹 nerdctl run

🔹 ctr run

🔹 runc create/start

Мини-курс, чтобы научиться запускать контейнеры с разными рантаймами:
https://labs.iximiuz.com/skill-paths/run-containers-across-runtimes

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
Репозиторий для изучения Prometheus и понимания, зачем и где его использовать

https://github.com/acend/prometheus-training

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍177
Тормозят Docker-сборки? Используй мощь build cache

Build cache переиспользует слои образа и метаданные, чтобы ускорить сборку. Когда ты пересобираешь образ без изменений или с минимальными изменениями, билдер повторно использует результаты предыдущей сборки.

На картиинке наглядный пример того, как build cache работает между сборками

Если хочешь ускорить сборки, в этом туториале разобраны ключевые концепции и практики, которые помогают выжать максимум из кэша:
https://depot.dev/blog/ultimate-guide-to-docker-build-cache

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Kubernetes совет

Удалить все поды в неймспейсе

При работе с тестовым кластером или в процессе обучения
могут возникнуть ситуации, когда нужно удалить все поды в конкретном неймспейсе.

Сделать это можно с помощью флага --all

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🥱3🔥2
Большинство людей сразу прыгают в Prometheus и Grafana, не понимая, какую именно задачу они на самом деле решают.

Я постоянно вижу это на собеседованиях. Человек говорит: «Мы используем Prometheus для мониторинга», но при этом не может объяснить, почему логи и метрики требуют разных пайплайнов, или что вообще происходит, когда CloudWatch перестаёт справляться на масштабе.

В observability вы решаете две принципиально разные проблемы.

Логи отвечают на вопрос "что произошло". Произошла ошибка. Пришёл запрос. Упал запрос к базе данных.
Это события - истории, которые рассказывает ваше приложение.

Метрики отвечают на вопрос "как система чувствует себя прямо сейчас". Латентность 200 мс. CPU 75%. 500 запросов в минуту. Это измерения.

Разные типы данных. Разные способы сбора. Разное хранение. И именно здесь большинство людей путается.

В прошлом месяце на моём DevOps-буткемпе мы собрали полноценную систему observability для микросервисов в Kubernetes.

Логи

Для логов мы использовали Fluentd sidecar-контейнеры, которые шарят volume с основным контейнером приложения:
- приложение пишет логи в volume;
- Fluentd читает их и отправляет дальше;
- чёткое разделение ответственности;
- на небольшом масштабе логи просто улетают напрямую в CloudWatch.

Но когда у вас тысячи строк логов в секунду, приходится добавлять слои:
- Lambda для форматирования.
- Kinesis для буферизации.
- OpenSearch для быстрых запросов по петабайтам данных.
- S3 для долгосрочного бэкапа.

Мы держали 7 дней в OpenSearch для активных расследований. 30 дней — в CloudWatch. Годы — в S3 для комплаенса. У каждого слоя разные характеристики по цене и производительности.

Метрики


Для метрик Prometheus скрейпит application endpoints каждые 30 секунд:
- разработчики инструментируют код клиентскими библиотеками Prometheus;
- экспонируют /metrics endpoint;
- Prometheus сам подтягивает данные.

Мы создали ServiceMonitor’ы, которые говорят Prometheus, какие pod’ы скрейпить на основе label’ов:
- Как только поднимаются новые pod’ы, Prometheus их обнаруживает и начинает скрейпить.
- Дальше Grafana визуализирует всё это.
- Мы импортировали готовые дашборды с grafana.com для мониторинга Kubernetes.
- И также собрали кастомные панели под метрики конкретного приложения.

Логи и метрики идут параллельно.

Когда что-то ломается, метрики показывают вам всплеск: error rate подпрыгнул в PM. Латентность выросла со 100 мс до 2 секунд.

Дальше вы идёте в логи: фильтруете по тому же окну времени, находите stack trace’ы и видите, что именно упало.

Нельзя нормально дебажить, имея только один тип данных. Нужны обе перспективы.

Мы всё это реализовали и оттраблшутали в лайв-созвоне: нагенерили метрики и логи и собрали дашборды в Grafana

Прочитать подробный пост можно здесь: https://open.substack.com/pub/akhileshmishra/p/youre-not-ready-for-kubernetes-observability

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍3
How-To: как собрать eBPF-фаервол, который фильтрует пакеты по диапазонам IP

В большинстве туториалов показывают, как заблокировать один конкретный IP-адрес. Но в реальном мире (Kubernetes, автоскейлинг нод, короткоживущие ворклоады, managed-сервисы и т. п.) IP-адреса постоянно меняются, поэтому на практике имеет смысл работать именно с CIDR-диапазонами.

В этой статье вы узнаете, как правильно блокировать целые подсети:
https://labs.iximiuz.com/tutorials/ebpf-firewall-ed03d648

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍5
Простой способ создавать свои DevOps-лабы

Примерно год iximiuz Labs поддерживает создание кастомных плейграундов: вы выбираете стандартную базу (Ubuntu-VM, Docker-хост, Kubernetes-кластер и т.д.) и донастраиваете её под свои задачи с помощью скриптов, похожих на cloud-init.

Подход хорошо себя зарекомендовал, таким образом было создано около 700 плейграундов. Но при всей "чистоте" скриптового провижининга у него есть и заметные минусы:
- Init-скрипты запускаются при каждом старте плейграундов, увеличивая time-to-prompt, иногда весьма существенно
- Некоторые задачи провижининга гораздо проще решать запуском shell-команд вручную (попутно чиня упавшие шаги)
- Некоторые "случайные" состояния VM имеет смысл сохранить как переиспользуемые кастомные плейграунды (но задним числом заскриптовать их уже нельзя)


К счастью, с появлением "persistent playgrounds" в ноябре стало возможным сохранять остановленный плейграунд как кастомный. При этом результат ничем не отличается от любого другого плейграунда: вы получаете read-only шаблон, который можно перезапускать сколько угодно раз, делиться им с другими или встраивать в туториалы, челленджи и уроки курсов. Магия 🧙

Попробуйте сами: http://labs.iximiuz.com/playgrounds

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5