DevOps FM

@devops_fm


Канал для тех, кто живёт DevOps и системным администрированием.

Новости, статьи, best practices, инструменты и чилл-аут контент. Cloud Native, Docker, Kubernetes, CI/CD, БД, мониторинг etc.

По вопросам — Владе @vlada_grishkina_makareva

DevOps FM

23 Oct, 11:03


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

👩‍💻 Ubuntu исполнилось 20 лет!

В 2004 году Марк Шаттлворт собрал небольшую команду разработчиков Debian, с которыми основал компанию Canonical. Они решили создать свободный дистрибутив Linux, который бы был доступен не только техническим специалистам, но и обычным пользователям. Первый стабильный релиз, Ubuntu 4.10 (Breezy Badger), появился уже в октябре того года.

Ну что, убунтеры, у кого из вас остались диски?

⚫️ Джей Шмидт снова порадовал своей статьей об инструкциях Dockerfile. На этот раз он объяснил разницу между ARG и ENV и на примерах показал, когда и какую инструкцию нужно использовать. Если кратко:

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

Если хочется больше деталей, то можете прочитать весь обзор в блоге Docker.

🟡 На Learnk8s вышла большая статья о работе сети в Kubernetes с упором на сервисы, kube-proxy и балансировку нагрузки. Информативный текст для тех, кто только начинает погружаться в тему.

⚫️ DataDog обновили результаты собственного исследования о состоянии безопасности облачных сред в 2024 году. Один из выводов: большинство инцидентов в облаке вызваны скомпрометированными учетными данными.

🟡 В блоге Simple Thread вышел короткий туториал по заполнению базы данных Postgres в GitHub Actions без сохранения SQL в GitLFS.

#devops #ubuntu #kubernetes

DevOps FM

21 Oct, 05:00


Всем DevOps!

Наши друзья разрабатывают облачную платформу для управления Kubernetes-кластерами. Они хотят провести небольшое интервью с несколькими специалистами и узнать, что нужно учесть, чтобы платформа была реально удобной и эффективной в работе.

За уделённое время вы получите закрытый доступ к платформе и возможность напрямую повлиять на её  развитие.

📝 Если заинтересовались — вот форма для связи.

#партнёрский_пост

DevOps FM

18 Oct, 11:59


Давно у нас не было анонсов интересных мероприятий. Исправляемся!

🔄 DevOops 2024 — это ежегодная конференция для разработчиков и инженеров всех грейдов, где обсуждают тренды индустрии, делятся новыми решениями и развивают российскую DevOps-культуру.

На конференции будет представлено 50 докладов спикеров из различных крупных компаний, включая СберТех, T-Банк, Yandex Cloud и многих других. Все материалы были тщательно отобраны программным комитетом, который состоит из экспертов с многолетним опытом в области DevOps, SRE и Cloud Native.

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

• Как распределенно хранить триллионы файлов
• Комбо-факапы, или Эффект бабочки-факапницы
• Декомпозируем GitOps. Как проапгрейдить ваш CIOps до GitOps с минимальными усилиями

📅 6 ноября онлайн, 12 и 13 ноября — Санкт-Петербург и онлайн
📍 Полная программа и другие подробности — по ссылке

#партнерский_пост

DevOps FM

16 Oct, 14:11


Подборка свежих статей и релизов — уже на канале DevOps FM.

🟡 Зарелизили nxs-data-anonymizer 1.12.0. В новой версии добавили функцию фильтра drop для MySQL.

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

⚫️ В блоге CNCF рассказали, как успешно сдать Kubernetes and Cloud Native Security Associate (KCSA). В статье вы найдёте полезные ссылки на учебные материалы и список тем, по которым будет проходить экзамен.

Кратко о самом KCSA. У вас будет 90 минут, чтобы ответить на 60 вопросов. Чтобы успешно сдать экзамен и получить сертификат, необходимо дать не менее 75% правильных ответов.

🟡 На InfoQ разобрали cell-based architecture — архитектуру на основе ячеек. Эрика и Рафал обсудили ключевые аспекты управления такой архитектурой и показали её достоинства на примере крупных компаний.

⚫️ На Medium вышел ликбез про грамотное управление секретами. В этом тексте представлены базовые концепции, поэтому он будет полезен начинающим DevOps-инженерам.

#devops #KCSA #nxsdataanonymizer

DevOps FM

14 Oct, 13:34


👩‍💻 Всем DevOps! Какой понедельник без best practices? Сегодня — K8s.

1. Установите минимум и максимум для ресурсов. Без ограничений продакшен-кластеры и узлы могут выйти из строя.

