Амбициозные проекты, удалёнка и рост в сфере DevOps — звучит как работа мечты! Отправляйте резюме до 8 июня и присоединяйтесь к команде YADRO! 🧑💻
Как получить оффер за 3 дня? Подробности на карточках выше — листайте!
Оставляйте заявку — мы ждём именно вас!
Как получить оффер за 3 дня? Подробности на карточках выше — листайте!
Оставляйте заявку — мы ждём именно вас!
Media is too big
VIEW IN TELEGRAM
☸ История создания Kubernetes — от внутреннего инструмента Google до мировой революции
Когда в 2014 году Google выложил в открытый доступ свой внутренний проект под странным именем Kubernetes, мало кто осознал, что это начало настоящей контейнерной революции. Но за этой лаконичной оболочкой скрывалась мощь, проверенная на миллиардах пользователей Google Search, Gmail и YouTube.
🔥 Всё началось с Borg
Внутри Google уже с 2003 года существовала система управления контейнерами — Borg. Это был секретный, монструозный и невероятно мощный оркестратор, позволявший запускать сотни тысяч задач на десятках тысяч серверов. Но Borg был закрыт, сложный и не предназначен для внешнего мира.
💡 Факт: Borg умел автоматически лечить упавшие сервисы задолго до того, как "self-healing" стал модным словом в DevOps.
🚀 Почему Kubernetes?
Google хотел подарить миру упрощённую, но эффективную версию Borg — с понятным API, без проприетарных завязок и... с хорошим маркетингом. Так родился Kubernetes — проект с открытым исходным кодом, построенный на Go, и вдохновлённый Borg и его экспериментальным "младшим братом" — Omega.
🔷 Факт: Название "Kubernetes" пришло из греческого языка и означает "штурман". Это намёк: Kubernetes управляет "флотом" контейнеров как кораблями.
👨💻 Кто стоял у истоков?
Изначально за Kubernetes отвечали три инженера Google:
Joe Beda
Brendan Burns
Craig McLuckie
Позже к ним присоединился Brian Grant, архитектор Borg, и вскоре десятки инженеров со всего мира стали развивать проект под крылом Cloud Native Computing Foundation (CNCF).
🧨 Факт: Kubernetes стал самым активным проектом на GitHub в 2015 году — больше коммитов, чем у Linux!
🌐 Как Kubernetes завоевал мир?
🔄 Контейнеры стали стандартом благодаря Docker, но их нужно было как-то управлять — и тут вошёл Kubernetes.
🎯 Kubernetes оказался универсальным: он мог запускаться на ноутбуке, в дата-центре, в облаке, даже на Raspberry Pi.
💥 Все большие игроки — AWS, Azure, IBM, Red Hat — вынуждены были поддержать Kubernetes, иначе рисковали остаться вне игры.
📦 Экосистема вокруг Kubernetes выросла в десятки раз: Helm, Istio, Prometheus, ArgoCD, Knative — всё это родилось в его тени.
🛡 Факт: Kubernetes — это не просто оркестратор. Это операционная система для облака. Она изменила сам подход к разработке: теперь приложения проектируются "cloud-native", а не "серверные".
⚙️ Kubernetes сегодня
Сейчас Kubernetes:
Работает в каждом втором крупном enterprise-проекте
Поддерживается всеми облачными провайдерами
Является де-факто стандартом для микросервисной архитектуры
Вдохновил создание K8s-альтернатив: Nomad, OpenShift, K3s, и других
💡 Вывод
Kubernetes — это не просто проект, это движение, начатое с утечки идей из недр Google и переросшее в открытую революцию управления инфраструктурой. Как Git изменил подход к коду, так Kubernetes изменил подход к запуску программ. Сегодня без Kubernetes — ни один серьёзный DevOps не чувствует себя в безопасности.
Хочешь больше таких историй из мира технологий? 😉
https://www.youtube.com/shorts/CNVdG6LS9kE
Когда в 2014 году Google выложил в открытый доступ свой внутренний проект под странным именем Kubernetes, мало кто осознал, что это начало настоящей контейнерной революции. Но за этой лаконичной оболочкой скрывалась мощь, проверенная на миллиардах пользователей Google Search, Gmail и YouTube.
🔥 Всё началось с Borg
Внутри Google уже с 2003 года существовала система управления контейнерами — Borg. Это был секретный, монструозный и невероятно мощный оркестратор, позволявший запускать сотни тысяч задач на десятках тысяч серверов. Но Borg был закрыт, сложный и не предназначен для внешнего мира.
💡 Факт: Borg умел автоматически лечить упавшие сервисы задолго до того, как "self-healing" стал модным словом в DevOps.
🚀 Почему Kubernetes?
Google хотел подарить миру упрощённую, но эффективную версию Borg — с понятным API, без проприетарных завязок и... с хорошим маркетингом. Так родился Kubernetes — проект с открытым исходным кодом, построенный на Go, и вдохновлённый Borg и его экспериментальным "младшим братом" — Omega.
🔷 Факт: Название "Kubernetes" пришло из греческого языка и означает "штурман". Это намёк: Kubernetes управляет "флотом" контейнеров как кораблями.
👨💻 Кто стоял у истоков?
Изначально за Kubernetes отвечали три инженера Google:
Joe Beda
Brendan Burns
Craig McLuckie
Позже к ним присоединился Brian Grant, архитектор Borg, и вскоре десятки инженеров со всего мира стали развивать проект под крылом Cloud Native Computing Foundation (CNCF).
🧨 Факт: Kubernetes стал самым активным проектом на GitHub в 2015 году — больше коммитов, чем у Linux!
🌐 Как Kubernetes завоевал мир?
🔄 Контейнеры стали стандартом благодаря Docker, но их нужно было как-то управлять — и тут вошёл Kubernetes.
🎯 Kubernetes оказался универсальным: он мог запускаться на ноутбуке, в дата-центре, в облаке, даже на Raspberry Pi.
💥 Все большие игроки — AWS, Azure, IBM, Red Hat — вынуждены были поддержать Kubernetes, иначе рисковали остаться вне игры.
📦 Экосистема вокруг Kubernetes выросла в десятки раз: Helm, Istio, Prometheus, ArgoCD, Knative — всё это родилось в его тени.
🛡 Факт: Kubernetes — это не просто оркестратор. Это операционная система для облака. Она изменила сам подход к разработке: теперь приложения проектируются "cloud-native", а не "серверные".
⚙️ Kubernetes сегодня
Сейчас Kubernetes:
Работает в каждом втором крупном enterprise-проекте
Поддерживается всеми облачными провайдерами
Является де-факто стандартом для микросервисной архитектуры
Вдохновил создание K8s-альтернатив: Nomad, OpenShift, K3s, и других
💡 Вывод
Kubernetes — это не просто проект, это движение, начатое с утечки идей из недр Google и переросшее в открытую революцию управления инфраструктурой. Как Git изменил подход к коду, так Kubernetes изменил подход к запуску программ. Сегодня без Kubernetes — ни один серьёзный DevOps не чувствует себя в безопасности.
Хочешь больше таких историй из мира технологий? 😉
https://www.youtube.com/shorts/CNVdG6LS9kE
🌟 Selenium Docker Images — готовые контейнеры для автотестов
Для тех, кто устал настраивать Selenium Grid вручную, сообщество Selenium выкатило официальные Docker-образы. В одном контейнере уже собраны браузеры (Chrome, Firefox, Edge), VNC для отладки и сам Selenium Server — остаётся только запустить тесты.
Инструмент особенно удобен для CI/CD:
— Поддержка multi-arch (amd64, arm64)
— Готовые теги для beta-версий браузеров
— Встроенная запись видео тестов
Запуск элементарный:
🤖 GitHub
@DevopsDocker
Для тех, кто устал настраивать Selenium Grid вручную, сообщество Selenium выкатило официальные Docker-образы. В одном контейнере уже собраны браузеры (Chrome, Firefox, Edge), VNC для отладки и сам Selenium Server — остаётся только запустить тесты.
Инструмент особенно удобен для CI/CD:
— Поддержка multi-arch (amd64, arm64)
— Готовые теги для beta-версий браузеров
— Встроенная запись видео тестов
Запуск элементарный:
docker run -d -p 4444:4444 --shm-size=2g selenium/standalone-chrome
🤖 GitHub
@DevopsDocker
💥 Собираем закрытую тусовку экспертов по K8s вокруг Nova Container Platform СНОВА О КУБЕРЕ
10 июня ждем DevOps-инженеров, архитекторов, CTO, CIO, разработчиков, DevSecOps-специалистов на первый офлайн КУБЕР СБОР в Москве.
Обсудим:
➖ Как выбрать решение для Service Mesh и избежать «подводных камней»
➖ Как переиспользовать старые серверы с GPU, чтобы объединять их в логический пул для тренировки современных крупных языковых моделей
➖ Как эффективно запустить распределенный интерфейс языковой модели на нескольких видеокартах в Kubernetes
➖ Разбор реального кейса по задаче безопасного хранения секретов в K8s
➖ Какие фичи мы уже добавили в оркестратор и что добавим до конца 2025 года
Вайб: крутой технический контент, неформальная обстановка, вкусная пицца и кальяны.
📌Регистрация и подробности
10 июня ждем DevOps-инженеров, архитекторов, CTO, CIO, разработчиков, DevSecOps-специалистов на первый офлайн КУБЕР СБОР в Москве.
Обсудим:
➖ Как выбрать решение для Service Mesh и избежать «подводных камней»
➖ Как переиспользовать старые серверы с GPU, чтобы объединять их в логический пул для тренировки современных крупных языковых моделей
➖ Как эффективно запустить распределенный интерфейс языковой модели на нескольких видеокартах в Kubernetes
➖ Разбор реального кейса по задаче безопасного хранения секретов в K8s
➖ Какие фичи мы уже добавили в оркестратор и что добавим до конца 2025 года
Вайб: крутой технический контент, неформальная обстановка, вкусная пицца и кальяны.
📌Регистрация и подробности
🚀 go-svelte-spa — простой шаблон для Go + Svelte SPA
🔗 https://github.com/joelseq/go-svelte-spa
Этот проект — минималистичный стартовый шаблон, который объединяет мощь Go и фронтенд на Svelte в одном репозитории. Отлично подойдёт для быстрого создания одностраничных приложений (SPA) с современным интерфейсом и надёжным сервером.
🧩 Что внутри:
✅ Go-сервер:
- Отдаёт статические файлы фронтенда
- Поддерживает SPA-маршруты через fallback на
✅ Svelte SPA:
- Структура с
- Лёгкий, быстрый и понятный фронтенд
✅ Makefile + Vite + Docker (опционально)
⚙️ Как запустить:
📦 Кому подойдёт:
- Go-разработчикам, которым нужен современный UI
- Тем, кто хочет обойтись без сложных фреймворков
- Для MVP, pet-проектов, админок и внутренних тулов
🔥 Если хочешь быстрый и удобный стек без лишнего —
📁 Репозиторий: https://github.com/joelseq/go-svelte-spa
🔗 https://github.com/joelseq/go-svelte-spa
Этот проект — минималистичный стартовый шаблон, который объединяет мощь Go и фронтенд на Svelte в одном репозитории. Отлично подойдёт для быстрого создания одностраничных приложений (SPA) с современным интерфейсом и надёжным сервером.
🧩 Что внутри:
✅ Go-сервер:
- Отдаёт статические файлы фронтенда
- Поддерживает SPA-маршруты через fallback на
index.html
✅ Svelte SPA:
- Структура с
App.svelte
, маршрутизацией и Vite - Лёгкий, быстрый и понятный фронтенд
✅ Makefile + Vite + Docker (опционально)
⚙️ Как запустить:
# Сборка фронта
cd frontend
npm install
npm run build
# Запуск Go-сервера
cd ..
go run main.go
📦 Кому подойдёт:
- Go-разработчикам, которым нужен современный UI
- Тем, кто хочет обойтись без сложных фреймворков
- Для MVP, pet-проектов, админок и внутренних тулов
🔥 Если хочешь быстрый и удобный стек без лишнего —
go-svelte-spa
отличный выбор.📁 Репозиторий: https://github.com/joelseq/go-svelte-spa
Forwarded from Golang
Доступен первый альфа-выпуск языка программирования Gauntlet, надстройки над языком Go, решающей некоторые архитектурные проблемы и добавляющей дополнительную функциональность.
Программы на языке Gauntlet поддерживают все возможности языка Go, транслируются в представление на языке Go и интегрируются с существующей экосистемой Go без необходимости задействования обвязок (binding).
Развиваемый проектом инструментарий написан на языке F# и распространяется пол лицензией GPLv3. Для работы с кодом предоставляется дополнение к редактору VSCode.
Решаемые в Gauntlet проблемы:
• Назойливый вывод ошибок, связанных с неиспользуемыми переменными (Gauntlet добавляет для всех неиспользуемых переменных заглушки вида "_ = a").
• Раздутый код для обработки ошибок. В Gauntlet вместо условных блоков вида "if err != nil" используются однострочные выражения "try-with".
• Назойливый способ импорта и экспорта (например, в Go необходимо, чтобы экспортируемые имена начинались на заглавную букву).
• Отсутствие тенарного оператора. В Gauntlet можно использовать выражения вида 'let properWord = @String len(lines) > 1 ? "lines" : "line"'.
•Отсутствие синтаксиса switch-case.
• Усложнённые циклы "for". В Gauntlet можно писать "for let _, c in "Hello" {" вместо "for _, c := range "Hello" {".
• Необычный оператор присваивания (":=" для одновременного объявления и инициализации переменных; "=" для изменения значения уже объявленных переменных).
• Невозможность вызова функций по цепочке (в Gauntlet поддерживается вызов вида 'let trimmedLines = fileContentStrVersion => strings.trimSpace(_) => strings.split(_, "\n")'.
Расширенные возможности Gauntlet:
• Синтаксис "when-is" похожий на switch.case, но манипулирующий выражениями.
• Поддержка pipe-каналов, позволяющих по цепочке пропускать значение через несколько выражений или функций. например "10 => add(_, 10) => add(_, 30) => divide(_, 2)".
• Выражения "try .. with" и "force .. with".
• Выражение "wrapper" для создания псевдонимов типов (например. "wrapper Int Dollars").
#Gauntlet #golang
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 25+ FTP-вопросов для собеседований: разбор с ответами
Если ты DevOps-инженер, системный администратор или сетевой специалист, то протокол FTP (File Transfer Protocol) тебе наверняка знаком. На собеседованиях часто задают вопросы по его устройству, безопасности и конфигурации. Команда Tecmint собрала ключевые FTP-вопросы с ответами, которые стоит выучить. Вот основные из них:
🔹 Что такое FTP?
File Transfer Protocol — это стандартный сетевой протокол, используемый для передачи файлов между клиентом и сервером по TCP/IP.
🔹 На каких портах работает FTP?
По умолчанию:
• Порт 21 — управляющее соединение
• Порт 20 — передача данных (в активном режиме)
🔹 Чем отличается активный и пассивный режим FTP?
В активном режиме сервер инициирует соединение для передачи данных, в пассивном — клиент сам подключается к случайному порту сервера.
💡 Пассивный режим чаще используют за NAT/фаерволами.
🔹 Что такое анонимный FTP?
Это доступ к FTP-серверу без пароля (обычно используется
🔹 Какие популярные FTP-серверы в Linux?
• vsftpd
• proftpd
• Pure-FTPd
🔹 Как обеспечить безопасность FTP?
Обычный FTP передаёт данные в незашифрованном виде. Для защиты используют:
• FTPS (FTP over SSL/TLS)
• SFTP (через SSH) — это вообще другой протокол
Также: ограничение по IP, chroot jail, шифрование паролей, запрет анонимного доступа.
🔹 Различия между FTP и SFTP?
• SFTP работает через SSH (порт 22)
• Обеспечивает полное шифрование
• Безопаснее, но несовместим с обычными FTP-клиентами
🔹 Какие команды FTP стоит знать?
•
•
•
🔹 Как ограничить пользователя FTP в своём каталоге?
Через chroot jail:
🔹 Как протестировать FTP-сервер?
Можно использовать:
•
•
• GUI-клиенты: FileZilla, WinSCP
📚 Все 25+ вопросов с ответами ты найдёшь тут → https://www.tecmint.com/ftp-interview-questions-and-answers/
⚙️ Отличный чеклист для подготовки к собеседованию или аудиту инфраструктуры!
#FTP #DevOps #Linux #Собеседование #Sysadmin #SFTP #Безопасность
@devopsitsec
Если ты DevOps-инженер, системный администратор или сетевой специалист, то протокол FTP (File Transfer Protocol) тебе наверняка знаком. На собеседованиях часто задают вопросы по его устройству, безопасности и конфигурации. Команда Tecmint собрала ключевые FTP-вопросы с ответами, которые стоит выучить. Вот основные из них:
🔹 Что такое FTP?
File Transfer Protocol — это стандартный сетевой протокол, используемый для передачи файлов между клиентом и сервером по TCP/IP.
🔹 На каких портах работает FTP?
По умолчанию:
• Порт 21 — управляющее соединение
• Порт 20 — передача данных (в активном режиме)
🔹 Чем отличается активный и пассивный режим FTP?
В активном режиме сервер инициирует соединение для передачи данных, в пассивном — клиент сам подключается к случайному порту сервера.
💡 Пассивный режим чаще используют за NAT/фаерволами.
🔹 Что такое анонимный FTP?
Это доступ к FTP-серверу без пароля (обычно используется
anonymous
или ftp
в качестве логина). Часто применяется для публичных загрузок.🔹 Какие популярные FTP-серверы в Linux?
• vsftpd
• proftpd
• Pure-FTPd
🔹 Как обеспечить безопасность FTP?
Обычный FTP передаёт данные в незашифрованном виде. Для защиты используют:
• FTPS (FTP over SSL/TLS)
• SFTP (через SSH) — это вообще другой протокол
Также: ограничение по IP, chroot jail, шифрование паролей, запрет анонимного доступа.
🔹 Различия между FTP и SFTP?
• SFTP работает через SSH (порт 22)
• Обеспечивает полное шифрование
• Безопаснее, но несовместим с обычными FTP-клиентами
🔹 Какие команды FTP стоит знать?
•
get
, put
— загрузка и выгрузка •
ls
, cd
, pwd
, mget
, mput
•
passive
/ active
— переключение режима🔹 Как ограничить пользователя FTP в своём каталоге?
Через chroot jail:
chroot_local_user=YES
в vsftpd.conf
🔹 Как протестировать FTP-сервер?
Можно использовать:
•
ftp
(CLI) •
lftp
— продвинутый CLI • GUI-клиенты: FileZilla, WinSCP
📚 Все 25+ вопросов с ответами ты найдёшь тут → https://www.tecmint.com/ftp-interview-questions-and-answers/
⚙️ Отличный чеклист для подготовки к собеседованию или аудиту инфраструктуры!
#FTP #DevOps #Linux #Собеседование #Sysadmin #SFTP #Безопасность
@devopsitsec
🎯 Задача для продвинутых DevOps-инженеров: «Неуловимый таймаут»
🧠 Уровень: Senior DevOps / SRE / Infrastructure Architect
📦 Стек: Kubernetes, Docker, NGINX, Istio, PostgreSQL, Prometheus, Cloudflare
📍 Ситуация:
Продакшен-приложение периодически отдаёт
- возникает только при внешнем трафике (через Cloudflare)
- не воспроизводится в staging-окружении
- не зависит от нагрузки — может случиться в 3 часа ночи
- происходит на разных endpoint'ах, но всегда спустя 100 секунд
📈 Метрики:
- В K8s pod'ах таймаутов нет
- NGINX ingress не логирует ошибок
- Istio mesh — без аномалий
- PostgreSQL работает стабильно, без долгих транзакций
- В логах нет ни
---
🧩 Ваша задача:
1. Найти, где именно происходит таймаут — в сети, прокси, mesh, firewall или app
2. Выяснить, почему именно 100 секунд
3. Подтвердить гипотезу, не разрушая прод
4. Предложить решение без увеличения всех таймаутов подряд
5. Составить диагностический plan на случай повторного возникновения
💡 Подсказка:
- NGINX по умолчанию имеет
- Cloudflare автоматически завершает соединения по таймауту 100 секунд
- Если вы используете long-polling или upload, CDN может прерывать соединение до ответа
🛠 Решение (примерный путь):
1. Проверить `curl -v` через Cloudflare и напрямую — сравнить TTL
2. Выставить `proxy_request_buffering off` и `client_body_timeout`
3. Обновить Ingress с `nginx.ingress.kubernetes.io/proxy-read-timeout : "180"`
4. Проверить KeepAlive между Envoy и backend
5. В Cloudflare использовать `chunked encoding` или WebSockets, если запросы >100с
📌 **Вывод:**
Таймаут в 100 секунд — не случайность. Это один из самых частых лимитов на уровне облачных прокси и CDN. DevOps-инженер должен уметь находить такие «невидимые» границы между слоями системы и грамотно обходить их.
💬 Поделись решением с командой — и запиши его в postmortem, чтобы не попасться второй раз.
@devopsitsec
🧠 Уровень: Senior DevOps / SRE / Infrastructure Architect
📦 Стек: Kubernetes, Docker, NGINX, Istio, PostgreSQL, Prometheus, Cloudflare
📍 Ситуация:
Продакшен-приложение периодически отдаёт
504 Gateway Timeout
на определённые API-запросы. Проблема:- возникает только при внешнем трафике (через Cloudflare)
- не воспроизводится в staging-окружении
- не зависит от нагрузки — может случиться в 3 часа ночи
- происходит на разных endpoint'ах, но всегда спустя 100 секунд
📈 Метрики:
- В K8s pod'ах таймаутов нет
- NGINX ingress не логирует ошибок
- Istio mesh — без аномалий
- PostgreSQL работает стабильно, без долгих транзакций
- В логах нет ни
timeout
, ни broken pipe
, ни reset by peer
---
🧩 Ваша задача:
1. Найти, где именно происходит таймаут — в сети, прокси, mesh, firewall или app
2. Выяснить, почему именно 100 секунд
3. Подтвердить гипотезу, не разрушая прод
4. Предложить решение без увеличения всех таймаутов подряд
5. Составить диагностический plan на случай повторного возникновения
💡 Подсказка:
- NGINX по умолчанию имеет
proxy_read_timeout 60
, но это не оно - Cloudflare автоматически завершает соединения по таймауту 100 секунд
- Если вы используете long-polling или upload, CDN может прерывать соединение до ответа
🛠 Решение (примерный путь):
1. Проверить `curl -v` через Cloudflare и напрямую — сравнить TTL
2. Выставить `proxy_request_buffering off` и `client_body_timeout`
3. Обновить Ingress с `
4. Проверить KeepAlive между Envoy и backend
5. В Cloudflare использовать `chunked encoding` или WebSockets, если запросы >100с
📌 **Вывод:**
Таймаут в 100 секунд — не случайность. Это один из самых частых лимитов на уровне облачных прокси и CDN. DevOps-инженер должен уметь находить такие «невидимые» границы между слоями системы и грамотно обходить их.
💬 Поделись решением с командой — и запиши его в postmortem, чтобы не попасться второй раз.
@devopsitsec
SPRINT OFFER в команду Телекома по направлению DevOps ➡️
YADRO в поиске Infrastructure и CI/CD Engineer — отправляйте резюме до 8 июня😊
Как получить оффер за 3 дня?
Выбирайте направление, отправляйте заявку и пройдите техническое и менеджерское интервью. Если всё пройдёт успешно — оффер будет ваш!
С чем вам предстоит работать?
Наши DevOps-инженеры поддерживают процессы разработки (на С/С++, Go, Node.JS) и отвечают за инфраструктуру, которая позволяет бизнес-решениям работать. Также специалисты постоянно улучшают качество внутренних сервисов и занимаются развитием инструментов CI/CD.
Кого ждём в команду?
DevOps-инженеров с опытом работы от года и желанием развивать новые продукты в нашей команде.
💙 Оставляйте заявку до 8 июня и станьте частью команды YADRO.
Все подробности — по ссылке.
YADRO в поиске Infrastructure и CI/CD Engineer — отправляйте резюме до 8 июня
Как получить оффер за 3 дня?
Выбирайте направление, отправляйте заявку и пройдите техническое и менеджерское интервью. Если всё пройдёт успешно — оффер будет ваш!
С чем вам предстоит работать?
Наши DevOps-инженеры поддерживают процессы разработки (на С/С++, Go, Node.JS) и отвечают за инфраструктуру, которая позволяет бизнес-решениям работать. Также специалисты постоянно улучшают качество внутренних сервисов и занимаются развитием инструментов CI/CD.
Кого ждём в команду?
DevOps-инженеров с опытом работы от года и желанием развивать новые продукты в нашей команде.
Все подробности — по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
«Штурвал 2.10»: встречайте поддержку Yandex Cloud и настоящую мультитенантность
10 июня в 17:00 мск встречаемся на обзорном вебинаре по релизу Kubernetes-платформы «Штурвал 2.10». Ребята из «Лаборатории Числитель» расскажут про два самых интересных обновления:
▪️Поддержку провайдера Yandex Cloud — как управлять кластерами в этом облаке так же, как у себя в инфраструктуре.
▪️Появление тенантов — как централизованно управлять доступами на понятных для бизнеса абстракциях, например, таких как «департамент», «система» и «окружение».
Вебинар будет интересен DevOps-инженерам, разработчикам, сотрудникам служб эксплуатации, специалистам по информационной безопасности, руководителям и всем, кто заинтересован в контейнеризации.
✔️ Регистрация
10 июня в 17:00 мск встречаемся на обзорном вебинаре по релизу Kubernetes-платформы «Штурвал 2.10». Ребята из «Лаборатории Числитель» расскажут про два самых интересных обновления:
▪️Поддержку провайдера Yandex Cloud — как управлять кластерами в этом облаке так же, как у себя в инфраструктуре.
▪️Появление тенантов — как централизованно управлять доступами на понятных для бизнеса абстракциях, например, таких как «департамент», «система» и «окружение».
Вебинар будет интересен DevOps-инженерам, разработчикам, сотрудникам служб эксплуатации, специалистам по информационной безопасности, руководителям и всем, кто заинтересован в контейнеризации.
✔️ Регистрация
🎯 Как ускорить навигацию в командной строке
🔁 Повторный запуск под root —
user@host: cat /var/log/messages
cat /var/log/messages: Permission denied.
❌Как не надо: Вверх. Влево. Влево. Влево. …. sudo Enter. Рррр.
✅Как надо: sudo !!
🔂 Повтор последнего аргумента —
Вы захотели еще раз воспользоваться только что написанным аргументом? Например, созданной директорией?
❌Как не надо: mkdir MyNewDirectory; cd MyNewDirectory
✅Как надо:
mkdir MyNewDirectory
cd <Alt+.>
🔍 Поиск команды в истории —
Какую же команду я только что запускал? Вверх. Вверх. Вверх. Вверх. О, вот и она!
Снова и снова вам приходится копаться в истории, ведь вы не знаете более подходящих альтернатив. Но что, если я скажу вам о том, что есть… поиск?
❌Как не надо: Вверх. Вверх. Вверх. Enter.
✅Как надо: Ctrl+R
Просто нажмите Ctrl+R и введите первые буквы нужной команды. Если поиск не выдал нужную команду сразу, то нажмите Ctrl+R еще раз. Повторное нажатие используется для прокрутки результатов. Ниже приведен поиск для cat.
(reverse-i-search)cat: sudo cat /var/log/messages
🏠 Домашняя директория —
Вы не на шутку удивитесь, узнав, сколько людей не знают этого способа! cd. Да, так просто. Без лишних аргументов вы сразу попадете в начальную директорию.
🔙 Назад в прошлую директорию —
Иногда простой способ — самый лучший. Допустим, вы были в директории /var/www/foo, а теперь оказались в /etc . Простая команда cd — вернет вас обратно в /var/www/foo .
❌Как не надо: cd /var/www/foo
✅Как надо: cd -
🎭 Фоновый режим, передний план и контроль задач
Возможно, вам потребуется какое-то время, чтобы привыкнуть, но оно того стоит. Допустим, вы редактируете файл в vim (вы же не будете этого делать в nano, да?!). И вот вам вдруг захотелось что-то найти в директории /var/www/html. Конечно же, вы можете выйти из vim, перейти в нужную директорию, а потом вдруг решить, что неплохо было бы вернуться к редактированию. Есть и другой вариант — перевести vim в фоновый режим и вернуться к нему позже.
Напишите: Ctrl+Z. Эта комбинация переводит все текущие задачи с переднего плана в фоновый режим. Полезно как минимум для: less, cat, man, vim и т.д.
«И куда же отправится моя активная задача?» — спросите вы. Напишите jobs и сами узнаете.
user@host: jobs
[1] Stopped vim
Супер. Теперь можно заняться чем-то другим. А как только вы решите вернуться к задаче, напишите fg. Эта команда возвращает фоновую задачу (vim) на передний план. Обратите внимание, что фоновые процессы приостанавливаются. Поэтому если в файле вы выполняли что-то из разряда tail, то для завершения команды потребуется какое-то время. Если же в фоновом режиме запущено несколько задач, то напишите fg 3 , где 3 — это номер задачи для возобновления. Увидеть список задач можно по команде jobs.
🔁 Повторный запуск под root —
sudo !!
user@host: cat /var/log/messages
cat /var/log/messages: Permission denied.
❌Как не надо: Вверх. Влево. Влево. Влево. …. sudo Enter. Рррр.
✅Как надо: sudo !!
🔂 Повтор последнего аргумента —
Alt + .
Вы захотели еще раз воспользоваться только что написанным аргументом? Например, созданной директорией?
❌Как не надо: mkdir MyNewDirectory; cd MyNewDirectory
✅Как надо:
mkdir MyNewDirectory
cd <Alt+.>
🔍 Поиск команды в истории —
Ctrl + R
Какую же команду я только что запускал? Вверх. Вверх. Вверх. Вверх. О, вот и она!
Снова и снова вам приходится копаться в истории, ведь вы не знаете более подходящих альтернатив. Но что, если я скажу вам о том, что есть… поиск?
❌Как не надо: Вверх. Вверх. Вверх. Enter.
✅Как надо: Ctrl+R
Просто нажмите Ctrl+R и введите первые буквы нужной команды. Если поиск не выдал нужную команду сразу, то нажмите Ctrl+R еще раз. Повторное нажатие используется для прокрутки результатов. Ниже приведен поиск для cat.
(reverse-i-search)cat: sudo cat /var/log/messages
🏠 Домашняя директория —
cd
Вы не на шутку удивитесь, узнав, сколько людей не знают этого способа! cd. Да, так просто. Без лишних аргументов вы сразу попадете в начальную директорию.
🔙 Назад в прошлую директорию —
cd -
Иногда простой способ — самый лучший. Допустим, вы были в директории /var/www/foo, а теперь оказались в /etc . Простая команда cd — вернет вас обратно в /var/www/foo .
❌Как не надо: cd /var/www/foo
✅Как надо: cd -
🎭 Фоновый режим, передний план и контроль задач
Возможно, вам потребуется какое-то время, чтобы привыкнуть, но оно того стоит. Допустим, вы редактируете файл в vim (вы же не будете этого делать в nano, да?!). И вот вам вдруг захотелось что-то найти в директории /var/www/html. Конечно же, вы можете выйти из vim, перейти в нужную директорию, а потом вдруг решить, что неплохо было бы вернуться к редактированию. Есть и другой вариант — перевести vim в фоновый режим и вернуться к нему позже.
Напишите: Ctrl+Z. Эта комбинация переводит все текущие задачи с переднего плана в фоновый режим. Полезно как минимум для: less, cat, man, vim и т.д.
«И куда же отправится моя активная задача?» — спросите вы. Напишите jobs и сами узнаете.
user@host: jobs
[1] Stopped vim
Супер. Теперь можно заняться чем-то другим. А как только вы решите вернуться к задаче, напишите fg. Эта команда возвращает фоновую задачу (vim) на передний план. Обратите внимание, что фоновые процессы приостанавливаются. Поэтому если в файле вы выполняли что-то из разряда tail, то для завершения команды потребуется какое-то время. Если же в фоновом режиме запущено несколько задач, то напишите fg 3 , где 3 — это номер задачи для возобновления. Увидеть список задач можно по команде jobs.
🧠 Задача: Безопасный CI/CD для Docker-образов в GitLab
Условие:
У вас есть следующий пайплайн:
Он работает, но содержит серьёзные проблемы безопасности и архитектурные ошибки.
🚨 Проблемы:
1. `docker:dind` и `tcp://docker:2375` — критически уязвимы.
Это значит, что любой процесс может получить root-доступ к Docker-демону, а значит и к хосту раннера.
2. Нет валидации образов или сканирования.
В репозиторий может попасть уязвимый образ.
3. Использование тега `latest`.
Тег можно перезаписать в любой момент — нарушает идемпотентность и аудит.
4. Пароли в переменных среды.
Лучше использовать безопасные токены (например, OIDC).
5. Нет изоляции сборки.
Образ может использовать
✅ Цель: Переделать пайплайн
Переход от DIND →
🛡️ Обновлённый
🔍 Разбор улучшений:
• Kaniko — работает без привилегий, не требует docker.sock
• `IMAGE_TAG` = SHA — версии стабильны, audit-friendly
• Trivy — автоматическое сканирование уязвимостей
• Удаление `latest` — используем
• Нет `docker:dind` — безопаснее, проще и быстрее
• Безопасная аутентификация — можно заменить
📌 Дополнительно:
1. Добавьте
2. Используйте
3. Ограничьте доступ к runner через
💣 Бонус: почему
Если runner запускается в
💡 Такой пайплайн не только безопаснее, но и более прозрачен, масштабируем и предсказуем.
Условие:
У вас есть следующий пайплайн:
build_and_push:
image: docker:latest
services:
- docker:dind
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_TLS_CERTDIR: ""
script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
- docker build -t "$CI_REGISTRY_IMAGE:latest" .
- docker push "$CI_REGISTRY_IMAGE:latest"
Он работает, но содержит серьёзные проблемы безопасности и архитектурные ошибки.
🚨 Проблемы:
1. `docker:dind` и `tcp://docker:2375` — критически уязвимы.
Это значит, что любой процесс может получить root-доступ к Docker-демону, а значит и к хосту раннера.
2. Нет валидации образов или сканирования.
В репозиторий может попасть уязвимый образ.
3. Использование тега `latest`.
Тег можно перезаписать в любой момент — нарушает идемпотентность и аудит.
4. Пароли в переменных среды.
Лучше использовать безопасные токены (например, OIDC).
5. Нет изоляции сборки.
Образ может использовать
--privileged
, --network=host
, и не быть sandboxed.✅ Цель: Переделать пайплайн
Переход от DIND →
kaniko
, добавить проверку безопасности и стабильную версификацию.🛡️ Обновлённый
.gitlab-ci.yml
variables:
IMAGE_TAG: "${CI_COMMIT_SHORT_SHA}"
build_and_push:
image:
name: gcr.io/kaniko-project/executor:latest
entrypoint: [""]
script:
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor \
--context $CI_PROJECT_DIR \
--dockerfile $CI_PROJECT_DIR/Dockerfile \
--destination $CI_REGISTRY_IMAGE:$IMAGE_TAG \
--destination $CI_REGISTRY_IMAGE:stable \
--snapshotMode=redo \
--single-snapshot
scan_image:
image: aquasec/trivy:latest
stage: test
script:
- trivy image --exit-code 1 --severity HIGH,CRITICAL $CI_REGISTRY_IMAGE:$IMAGE_TAG
🔍 Разбор улучшений:
• Kaniko — работает без привилегий, не требует docker.sock
• `IMAGE_TAG` = SHA — версии стабильны, audit-friendly
• Trivy — автоматическое сканирование уязвимостей
• Удаление `latest` — используем
stable
и SHA • Нет `docker:dind` — безопаснее, проще и быстрее
• Безопасная аутентификация — можно заменить
username/password
на OIDC в GitLab📌 Дополнительно:
1. Добавьте
rules:
в пайплайн, чтобы запускать сборку только по main
или тэгам.2. Используйте
readonly
контейнеры и fsGroup
если применимо.3. Ограничьте доступ к runner через
protected: true
.💣 Бонус: почему
docker:dind
= уязвимость?Если runner запускается в
privileged
режиме, то docker:dind
даёт возможность выполнять произвольные команды от root внутри и вне контейнера — включая монтирование хостовых директорий. Это делает возможным побег из контейнера.💡 Такой пайплайн не только безопаснее, но и более прозрачен, масштабируем и предсказуем.
This media is not supported in your browser
VIEW IN TELEGRAM
🐧 Малоизвестный, но полезный совет для Linux
Хочешь ускорить работу в терминале?
Используй символы восклицательный знак и доллар — это магия последнего аргумента предыдущей команды.
🔧 Пример:
mkdir new_project
cd !$
📌 Ещё пример:
curl https://example.com/file.zip
wget !$
Другими словами эти символы, заменяются последним аргументом предыдущей строки команды.
🔁 Работает с vim, cp, mv, tar и др.
💡 Экономит много времени!
Хочешь ускорить работу в терминале?
Используй символы восклицательный знак и доллар — это магия последнего аргумента предыдущей команды.
🔧 Пример:
mkdir new_project
cd !$
📌 Ещё пример:
curl https://example.com/file.zip
wget !$
Другими словами эти символы, заменяются последним аргументом предыдущей строки команды.
🔁 Работает с vim, cp, mv, tar и др.
💡 Экономит много времени!
📊 Grafana: продвинутый уровень визуализации и алертинга
🔥 19 июня в 20:00 мск приглашаем на бесплатный вебинар «Grafana — продвинутое использование» с Анатолием Бенем.Это больше, чем графики — это визуальный интеллект вашей системы.
Что вас ждёт:
– переменные, шаблоны и динамические панели для гибкой визуализации,
– создание информативных дашбордов с PromQL и данными из Prometheus, Loki, Elasticsearch и других источников,
– настройка умных алертов и управление инцидентами,
– подключение плагинов, настройка авторизации, best practices для команд.
Узнайте, как превратить Grafana в мощный центр наблюдаемости, настроенный под вашу инфраструктуру.
👉 Регистрируйтесь по ссылке: https://otus.pw/nOJbt/?erid=2W5zFGC6jQC
Занятие приурочено к старту курса "Observability: мониторинг, логирование, трейсинг", на котором вы научитесь строить эффективные системы мониторинга, работать с Prometheus, Grafana, ELK и другими инструментами, визуализировать метрики.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🔥 19 июня в 20:00 мск приглашаем на бесплатный вебинар «Grafana — продвинутое использование» с Анатолием Бенем.Это больше, чем графики — это визуальный интеллект вашей системы.
Что вас ждёт:
– переменные, шаблоны и динамические панели для гибкой визуализации,
– создание информативных дашбордов с PromQL и данными из Prometheus, Loki, Elasticsearch и других источников,
– настройка умных алертов и управление инцидентами,
– подключение плагинов, настройка авторизации, best practices для команд.
Узнайте, как превратить Grafana в мощный центр наблюдаемости, настроенный под вашу инфраструктуру.
👉 Регистрируйтесь по ссылке: https://otus.pw/nOJbt/?erid=2W5zFGC6jQC
Занятие приурочено к старту курса "Observability: мониторинг, логирование, трейсинг", на котором вы научитесь строить эффективные системы мониторинга, работать с Prometheus, Grafana, ELK и другими инструментами, визуализировать метрики.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🚀 Zadig — облачная DevOps-платформа с открытым исходным кодом. Проект предлагает гибкие workflow-решения для Kubernetes-сред, позволяя командам автоматизировать процессы тестирования и доставки кода без глубокого погружения в инфраструктурные детали.
Разработчики используют неинвазивный подход к CI/CD, где пользователи могут быстро настраивать пайплайны через готовые шаблоны. Платформа поддерживает различные стратегии релизов и предоставляет инструменты для мониторинга производительности процессов.
🤖 GitHub
@devopsitsec
Разработчики используют неинвазивный подход к CI/CD, где пользователи могут быстро настраивать пайплайны через готовые шаблоны. Платформа поддерживает различные стратегии релизов и предоставляет инструменты для мониторинга производительности процессов.
🤖 GitHub
@devopsitsec