Библиотека девопса | DevOps, SRE, Sysadmin
10.4K subscribers
1.8K photos
76 videos
4 files
3.15K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Download Telegram
👨‍💻 COPY с chown и меньше боли с правами

Если в контейнере приложение запускается не от root, то права на файлы часто ломают сборку или запуск. Вместо отдельного RUN chown можно сразу копировать файлы с нужным владельцем через COPY с флагом chown.

Простой пример для приложения, которое запускается от appuser:
FROM alpine:3.20

RUN addgroup -S app && adduser -S -G app appuser

WORKDIR /app

COPY --chown=appuser:app . /app

USER appuser
CMD ["./app"]


Если в образе нет /etc/passwd или /etc/group, и указать имя пользователя или группы, сборка может упасть, поэтому для минимальных образов иногда проще использовать числовые UID и GID.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🗞 Первая рабочая неделя

Собрали для вас новости и материалы прошедшей недели.

Трудоголики снова в моде

Свежий Wine

Когда ls уже не впечатляет

Linux Mint 22.3 Zena

SSD за грамм стали дороже золота

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#дайджест_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
HEALTHCHECK в Dockerfile чтобы контейнер не умирал молча

Контейнер может продолжать работать, даже если внутри уже все сломалось. HEALTHCHECK позволяет Docker периодически проверять состояние и выставлять статус healthy или unhealthy.

Самый простой вариант это дергать внутренний эндпоинт и падать по ненулевому коду, если ответ плохой. Docker поддерживает параметры interval, timeout и retries, чтобы настроить частоту и порог ошибок.

Пример:
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
CMD curl -f http://localhost:8080/health || exit 1


Команда может быть любой, главное чтобы успешный результат был exit 0, а неуспешный exit 1.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
price_update: scheduled for Jan 20

Завтра мы деплоим повышение цен на все программы. Успейте сегодня нажать apply, пока старые условия не превратились в legacy.

Настроить пайплайн саморазвития
🥱1
🔒 Let’s Encrypt выкатили сертификаты на шесть дней

Let’s Encrypt добавили короткоживущие сертификаты со сроком 160 часов. Это чуть больше шести дней. Чем меньше срок, тем меньше ущерб, если ключ утек.

Подключение сделано как опция. В ACME клиенте нужно выбрать профиль shortlived, и дальше все упирается в автоматизацию выпуска и продления. Если продление не автоматизировано, такой срок будет раздражать и ломать процессы.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤔2
💼 DevOps-портфолио: что включить и как собирать

70% работодателей выбирают кандидатов с hands-on проектами. В DevOps это особенно критично — здесь нужно доказать, что вы умеете автоматизировать, масштабировать и решать задачи. Портфолио — это ваш главный козырь.

Что включить:

🔹 CI/CD пайплайн. Jenkins, GitHub Actions, GitLab CI или CircleCI. Покажите автоматическую сборку, тестирование, деплой с rollback и уведомлениями.

🔹 Infrastructure as Code. Terraform, CloudFormation или Ansible. Разверните веб-приложение с версионируемой инфраструктурой в облаке.

🔹 Контейнеризация. Docker + Kubernetes или Docker Swarm. Контейнеризуйте приложение и разверните его с оркестрацией.

🔹 Мониторинг и логирование. Prometheus + Grafana или ELK stack. Настройте систему отслеживания и алертов в реальном времени.

🔹 Автоматизация безопасности. Интеграция сканирования уязвимостей в пайплайн или автоматизация compliance-проверок.

Где брать идеи:

• Изучите вакансии — воссоздайте описанное окружение

• Автоматизируйте личный проект, например, деплой блога через CI/CD)

• Контрибьютьт в open-source инфраструктурные проекты

• Используйте free tier AWS/Azure/GCP для экспериментов

• Участвуйте в хакатонах и челленджах

Как оформить:

Создайте личный сайт или блог (можно на GitHub Pages)

Документируйте каждый проект: контекст, цели, вашу роль, использованные технологии

Добавьте README с инструкциями по запуску

Приложите скриншоты дашбордов, пайплайнов, логов

Опишите проблемы и как их решили


💬 А у вас есть портфолио? Что туда включаете? Помогло ли на собеседованиях? Делитесь ссылками и опытом в комментариях! 👇

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#холиварня
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🔥 Полигон для драйверов FreeBSD

ChaosBSD — форк FreeBSD, который существует по одной простой причине: upstream не может и не должен принимать сломанные драйверы, полуработающее железо, вендорский мусор или спекулятивные хаки.

Иными словами это лаборатория для издевательств над железом или полигон для разработки драйверов: портирование, реверс-инжиниринг, clean-room реализации.