2. Пользуйтесь преимуществами декларативных YAML-файлов. Замените императивные команды kubectl (к примеру, kubectl run) на декларативные файлы YAML. Они позволяют хранить и версионировать все ваши объекты вместе с вашим кодом. Если что-то пойдет не так, вы сможете легко откатить развёртывания просто восстановив более ранний файл YAML. А ещё ваша команда сможет видеть текущий статус кластера и изменения, внесенные в него с течением времени.

3. По возможности не используйте голые поды. В случае отказа узла они не будут автоматически перенесены в другой узел. Поэтому обязательно связывайте их с Deployments, ReplicaSets и Jobs.

4. Не забывайте маркировать объекты – контейнеры, сервисы, поды, сети и т. д. В метки вы можете занести информацию о владельце, версии, экземпляре, компоненте, проекте, команде, уровне конфиденциальности и др.

5. Сделайте пробы готовности независимыми. Они не должны быть зависимыми от:
• базы данных;
• миграции баз данных;
• API;
• сервисов сторонних производителей.

6. Установите Quality of Service (QoS) для ваших подов. Выбор класса QoS влияет на производительность приложения в кластере Kubernetes. Если правильно настроите QoS, то сможете эффективно распределять ресурсы и обеспечивать бесперебойную работу приложений.

7. Обязательно указывайте адекватные реквесты и лимиты ресурсов. Реквесты помогут правильно распределить ваши workloads по узлам. Лимиты помогут избежать проблем с узлами и другими workloads, выполняемыми на том же узле в случае утечек памяти или слишком большого потребления CPU.

🗂 Какие инструменты и технологии вы хотели бы увидеть в подборке лучших практик? Пишите свои пожелания в комментариях.

#bestpractices #devops #kubernetes

DevOps FM

11 Oct, 06:43


📝 Почтовый сервер с нуля. Часть 3

Михаил, DevOps-инженер из Nixys, завершает серию статей про создание почтового сервера с чистого поля.

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

P.S.: первая и вторая части — по ссылкам.

#Хабр #статья_Nixys #devops #почтовыйсервер

DevOps FM

09 Oct, 13:03


Делимся полезным постом от @DevOpsKaz

👩‍💻 Основные команды Kubernetes для восстановления после сбоев, которые помогают в 99% случаев:

kubectl get pods --all-namespaces Проверить статус всех подов во всех неймспейсах, чтобы найти сбои.

kubectl describe pod pod_name Получить подробную информацию о неудачном поде.

kubectl logs pod_name -c container_name Просмотреть логи конкретного контейнера в поде для устранения проблем.

kubectl get events --all-namespaces --sort-by='.metadata.creationTimestamp Просмотреть последние события для нахождения ошибок и сбоев.

kubectl get nodes Проверить статус нод в кластере и выявить возможные сбои на нодах.

kubectl drain node_name --ignore-daemonsets Безопасно эвакуировать и изолировать ноду для восстановления.

kubectl cordon node_name Пометить ноду как недоступную для планирования новых подов во время восстановления.

kubectl delete pod pod_name --grace-period=0 --force Принудительно удалить сбойный под, чтобы перезапустить его или освободить ресурсы для восстановления.

kubectl rollout undo deployment deployment_name Откатить деплоймент, если новый релиз вызывает сбои.

kubectl exec -it pod_name -- /bin/sh Получить доступ к контейнеру для отладки и решения проблем прямо внутри пода.

kubectl get componentstatuses Проверить здоровье ключевых компонентов кластера, таких как etcd и kube-apiserver.

kubectl top nodes Мониторить использование ресурсов нод, чтобы выявить проблемы с исчерпанием ресурсов.

kubectl top pods --all-namespaces Проверить использование ресурсов подов во всех неймспейсах для выявления узких мест.

kubectl delete node node_name Удалить неработающую ноду из кластера для восстановления.

etcdctl --endpoints=https://etcd-server:2379 snapshot restore backup.db Восстановить etcd из снимка в случае сбоя.

kubectl apply -f backup.yaml Применить конфигурации из резервной копии во время восстановления.

kubectl taint nodes node_name key=value Запретить планирование подов на ноду, которая имеет проблемы, в процессе восстановления.

kubectl get endpoints service_name Проверить конечные точки сервиса, чтобы убедиться в их корректной работе во время восстановления.

😛 #партнёрский_пост

DevOps FM

07 Oct, 09:46


👩‍💻 Всем DevOps! Начнём неделю с подборки лучших практик по Terraform:

1. Разделяйте файлы конфигураций. Вместо того чтобы помещать весь код в main.tf, лучше распределите его по нескольким файлам:
main.tf: вызывает модули, локальные файлы и источники данных для создания всех ресурсов.
variables.tf: содержит объявления переменных, используемых в main.tf. Чтобы улучшить читаемость кода, размещайте обязательные переменные вверху, а необязательные — внизу, разделяя их строкой комментария;
outputs.tf: содержит выходные данные ресурсов, созданных в main.tf;
versions.tf: содержит требования к версиям Terraform и поставщиков;
data.tf: содержит импорт ресурсов;
resource.tf: содержит объявление конкретного ресурса;
terraform.tfvars: содержит значения переменных. Нигде не должен использоваться.

2. Упорядочьте ключи в блоке переменных variables.tf следующим образом: description, type, default, validation.

3. Используйте динамические блоки. Они позволяют создавать конфигурации с более высокой степенью гибкости и автоматизации. Их используют для генерирования повторяющихся блоков кода на основе входных данных, что упрощает управление инфраструктурой и уменьшает объём дублирующегося кода.

4. Старайтесь делать ваши модули ресурсов максимально простыми.

5. Указывайте версии ваших модулей, иначе вы можете столкнуться с неожиданными проблемами при очередном развертывании. Для обновления ваших модулей используйте семантическое версионирование.

6. Если ваши модули тесно связаны — объедините их в один. Такие модули можно хранить в одном репозитории и использовать их в качестве подмодулей. Так вы сможете версионировать их как единое целое, и управлять ими станет проще.

7. Используйте map вместо list для описания группы объектов. Если требуется создать группу идентичных объектов, то лучше использовать map, так ресурсы будут обновляться. При использовании list ресурсы пересоздаются. Для некоторых сценариев это критично.

#bestpractices #devops #terraform

DevOps FM

04 Oct, 10:50


🍜 Далее на канале DevOps FM — кулинарная программа

Завершилась конференция Kernel Recipes 2024, посвященная последним разработкам в области ядра Linux, оптимизации его производительности и решениям нестандартных проблем.

📱 На этой неделе все 20 выступлений были опубликованы на YouTube. Разбирайте, пока горячие.

Желаем всем приятного просмотра и хороших выходных!

#linux #kernel

DevOps FM

02 Oct, 14:20


Кому: подписчики DevOps FM
Тема: средовый дайджест


📩 2 октября празднуется день рождения электронной почты. Именно в этот день в 1971 году инженер Рэй Томлинсон отправил первое в истории человечества сообщение по e-mail. Пс-с-с: у нас есть своя рассылка.

⚫️ Зарелизили новую стабильную ветку PostgreSQL 17.

Обновления для этой версии будут выходить в течение пяти лет, вплоть до ноября 2029 года. Из тех, что имеются сейчас:

• ускорили выполнение операции VACUUM и сократили потребление совместно используемых ресурсов благодаря новой структуре данных;
• добавили утилиту pg_createsubscriber, которая преобразует физическую реплику в новую логическую;
• обновили pg_upgrade: теперь она сохраняет слоты репликации как у издателей, так и у пользователей.

Посмотреть все нововведения можно тут.

Кстати, поддержка ветки PostgreSQL 12 будет прекращена 14 ноября.

🟡 Ещё один релиз — MongoDB 8.0. Благодаря архитектурным улучшениям эта версия работает более чем на 30% быстрее предыдущих. Ещё появились новые варианты использования зашифрованных данных. Подробности — по ссылке.

⚫️ На InfoQ рассказали, как минимизировать задержку и стоимость в распределённых системах. Если очень коротко: вам поможет маршрутизация с учётом зоны.

🟡 На Dev разобрали ротацию резервных копий с помощью nxs-backup.

#devops #PostgreSQL #MongoDB #nxsbackup

DevOps FM

30 Sep, 10:31


👩‍💻 tmux — это консольная утилита-мультиплексор, которая представляет собой современную копию GNU Screen под лицензией BSD. Первый выпуск tmux состоялся аж в 2007 году, а последнюю версию 3.4 выпустили в феврале 2024.

Статья Петра на Medium поможет познакомиться с tmux поближе. Вы узнаете о главных плюсах этого терминального мультиплексора и получите парочку советов по работе с ним.

#devops #tmux

DevOps FM

27 Sep, 10:23


📝 Спускаясь с облаков в ад: развёртывание Kubernetes на Astra Linux. Часть 1

