DevOps by REBRAIN – Telegram
DevOps by REBRAIN
29K subscribers
414 photos
9 videos
4 files
887 links
Открытые практикумы по DevOps, Linux, Golang, Networks, Security

Мы на связи:
info@rebrainme.com
+7 (499) 116-34-68

https://rebrainme.com/

Зарегистрированы в РКН: https://knd.gov.ru/license?id=674db558d793bc0b0b8845ff&registryType=bloggersPermission
Download Telegram
Надоело лазить через бастион?

Знакомая боль: каждый день нужно попасть на прод, на стенд или в мониторинг. Но все сервера надежно спрятаны за бастионом. И вот ты уже в сотый раз набираешь:


ssh user@bastion
# ...подождал, зашел...
ssh internal-server-1

Или, что еще хуже, копируешь ключи, открывая дыру в безопасности (пробрасывать ключи на не доверенные сервера — плохая идея, и мы на курсе разберем почему).

Есть способ лучше. Безопасный, быстрый и настраивается один раз.

Решение: `~/.ssh/config` и магия `ProxyJump`

Всё, что тебе нужно — это прописать алиасы в конфиге на своей рабочей машине.

Базовый пример:
У нас есть бастион bastion.mycompany.com, а за ним сервер app-server-1 с серыми IP 10.0.5.10.

Открываем ~/.ssh/config и пишем:

# Наш прыжковый хост (бастион)
Host bastion
HostName bastion.mycompany.com
User vasya
IdentityFile ~/.ssh/id_ed25519_work

# Конечный сервер, доступный ТОЛЬКО через бастион
Host app1
HostName 10.0.5.10
User deploy
IdentityFile ~/.ssh/id_ed25519_work
ProxyJump bastion # <--- Вся магия здесь


Теперь, чтобы попасть на app-server-1, просто пишешь одну команду:


ssh app1


OpenSSH сам установит соединение с бастионом и пробросит туннель до конечного сервера. Всё прозрачно. Ключи подтягиваются автоматически. Никаких лишних действий.

🚀 Ускоряем всё в разы с ControlMaster

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

Первое соединение станет "мастером", а все последующие будут летать через уже открытый сокет, экономя время на handshake (рукопожатии).

Дополним наш конфиг для бастиона:

Host bastion
HostName bastion.mycompany.com
User vasya
IdentityFile ~/.ssh/id_ed25519_work
# Включаем мультиплексирование
ControlMaster auto
# Файл-сокет для управления сессией
ControlPath ~/.ssh/cm-%r@%h:%p
# Держим мастер-сессию 10 минут после выхода
ControlPersist 10m


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

Детально ознакомивший с протоколом SSH и его нюансами, вы можете добавить с свою работу следующие фишки:

🔹Строить цепочки из нескольких прыжков (`ProxyJump bastion1,bastion2`).
🔹Динамически управлять доступом через Match (например, разные настройки для разных Wi-Fi сетей).
🔹Работать с SSH Certificates вместо кучи authorized_keys.

Если хочешь системно прокачать SSH — от архитектуры протокола до настройки туннелирования и аутентификации по сертификатам, у меня отличные новости!

Мы с командой Rebrain написали новый курс «OpenSSH».
В нём нет воды — только практика на реальной инфраструктуре, схемы и ответы на вопрос «почему это работает так».

🗓 Доступ к программе откроется 24 февраля

📄 Полная обновлённая программа тут

💰 Успей забрать со скидкой: 22 000 ₽ (вместо 25 000 ₽) — только до 23 февраля включительно.

👉 Ссылка на покупку модуля

Прокачивай фундамент. Становись тем, кто не просто "тыкает" в консоль, а понимает безопасность своей инфраструктуры.

До встречи на курсе!
👍35🔥51
Привет, инженер!

Ты наверняка настраивал статические маршруты. ip route ... — и погнали. В маленькой сети это работает отлично. Но представь, что твоя инфраструктура выросла: добавилось несколько офисов, десяток VLAN-ов, резервные линки.