Идеальный проект для тех, кто хочет поэкспериментировать с диким железом, не ломая прод.

➡️ Репозиторий

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻 Почему Google не даёт трафик без robots.txt

Сайт работает, контент есть, SEO вроде настроено — а органического трафика из Google нет. Одна из частых причин: отсутствует или недоступен файл robots.txt.

Googlebot перед сканированием любого сайта сначала проверяет robots.txt. Если файл недоступен или сервер возвращает ошибку, краулер не рискует — останавливается и не индексирует страницы. Нет индексации — нет позиций в поиске. Нет позиций — нет трафика.

Проверить просто: откройте ваш-сайт.ru/robots.txt в браузере. Если видите 404, 500 или пустую страницу вместо текстового файла — проблема найдена. Google Search Console тоже покажет ошибку "robots.txt unreachable" в разделе покрытия.

Создайте файл robots.txt в корневой папке сайта. Минимальный вариант, который разрешает индексацию всего:
User-agent: *
Allow: /


Загрузите файл на сервер, чтобы он был доступен по адресу домен.com/robots.txt. Проверьте в браузере — должен открыться текст файла.

Без этого файла можно месяцами ждать трафика и не понимать, почему Google игнорирует сайт. Два килобайта текста решают проблему.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🤔2
🎞 Эмулятор PCI-устройств для изучения и отладки

Обычно для изучения драйверов нужно реальное железо или сложная настройка QEMU. PCIem решает эту проблему — это эмулятор, который создаёт виртуальные PCI-устройства прямо в Linux.

Вы можете тестировать драйверы без физического оборудования, изучать взаимодействие ядра с PCI или отлаживать код в контролируемой среде. Эмулятор работает как kernel module и регистрирует устройства так, будто они реально подключены к шине.

Как запустить:
git clone https://github.com/cakehonolulu/pciem
cd pciem
make
sudo insmod pciem.ko


После загрузки модуль создаёт виртуальное устройство. Вы увидите его через lspci, сможете взаимодействовать с его регистрами и тестировать свой драйвер без риска что-то сломать.

➡️ GitHub репозиторий

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
This media is not supported in your browser
VIEW IN TELEGRAM
👍1
LLMOps: развёртывание RAG-систем в Kubernetes

23 января в 19:00 на открытом уроке к курсу «Разработка ИИ агентов» обсудим архитектурную сторону внедрения LLM. Узнаем, как организовать инфраструктуру для агентов, работающих с внутренними данными через RAG в закрытом контуре.

Спикер — Игорь Стурейко, тимлид в «Газпроме» и эксперт по архитектуре решений на базе Kubernetes. Игорь подготовил видео о том, как эффективно масштабировать AI-сервисы и какие инженерные вызовы стоят за созданием автономных агентов.

В фокусе урока:

— интеграция векторных баз (FAISS, Chroma) в продакшн-окружение;
— оркестрация пайплайнов с помощью LangChain;
— выбор между Fine-tuning и RAG с точки зрения ресурсов и поддержки.

📅 Когда: 23.01 в 19:00 МСК

Узнать подробности
👍 Топ-вакансий для девопсов за неделю

DevOps-инженер
— до 250 000 ₽. Удалёнка.

DevOps / SRE — до 3 000 $ и удалёнка.

DevOps-инженер — удалёнка.

📍 Навигация: ВакансииЗадачиСобесы

🐸Библиотека devops'a

#вакансия_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👀 10 лет root без пароля

В telnetd из GNU InetUtils нашли уязвимость, которая позволяет любому подключиться к серверу под root без проверки пароля. Проблема живет с марта 2015 года (версия 1.9.3) и до сих пор не исправлена в актуальном релизе 2.7.0.

Когда telnetd запускает утилиту login для проверки пароля, он передает ей имя пользователя из подключения. У login есть опция -f, которая пропускает аутентификацию.

Разработчики добавили поддержку автоматического входа через переменную окружения USER, но забыли проверить её содержимое. Результат — подставив в USER значение -f root, можно войти без пароля.

USER='-f root' telnet -a имя_сервера


В 2015 году разработчики фиксили проблему с Kerberos-аутентификацией. Добавили получение имени пользователя из переменной окружения, но не добавили проверку на спецсимволы и опции.

Хотя telnet давно считается небезопасным протоколом и большинство перешло на SSH, эта уязвимость напоминает о том, что стоит проверять даже старое ПО.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#разбор_полётов
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3
🛠 Fence — изоляция процессов через namespace без root-прав

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

Fence — это CLI-утилита, которая создаёт изолированное окружение через Linux namespaces за секунды и без root-доступа.