В своей новой серии статей Пётр, DevOps-инженер компании Nixys, поделится интересным кейсом. Он расскажет, как его команда настроила автоматическое развёртывание ванильного Kubernetes на Astra Linux через связку Kubespray и Helm.

Из первой части вы узнаете:
• какие особенности Astra Linux могут обернуться проблемами и как их решить;
• какие нюансы установки и работы с Kubespray нужно учесть в рамках этой задачи;
• как заставить Kubespray думать, что Astra Linux — это Debian.

#Хабр #статья_Nixys #kubernetes

DevOps FM

25 Sep, 13:58


Жабы закончились. Остался дайджест интересных новостей за последнюю неделю.

🟡 Вышел релиз OpenSSH 9.9. Из обновлений: теперь во время компиляции ключи DSA отключены по умолчанию, а в ssh, sshd и ssh-agent добавлена защита от оседания закрытых ключей в core-файлах, которая работает в Linux, OpenBSD и FreeBSD. Ещё добавили поддержку нового постквантового стандарта криптографии от NIST (Национального института стандартов и технологий США). Посмотреть все изменения можно по ссылке.

⚫️ У OpenSearch нашли проблему в совместимости с Google Chrome v.129 : при развертывании панели Discover вместо значений отображается красная маска. Будьте аккуратны. Временное решение проблемы – здесь.

🟡 Команда Docker приглашает разработчиков принять участие в уже традиционном опросе Docker State of Application Development, на результаты которого она будет ориентироваться при дальнейшей разработке продуктов. Опрос займет 20-30 минут, дедлайн — 20 ноября. Кстати, среди участников проведут розыгрыш макбука, игровых приставок и не только.

⚫️ Yandex Cloud объявил о запуске нескольких новых сервисов:
- Yandex BareMetal (аренда выделенных физических серверов);
- Security Deck (сервис для комплексного управления безопасностью компаний в облаке);
- Serverless Integrations (сервис для более быстрой разработки продуктов в облаке).

🟡 На Medium рассказали о сложностях и проблемах согласованности данных.

#devops #opensearch #openssh #docker #yandex

DevOps FM

23 Sep, 09:25


👩‍💻 Всем DevOps! Публикуем подборку лучших практик по безопасности Kubernetes.

1. Изолируйте etcd от кластера файерволом и зашифруйте.

2. По возможности храните секреты не в переменной среды, а в виде вольюмов и файлов. В качестве альтернативы можно использовать secretKeyRef, чтобы минимизировать риск атаки.

3. Отключите NET_ RAW в определении securityContext-пода. В руках злоумышленника NET_RAW может стать причиной широкого спектра сетевых атак внутри кластера.

4. Избегайте совместного использования IPC или сетевого пространства имен хоста, чтобы не открывать доступ к общей информации и не нарушать сетевую изоляцию.

5. Настройте каждый узел на ingress controller, установив его на приём соединений только от главного узла через указанный порт с помощью списка контроля доступа (ACL).

6. Заблокируйте SSH, чтобы ограничить доступ к ресурсам Kubernetes. Используйте kubectl exec, чтобы получать доступ к контейнеру, не получая доступ к хосту.

#devops #kubernetes #bestpractices

DevOps FM

20 Sep, 09:59


🎉 Сегодня 20 сентября, а это значит, что пора подвести итоги нашего конкурса.

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

🎁 Участник № 134: выиграл сертификат на 4000 рублей на книги издательства Питер;
🎁 Участник № 92: получит фирменную футболку, которую мы отправим по почте.

Поздравляем! В ближайшее время мы свяжемся с вами по указанным почтам.

Всем большое спасибо за участие! Это далеко не последний конкурс. Ну а пока — будем делать DevOps FM лучше 😎

Всем хороших выходных и спокойных рабочих смен!

DevOps FM

18 Sep, 14:08


Публикуем еженедельный дайджест важных релизов и новостей.

🟡 Зарелизили ядро Linux 6.11. Эта версия включает более 15 тысяч исправлений от 2078 разработчиков.

Что нового? Например, теперь можно изменять исполняемые файлы, связанные с работающими процессами (снятие этого ограничения аргументировали тем, что всё равно известны способы обходить его). Ещё добавили новые операции для bind() и listen() в io_uring, реализовали возможность разработки драйверов блоков на языке Rust и удалили механизм fake EFI memory map на этапе загрузки.

Посмотреть все обновления вы можете по этой ссылке. А по этой — скачать новую версию.

⚫️ Ещё один интересный релиз — CRI-O 1.31.

