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

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

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

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

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
На каком языке программирования вы пишете больше всего?
Anonymous Poll
41%
Python
11%
Go
7%
Java
3%
JavaScript
1%
TypeScript
3%
C/C++
6%
С#
0%
Kotlin/Swift
3%
PHP
23%
Другой
💪🤓 Поднимаем домашний сервер со своим доменом

Тема не претендует на звание открытие месяца, но автор очень доступным языком все толкует, что начинающим будет весьма полезно узнать про DNS, OpenVPN, сети, маршрутизацию, Linux и прочие околотематические штуки. Приятного просмотра 😉

Смотреть видео

#гайд
❤‍🔥19👍8🔥3😁1
👀 6 способов привлечь внимание работодателя

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

1️⃣ Оформить профиль на Линкедин, Гитхаб и Стековерфлоу
2️⃣ Участвовать в хакатонах
3️⃣ Начать вести свой блог об IT
4️⃣ Стать участником конференций от IT-гигантов
5️⃣ Создать канал на YouTube и рассказывайте об IT
6️⃣ Написать в личку

👉 Подробнее о каждом пункте читайте в статье
5🥱1
#вопросы_с_собеседования

Как узнать, какими процессами используется раздел?

lsof | grep /media/whatever
fuser -mv /path/to/mountpoint
👍9👏2
💪🔥 От AI к устойчивому развитию: почему новейшие центры обработки данных используют сеть 400G

400G — относительно новая технология, и она не получила такого широкого распространения в отрасли, как 100G, хотя ситуация начинает меняться. В этой статье обсуждается, почему решено начать использование 400G, требования к дизайну и архитектурные детали ЦОД 400G, а также затронутся некоторые проблемы, с которыми столкнулись первые пользователи, и извлеченных уроков. В заключение автор расскажет о планах на будущее по продолжению разработки с использованием новой технологии.

Читать статью

#почитать
👍41
🤔 Очередной #дайджест статей и инструментов по DevOps

✔️ Контейнеры: Rootful, Rootless, Privileged and Super Privileged — различные типы, как они создают свою изоляцию, возможностях ядра, оверлейных файловых системах, seccomp и SELinux

✔️ System Design 101 — рассматриваются протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование и прочее

✔️ Затраты на микросервисы — как правильно начать создавать микросервис, что учесть и как действовать

✔️ Prometheus и централизованное хранилище — когда вам это нужно, как это работает и что такое Mimir

✔️ Руководство по тестированию в Terraform — поддержание порядка в тестах, валидациях, проверках и политиках
👍183🔥1
🤔✏️ Как надо (и как не надо) разрабатывать REST API

Используйте существительные во множественном числе для обозначения коллекций
Не добавляйте ненужные сегменты пути
Не добавляйте .json или другие расширения к URL-адресу
Не возвращайте массивы в качестве ответов верхнего уровня
Не возвращайте map-структуры
Используйте строки для всех идентификаторов
Применяйте префикс в своих идентификаторах
Не используйте 404 для обозначения «не найдено»
Будьте последовательными
Используйте структурированный формат ошибок

Подробное объяснение с примерами кода тут

#туториал
🔥18👍51
iptables-tracer

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

$ iptables-tracer -f "-s 192.0.2.1 -p tcp --dport 443" -t 30s
14:42:00.284882 raw PREROUTING 0x00000000 IP 192.0.2.1.36028 > 203.0.113.41.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:]
14:42:00.287255 mangle PREROUTING 0x00008000 IP 192.0.2.1.36028 > 203.0.113.41.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:]
14:42:00.288966 nat PREROUTING 0x00008000 IP 192.0.2.1.36028 > 203.0.113.41.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:]
14:42:00.290545 mangle FORWARD 0x00008000 IP 192.0.2.1.36028 > 198.51.100.8.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:eth1]
14:42:00.292123 filter FORWARD 0x00008002 IP 192.0.2.1.36028 > 198.51.100.8.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:eth1]
14:42:00.293164 mangle POSTROUTING 0x00008002 IP 192.0.2.1.36028 > 198.51.100.8.443: Flags [S], seq 3964691400, win 29200, length 0 [In: Out:eth1]
14:42:00.293780 nat POSTROUTING 0x00008002 IP 192.0.2.1.36028 > 198.51.100.8.443: Flags [S], seq 3964691400, win 29200, length 0 [In: Out:eth1]
👍11
Что означает 2>&1?