Что умеет

Fence использует возможности ядра Linux для создания изолированных пространств. Процесс внутри не видит вашу файловую систему, может быть отрезан от сети и работает в собственном namespace процессов.

При этом никаких образов, слоёв или daemon'ов — просто оборачиваете команду и получаете изоляцию.

Примеры использования:
# Установка через cargo
cargo install fence-cli

# Базовый запуск с изоляцией ФС
fence run -- ./untrusted-binary

# Отключить сеть для процесса
fence run --no-network -- python script.py

# Пробросить конкретную директорию
fence run --mount $(pwd):/workspace -- make build


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

Никогда не знаешь, когда такое пригодиться, сохраните к себе в закладки 💾

➡️ GitHub репо

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
3
💻 Сервисные аккаунты в Kubernetes

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

Что такое сервисные аккаунты

По умолчанию каждый под получает токен сервисного аккаунта при запуске. Этот токен монтируется как том в /var/run/secrets/kubernetes.io/serviceaccount и используется для запросов к API. Разработчики используют их для чтения конфигураций или записи метрик без лишних настроек.

Автоматическое создание токена происходит через контроллер допуска ServiceAccount. Без указания serviceAccountName под использует default аккаунт в пространстве имен.

Как работают токены

Токены сервисных аккаунтов представляют собой JWT, подписанные приватным ключом API-сервера. Они содержат утверждения с именем аккаунта, пространством имен и группами вроде system:serviceaccounts. Kubernetes проверяет подпись и срок годности перед авторизацией.

Создание и настройка

Чтобы создать сервисный аккаунт, примените YAML с apiVersion: v1, kind: ServiceAccount. Свяжите с подом через spec.serviceAccountName в манифесте пода. Для ролей используйте RoleBinding или ClusterRoleBinding, чтобы назначить permissions вроде get pods.

Пример команды:
kubectl create serviceaccount my-sa; kubectl create rolebinding my-sa-role --clusterrole=view -sa=default:my-sa


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

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🔒 Шесть способов аутентификации в Kubernetes

Kubernetes предлагает несколько методов аутентификации — от сертификатов до интеграции с внешними провайдерами. Разбираемся, какой вариант использовать в разных сценариях.

• X.509 сертификаты — основной способ для пользователей и kubelet. Генерируете приватный ключ, создаете Certificate Signing Request и подписываете его CA кластера. Три команды openssl — и у вас готовый сертификат для доступа.

• Static Token File — простой, но небезопасный метод. API-сервер читает CSV-файл с токенами. Подходит только для разработки, в проде лучше не использовать.

• Bootstrap Tokens — то, что использует kubeadm при развертывании кластера. Токены хранятся как Secrets в namespace kube-system. Команда kubeadm token create выдаст готовую строку для присоединения нод.

• Service Account Tokens — для подов, которым нужен доступ к API. Kubernetes автоматически создает JWT-токен и монтирует его внутрь контейнера. Просто указываете serviceAccountName в спеке пода.

• OIDC — интеграция с внешними провайдерами типа Google, Okta или Azure AD. Настраиваете API-сервер с параметрами --oidc-issuer-url и --oidc-client-id, и получаете полноценный SSO для корпоративного окружения.

• Webhook Authentication — когда нужна кастомная логика. API-сервер отправляет запросы на внешний endpoint, который решает, пускать пользователя или нет.

Отключите анонимную аутентификацию (--anonymous-auth=false), не используйте дефолтный service account, регулярно ротируйте сертификаты и токены.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
👓 KDE научили работать в виртуальной реальности

Для оконного менеджера KWin появился экспериментальный плагин, который превращает KDE в полноценную среду рабочего стола для VR. Вместо физического монитора интерфейс отображается на виртуальных экранах в 3D-пространстве, управляемых через VR-очки или шлемы.

Под капотом используется Qt Quick 3D Xr с поддержкой OpenXR runtime. Разработчики тестировали на платформе Monado с очками Rokid Max и HP G2, а также на сервере WiVRn с Quest 3.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😢1
Пятница, 19:00. Худшее время для деплоя, но идеальное, чтобы осознать: AI в проде — это не только API-ключ, но и гора инфраструктуры вокруг векторных БД.

Внедрение LLM требует настройки новых типов хранилищ и управления контекстом. Разберём это на открытом уроке.

В программе занятия:

— как деплоить и масштабировать системы на базе RAG;
— стек технологий: FAISS, Chroma, LangChain;
— live coding: пайплайн для ответов по вашим документам.

Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса.

Это первый урок курса «Разработка AI-агентов». Мы обсуждаем не «будущее ИИ», а архитектуру и код.

Записаться на урок