Начиная с этой версии, CRI-O по умолчанию использует более эффективный crun вместо runc. Ещё добавлена поддержка fine-grained SupplementalGroups и Cosign, CLI-инструмента от Sigstore.

🟡 Также выпустили релиз инструмента nxs-data-anonymizer v1.11.0. Из обновлений:

• Добавили генерацию значений для типизированных данных. Теперь, когда политика безопасности столбца настроена на рандомизацию значений ячеек, эти значения автоматически генерируются в соответствии с их типами данных. Ранее все типы обрабатывались одинаково, но с этим обновлением добавили классификацию (например, для столбцов MySQL с типами date и datetime).
• Исправили баг, в котором столбцы в CREATE TABLE, описанные только типом данных (например, 'body_summary' longtext), обрабатывались неверно.

⚫️ Linux Foundation объявила о создании OpenSearch Software Foundation. С запуском этой организации AWS передала OpenSearch, форк Elasticsearch, под крыло Linux Foundation. В рамках новой структуры Linux Foundation будет курировать дальнейшую работу над этим проектом.

#devops #linux #релиз #crio

DevOps FM

17 Sep, 10:26


👩‍💻 Начиная с версии 17.5 Docker стал поддерживать multi-stage builds. Этот метод помог разделить сложные технические сборки на несколько этапов, каждый из которых выполняет определённую задачу. Благодаря этому важному обновлению стало легче уменьшать поверхность атаки и размер образов, а также эффективнее использовать кэш Docker.

На Blacksmith вышло понятное руководство по многоэтапным сборкам Docker. В статье вы найдете рекомендации по подбору базового образа для каждого этапа сборки и оптимизации порядка этапов.

#docker #dockerfile #bestpractices

DevOps FM

13 Sep, 11:04


📌 Опубликована полная версия отчета состояния DevOps 2024!

В этом году наш DevOps FM оказал поддержку исследованию, включающему семь ключевых секций, где вы найдете актуальные данные по:

- Используемым в индустрии DevOps инструментам;
- Ситуации на рынке труда DevOps-инженеров;
- Изменениям ключевых целей компаний в 2024 году.

Ознакомиться с отчётом, чтобы узнать о последних тенденциях в DevOps-индустрии, можно здесь!

#партнёрский_пост

DevOps FM

11 Sep, 12:04


Лето закончилось, а новостные среды — продолжаются

🟡 Почта России запускает масштабное импортозамещение ПО

4 сентября Почта России объявила о партнерстве с «Базальт СПО», разработчиком российской ОС “Альт”. Сегодня компания представила план проекта о полном переходе 130 тысяч рабочих мест с продуктов Microsoft на дистрибутив ALT Linux.

Реализация решения займет 3 года, в проекте так же учтены обучающие курсы для сотрудников разных уровней. Подробности и планы проекта можно найти тут.

⚫️ Создатели Golang открыли опрос для разработчиков

На официальном сайте появилась возможность пройти опрос и оставить свое мнение о языке Go, его экосистеме, и ваших желаниях. Опрос будет открыт в течение двух недель.

Желающим поучаствовать в развитии — сюда.

🟡 Не так давно была представлена новая функция Redis для автоматического удаления устаревших хеш-полей. Эта фича может существенно снизить нагрузку на оперативную память и повысить производительность, что особенно важно для высоконагруженных систем.
В блоге подробно рассказали про возможности данного нововведения, тестирования и примеры использования.

#devops #golang #redis

DevOps FM

09 Sep, 12:04


👩‍💻 Всем DevOps! В этот понедельник публикуем рекомендации по именованию в Terraform.

1) Для разделения нескольких слов используйте нижнее подчеркивание вместо дефиса.

2) Используйте только буквы в нижнем регистре и цифры.

3) В качестве имен всегда используйте существительные в единственном числе.

4) Не повторяйте тип ресурса в названии ресурса (ни частично, ни полностью).

Вместо:
resource "aws_route_table" "private-aws-route-table" {}

Лучше пишите:
resource "aws_route_table" "private" {}

5) Если вы не можете подобрать ресурсу общее описательное имя, тогда именуйте его как this или main

6) Давайте ресурсам логичные и осмысленные имена. 

7) Имя вывода должно описывать свойство, которое он содержит. Лучшей структурой для него является эта: {name}_{type}_{attribute}.

Напоминаем, что вы можете забрать файлик с best practices по инструментам DevOps и принять участие в конкурсе вот по этой ссылочке.

🎁 Из призов: наша фирменная футболка и сертификат на 4000 рублей на книги от издательства Питер. Итоги подведём 20 сентября.

#devops #terraform