Это про стандартные потоки вывода. Они имеют файловые дескрипторы:

stdout — 1 (общий поток вывода)
stderr — 2 (поток с ошибками)

Получается (2>&1) = stderr > stdout — направляем поток с ошибками, в стандартный поток вывода. Ошибки будут выводиться на экран в терминале.

Логичным было бы сделать конструкцию: 2>1. Но увы, эта схема отработает другую логическую операцию. Поток с ошибками stderr будет писать все данные в файл, у которого название будет 1.

Для этого и требуется указать символ & (амперсанд) перед stdout. Это будет интерпретировано как файловый дескриптор, а не обычный файл.

А почему тогда не &2>&1 ?
Символ & интерпретируется как файловый дескриптор только в контексте перенаправления.

Операция command &2>&1 анализируется так: command & 2>&1 — команда command будет выполнятся в фоновом режиме. А затем начнет выполнятся команда 2 с перенаправлением на стандартный вывод stdout.

Есть альтернатива с оператором |&.

|&
это сокращенный вариант от 2>&1 |

Пример:

script.sh |& tee -a /var/log/script.log

Все что script.sh выведет в потоки stdout и stderr, будет перенаправлено в файл script.log.

В официальной документации можно подробнее изучить эту штуку.
👍28🔥1
#memes

Я на собеседовании
😁11
🧑‍✈️☸️ Kubernetes 1.27: политики pod topology теперь в бета-версии

Распространение Pod-топологии имеет параметр maxSkew, определяющий степень, в которой модули могут быть распределены неравномерно.

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

В версии 1.24 Kubernetes появился параметр minDomains для ограничений распространения Pod-топологии в качестве альфа-функции. С помощью параметра minDomains можно определить минимальное количество доменов.

Например, предположим, что есть 3 ноды с достаточной пропускной способностью, и созданный набор реплик имеет следующие topologySpreadConstraints в своем Pod-шаблоне.

...
topologySpreadConstraints:
- maxSkew: 1
minDomains: 5 # требуется как минимум 5 нодов (поскольку каждая нода имеет уникальное имя хоста).
whenUnsatisfiable: DoNotSchedule # minDomains действителен только при использовании DoNotSchedule.
topologyKey: kubernetes.io/hostname
labelSelector:
matchLabels:
foo: bar


Читать далее

#туториал
🔥3👍2
🔍Вопросы с собеседований и задачи по DevOps

У нас появились новые каналы по DevOps, в которых мы готовимся к собеседованиям и проверяем себя на практических задачках 🚀

Подписывайтесь:
👉Библиотека собеса по DevOps — тут мы готовимся к интервью
👉Библиотека задач по DevOps — тут решаем задачи, проходим тесты и изучаем код
Please open Telegram to view this post
VIEW IN TELEGRAM
6
🧑‍🎓🧑‍🎓 November 2023 FreeBSD Vendor Summit

В начале ноября состоялся ивент, предоставляющий коммерческим пользователям FreeBSD возможность встретиться лицом к лицу с разработчиками и участниками. Была крутая дискуссия по улучшению операционной системы. В программе были выступления от NetApp, Netflix, ARM и других компаний.

Записи видосов:

День 1
День 2

#видео
👍51
🤔 Очередной #дайджест инструментов и полезностей для DevOps

🎯 sshx — безопасный веб-терминал для совместной работы

🎯 eBPF: разблокировка ядра — документалка об истории появления eBPF

🎯 Ansible Semaphore — удобная веб-морда для работы с Ansible

🎯 ttop — инструмент мониторинга системы с историей, триггерами и TUI, похожим на top

🎯 grub2-themes — несколько прикольных тем для Grub2
🤩6👍5🔥4👏4😁4