И тут начинается ад. Один линк упал — и ты судорожно переписываешь таблицы маршрутизации на пяти роутерах в 3 часа ночи. Знакомо?

Так вот, статическая маршрутизация — это костыль для растущей системы. Настоящий инженер должен уметь в динамику. И сегодня разберем EIGRP (Enhanced Interior Gateway Routing Protocol).

Главная фишка: EIGRP сходится (перестраивает маршруты) молниеносно благодаря алгоритму DUAL. Если основной путь падает, он достает из кармана заранее просчитанный запасной (Feasible Successor) и переключается на него за миллисекунды. Никаких простоев.

---

Давай разберем одну из частых проблем: "Почему мой трафик идет по медленному каналу?"

Допустим, у тебя два пути до сервера: оптический линк (1Gbps) и DSL-резерв (10Mbps). Ты настроил EIGRP, но видишь, что трафик "скачет" или балансируется 50/50, забивая медленный канал.

В чем суть?
EIGRP по умолчанию делает балансировку нагрузки (Load Balancing), но только для маршрутов с *равной* метрикой (Equal Cost). Но иногда метрика "почти" равна, или мы хотим использовать оба канала, но непропорционально (Variance).

Как это решается?
Смотрим конфиг. EIGRP использует формулу $Metric$, которая учитывает:
1️⃣ Bandwidth (пропускную способность)
2️⃣ Delay (задержку)

Если ты не задал bandwidth на интерфейсе явно, роутер берет дефолтное значение для типа порта. И часто для Serial-интерфейсов оно не совпадает с реальностью.

Решение:
Всегда явно указывай параметры линка.


Router(config)# interface GigabitEthernet0/0
Router(config-if)# bandwidth 1000000 ! Ставим 1Гбит (в кбит/c)
Router(config-if)# delay 10 ! Задержка в десятках микросекунд

Router(config)# interface Serial0/0
Router(config-if)# bandwidth 10000 ! Ставим честные 10Мбит
Router(config-if)# delay 1000


После этого EIGRP пересчитает метрику $K$-values и поймет, что Гигабит — это приоритет, а Serial — только на черный день.

Хочешь хитро балансировать неравные каналы? Используй команду variance.
Например, если быстрый путь имеет метрику 1000, а медленный 3000. variance 3 позволит использовать оба канала, распределяя трафик умнее.

---

Хочешь копнуть глубже?
Тема динамической маршрутизации — это база для любого, кто хочет считать себя серьезным сетевым или DevOps инженером. EIGRP — проприетарный протокол Cisco (хотя частично открыт), но понимая его логику (Distance Vector), ты поймешь принципы работы сетей в целом.

Приходи на наш бесплатный вебинар «EIGRP. Протокол динамической маршрутизации» сегодня в 19-00.

Что будем делать?
👉 Разберем теорию Дистанционно-векторной маршрутизации и алгоритм DUAL.
👉 Поймем, как считается метрика (никакой магии, только математика).
👉 На практике настроим EIGRP с нуля и посмотрим, как он реагирует на падение линков.

🔗 Регистрируйся и залетай. Увидимся в эфире!
🔥14😁7👍62👎1
Как за 1 команду получить доступ к БД, которая слушает только localhost?

Знакома ситуация? На сервере крутится PostgreSQL, Redis или веб-интерфейс, но они закрыты и слушают только 127.0.0.1. В целях безопасности — правильно. Но как подключиться?

💡Решение — SSH-туннель. 1 команда:


ssh -L 6543:localhost:5432 user@backend-prod-01


Что произошло:

🔹На твоём ноуте открылся порт 6543
🔹Весь трафик с него шифрованно идёт на backend-prod-01:5432
🔹Подключайся в DBeaver к localhost:6543 — работает!

Делаем навсегда удобным в ~/.ssh/config:


Host backend-tunnel
HostName backend-prod-01
User deploy
LocalForward 6543 localhost:5432 # PostgreSQL
LocalForward 9100 localhost:3000 # Grafana


Теперь просто: ssh backend-tunnel -Nf и оба порта доступны локально.

Обратная задача — дать коллеге доступ к твоему localhost:


ssh -R 9090:localhost:8080 bastion-server


Почему это безопасно?

1️⃣Весь трафик шифруется через SSH
2️⃣Доступ есть только у тех, у кого есть SSH-ключ
3️⃣Не нужно открывать порты в firewall

На курсе OpenSSH разбираем туннели глубоко:
👉Local/Remote Port Forwarding (Урок 6)
👉Dynamic (SOCKS5) прокси (Урок 7)
👉Интеграция с конфигом (Урок 4)
👉Hardening для безопасности (Урок 9)

Программа: PDF
Цена 22 000₽ вместо 25 000₽ до 23 февраля: купить модуль.

Перестань бороться с доступом — начни его контролировать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍354👏4😁3🔥2
🟡 Анонс открытых практикумов на следующую неделю

1️⃣ Suricata. Режим обнаружения вторжений (IDS)
Регистрация

Время проведения:
10 февраля 2026, вторник, 19:00 по МСК

Программа практикума:
🟢IDS/IPS: основные теоретические сведения;
🟢Установка и базовая настройка Suricata;
🟢Отправка событий безопасности на удаленный сервер.

Кто ведёт?
Андрей Шабалин — Тренер Cisco / Huawei, инструктор академии Eltex и Астра-Университета
---------------------------------------------------------------------------------------

2️⃣ Linux From Scratch - 03
Регистрация

Время проведения:
11 февраля 2026, среда, 20:00 по МСК

Программа практикума:
🟢M4
🟢 Bash
🟢Coreutils
🟢Diffutils
🟢File
🟢Findutils
🟢Gawk
🟢Grep
🟢Gzip
🟢Make
🟢Patch
🟢Sed
🟢Tar
🟢Xz

Кто ведёт?
Андрей Буранов — системный администратор в департаменте VK Play, 10+ лет опыта работы с ОС Linux, 8+ лет опыта преподавания. Входит в топ 3 лучших преподавателей образовательных порталов
---------------------------------------------------------------------------------------

3️⃣ Фидбек как инструмент роста: как давать и принимать конструктивную критику
Регистрация

Время проведения:
12 февраоя 2026, четверг, 19:00 по МСК

Программа практикума:
🟢Для инженера: как просить и обрабатывать обратную связь по своей работе
🟢Для руководителя: как внедрить ритуалы регулярного фидбека, как модерировать конфликтные обсуждения
🟢Разбор: Как превратить эмоциональные комментарии в конструктивную обратную связь
🟢Методика: SBI (Situation-Behavior-Impact — Ситуация-Поведение-Влияние) на технических примерах.

Кто ведёт?
Елена Фролкина - лидер с 15-летним опытом построения и управления командами в лидерах рынка и стартапах
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2👏2
Человеческий фактор vs Железобетонная защита

Ты идеально настроил мониторинг, защитил всю инфраструктуру и пропатчил все уязвимости. А в один прекрасный день начинаешь видеть огромное количество алертов о недоступности прода. Знакомая ситуация? Такое зачастую происходит потому, что бухгалтер открыл фишинговое письмо с файлом "Премия бухгалтеру.docx", и по сети начал гулять шмфровальщик.

Мы привыкли работать с серверами, забывая, что человек — это endpoint с кучей уязвимостей (CVE-Human-Critical), который очень сложно патчить. А мы можем научить как это делать.

Часто слышу: "Социальная инженерия — это для психологов, я ж инженер" . Это ошибка. Чтобы защитить почтовый сервер, ты должен понимать, как его пытаются обмануть. Ты должен знать, как настроить DNS так, чтобы левый сервер не мог притвориться твоим доменом.

Пример из жизни. Многие настраивают SPF, но забывают про DMARC policy. В итоге атакующий просто шлет письмо с левого IP, и оно проходит.

На курсе мы разбираем это на уровне конфигов (bind/postfix), а не на пальцах:


# Плохой пример (SoftFail), который пропустит фишинг
v=spf1 include:_spf.google.com ~all

# Хороший пример (HardFail), к которому будем стремиться
v=spf1 include:_spf.google.com -all


🚀 Что интересного в курсе «Атаки, направленные на людей»:

Глубокий OSINT с Maltego.
Обход современных почтовых защит (SPF, DKIM, DMARC).
Практика с Evilginx2: учимся перехватывать сессии с включенной двухфакторкой.

📅 Важные моменты:
1. Старт первого потока: 24 февраля.
2. Мы порезали косты, чтобы знания были доступнее
💰 Цена: 25 00022 000 руб.

👉 Посмотреть полную программу (PDF)
👉 Купить курс со скидкой

Перестань надеяться на авось. Начни понимать, как ломают, чтобы строить системы, которые выстоят.
🔥116👏3
Привет, коллега.

Типичная история: после деплоя в K8s всё зелёное, поды RUNNING. Но скоро начинаются странности:

* Плавающие 504 Gateway Timeout
* Часть пользователей видит старые версии после деплоя
* После перезапуска пода приложение "тупит", но трафик уже идёт

Знакомо?

Проблема в 90% случаев не в коде, а в отсутствии Health Checks. K8s по умолчанию считает: контейнер запущен (`RUNNING`) = готов принимать трафик. Но твоему приложению нужно время на инициализацию, а при сбое оно может "зависнуть".

Решение (бери и внедряй):

Добавь в deployment.yaml два типа проверок:


containers:
- name: app
image: my-registry/my-cool-app:v1.0
ports:
- containerPort: 8080
# Liveness Probe: проверяет, живо ли приложение
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10

# Readiness Probe: проверяет, готово ли принимать трафик
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5


Что это даёт сразу:
1. Стабильность: Трафик идёт только на готовые поды
2. Корректные деплои: RollingUpdate работает как задумано
3. Самовосстановление: "Зависшие" контейнеры перезапускаются автоматически

Без этого K8s просто перезапускает контейнеры, но не управляет доступностью.

Если думаешь: "Это же просто YAML. А как проектировать всю систему?" — ты на правильном пути. Это и есть инженерный подход к Kubernetes.

Хочешь перейти от копипасты манифестов к глубокому пониманию архитектуры? Разбираем это на базовом курсе по Kubernetes. Учим не команды, а принципы.

В этом месяце мы будем много говорить про кубер, давай разбираться вместе🤍
17👍6🔥4👎1
Как обновить конфигурацию приложения без перезапуска контейнера?

Вот ситуация: поменялся URL внешнего API или настройки кеша. Ты вносишь изменения в application.yml, пересобираешь образ, делаешь kubectl rollout restart. И всё это время сервис недоступен или работает со сбоями. Знакомо?

❗️Проблема: Конфигурация зашита в Docker-образ. Любое изменение требует пересборки и перезапуска.

💡Решение: Используй ConfigMap для хранения конфигурации вне образа. Приложение читает конфиг оттуда, а ты можешь обновлять настройки «на лету».

Бери и внедряй:

1. Создай ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
application.yml: |
app:
api-url: "https://new-api.example.com"
cache-ttl: "300"


2. Подключи к поду как volume:

containers:
- name: app
image: myapp:v1
volumeMounts:
- name: config-volume
mountPath: /etc/app-config
volumes:
- name: config-volume
configMap:
name: app-config


Что это даёт:
- Меняешь конфиг одной командой: kubectl apply -f configmap.yaml
- K8s сам обновит файл в подах (обычно в течение минуты)
- Приложение продолжает работать
- История изменений хранится в git

Важный нюанс: Чтобы приложение подхватило новый конфиг без рестарта, нужно либо:
- Использовать kubectl rollout restart (короткий даунтайм)
- Или настроить hot reload в самом приложении (например, через Spring Boot Actuator)

А для паролей и ключей — используй Secrets (принцип тот же, но с шифрованием).

---

Если хочешь не просто копировать YAML, а понимать, как правильно проектировать конфигурацию, работать с Helm, управлять разными окружениями (dev/stage/prod) — разбираем это на базовом курсе по Kubernetes.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1910🔥5👎4😁3
502 Bad Gateway: Почему Nginx и PHP не слышат друг друга?

Привет, инженеры! 🖖
Знакомая картина: развернули проект, настроили конфиги, дергаете курлом — а там 502 Bad Gateway. И начинается: рестарт служб, чтение логов по диагонали, паника.

Давайте разберем на пальцах, без магии.

В связке Nginx + PHP-FPM (классический LEPP/LEMP) Nginx — это привратник. Он получает запрос, видит, что это .php, и понимает: "Я такое не умею, надо отдать тому, кто умеет". И пытается постучаться к PHP-FPM.

Где обычно происходит "затык"?

В способе связи. Nginx может стучаться двумя способами:

1. Через TCP-порт (например, `127.0.0.1:9000`).
2. Через Unix-сокет (файлик на диске, например, `/run/php/php8.1-fpm.sock`).

Проблема в том, что в конфиге Nginx вы пишете одно, а PHP-FPM слушает другое.

Пример из жизни (и нашего курса):

В /etc/nginx/sites-enabled/default вы написали так (ожидаете сокет):

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # <-- Nginx ищет файл здесь
}


А в конфиге пула PHP-FPM (`/etc/php/8.1/fpm/pool.d/www.conf`) стоит дефолт или кто-то поменял на порт:

; listen = /run/php/php8.1-fpm.sock ; <-- Закомментировано!
listen = 127.0.0.1:9000


Итог: Nginx кричит в "трубу" (файл сокета), а PHP ждет звонка по "телефону" (TCP порт). Результат — 502. Nginx не может достучаться до бэкенда.

Как лечить и, главное, ПОНИМАТЬ такие вещи?
Не методом тыка, а через понимание архитектуры. Именно про это мой обновленный курс LEPP Stack. Мы не просто учим копипастить конфиги, мы учим понимать:
— Как проходит HTTP-запрос от клиента до базы.
— Как тюнить Nginx и PHP-FPM на уровне ядра.
— Как траблшутить, когда всё упало.

🔥 Мы разработали новую программу!
Без"воды", чистое мясо: от голой VM до деплоя MediaWiki и упаковки всего этого в Docker.

🗓 Старт: Доступ открываем 24 февраля.

📄 Подробная программа курса: [Смотреть PDF]

💰 Цена: 22 000 ₽ 25 000 ₽ до 23 февраля включительно.

👉 Забирай модуль здесь: [Купить LEPP Stack]
👍14🔥32
💸 Гранты на общую сумму 1.1млн на обучение в Rebrain от нашего партнера — только до 18 февраля!

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

🎁 Наш партнёр Fevlake выделил 20 грантов:
- 10 грантов по 60 000 ₽ на практикум DevOps-инженер
- 10 грантов по 50 000 ₽ на практикум Сисадмин с нуля

В этот раз сделали максимально просто: на платформе уже указана финальная стоимость с учётом гранта.
Когда гранты закончатся — автоматически вернётся полная цена.

Какие практикумы участвуют:
🟢DevOps-инженер 100 000₽ 160 000₽
🟢Сисадмин с нуля 84 000₽ 134 000₽
✉️ Грантов всего 20 и они доступны только для комьюнити Rebrain. Чтобы получить — переходите по ссылкам программы выше☝️ или пишите менеджерам в TG . Наш менеджер свяжется и расскажет детали.

🟡 Действуют до 18 февраля или пока не разберут.

↘️ Забронировать грант у менеджера
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥96👏4
🟡 Анонс открытых практикумов на следующую неделю

1️⃣ Списки контроля доступа (ACL) на маршрутизаторах Eltex
Регистрация

Время проведения:
17 февраля 2026, вторник, 19:00 по МСК

Программа практикума:
🟢ACL: основные теоретические сведения
🟢Виды списков контроля доступом (ACL)
🟢Настройка фильтрации трафика на маршрутизаторе Eltex

Кто ведёт?
Андрей Шабалин — Тренер Cisco / Huawei, инструктор академии Eltex и Астра-Университета
---------------------------------------------------------------------------------------

2️⃣ Linux From Scratch - 04
Регистрация

Время проведения:
18 февраля 2026, среда, 20:00 по МСК

Программа практикума:
🟢Binutils - Pass 2
🟢GCC - Pass 2
🟢Монтируем виртуальные ФС ядра
🟢Заходим в окружение Chroot

Кто ведёт?
Андрей Буранов — системный администратор в департаменте VK Play, 10+ лет опыта работы с ОС Linux, 8+ лет опыта преподавания. Входит в топ 3 лучших преподавателей образовательных порталов
---------------------------------------------------------------------------------------

3️⃣ Командная работа с Terraform: настройка Remote State
Регистрация

Время проведения:
19 февраоя 2026, четверг, 20:00 по МСК

Программа практикума:
🟢Эволюция от локального tfstate к удалённому хранению
🟢Настройка backend в облачных хранилищах (S3, Yandex Cloud) и работа с Terraform Cloud
🟢Альтернативные способы хранения состояния

Кто ведёт?
Дмитрий Куликов — DevOps-инженер с 7+ лет опыта в IT. Специализация: построение и автоматизация IT-инфраструктуры.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Ребята! Отмена вебинара по техническим причинам по теме "Фидбек, как инструмент роста". Приносим извинения😞
👍192👎2🔥2👏1
Kubernetes Live Class с Василием Озеровым: база, без которой никуда

Kubernetes давно стал обычной частью инфраструктуры, а не чем-то «только для DevOps». Но важнее даже не сам Kubernetes, а понимание того, как он устроен внутри: control plane, поды, сервисы, RBAC и вся логика, на которой держится современный прод.

С этим рано или поздно сталкивается любой инженер — DevOps, Backend, SRE, инфраструктурный инженер. И когда есть крепкая база и понимание механики, всё остальное в Kubernetes начинает складываться гораздо быстрее 🤍

Запускаем новый Live Class с Василием Озеровым — живое обучение + практика + системный фундамент Kubernetes.

Live Class «Базовые ресурсы и механика Kubernetes» — это:

🟢6 живых занятий с Василием Озеровым — разберём архитектуру Kubernetes, ключевые ресурсы и внутреннюю логику работы кластера
🟢Практикум с 16 заданиями и автопроверкой + проверка инженерами финального задания
🟢Чат с авторами курса и менторами (Васю мы туда тоже закинем 😉)
🟢Гибкий формат: для тех, у кого уже есть Kubernetes Base — можно просто докупить Live Classes по более низкой цене
🟢Подходит тем, кто только знакомится с Kubernetes, и тем, кто уже работал, но хочет системную базу
🟢Записи Live Classes будут доступны только тем, кто их приобрел. Так что — спешите!

Программа живых классов:

26.02 — Архитектура, API и Reconciliation Loop
03.03 — Pods и Workloads (Deployment, ReplicaSet)
05.03 — Networking: Services и DNS
10.03 — Доступ и безопасность: RBAC
12.03 — Конфигурация и события (ConfigMaps, Secrets, Events)
17.03 — Q&A сессия: ответы на вопросы


🟢Форматы участия:
- практикум Kubernetes Base + Live Class
- только практикум Kubernetes Base
- только Live Class

🟡 Старт — 26 февраля
🎁 Скидка до 30% на все тарифы действует до 23 февраля

↘️
Узнать подробности и занять место
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥42