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

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

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

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

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
🏘️ 🌰 Это база: нюансы работы с Redis

Redis — это база данных, которая размещается в памяти и хорошо подходит для следующих целей:

♦️ Кэширование данных: этот сценарий подходит когда есть ключ, по которому вы можете прочитать или записать кэш. Частый случай: использование Redis как кэша перед другой базой-крепышом, вроде MySQL.

♦️ Хранение сессий: этот сценарий подходит при росте проекта, когда мы получаем несколько инстансов приложения на разных машинах за балансировщиком и возникает потребность в хранении пользовательских сессий в хранилище, которое доступно для каждого сервера приложения.

♦️ Pub/Sub: помимо хранилища данных Redis можно использовать как брокер сообщений. В этом случае издатель может опубликовать сообщения в именованном канале для любого числа подписчиков. Когда клиент публикует сообщение в канале, Redis доставляет это сообщение всем клиентам, подписанным на этот канал, что обеспечивает обмен информацией между отдельными компонентами приложения в реальном времени.

Остальная занимательная часть вот тут

#туториал
👍26🔥3
🐶🐕 KubePug

👉 Загружает сгенерированный файл data.json, содержащий информацию об устаревании API Kubernetes
👉 Проверяет текущий кластер Kubernetes или входные файлы, проверяя, существуют ли объекты в этих устаревших версиях API, позволяя пользователю проверить перед переносом

Особенности

🔹 Может запускаться в кластере Kubernetes, используя kubeconfig или текущий кластер
🔹 Может выполняться с другим набором манифестов/файлов
🔹 Позволяет указать целевую версию Kubernetes, подлежащую проверке
🔹 Предоставляет заменяющий API, который следует использовать
🔹 Сообщает версии, что API устарел или удален, в зависимости от версии целевого кластера

Как использовать

Запустите kubectl krew install deprecations

Как использовать с Helm

Если хотите проверить сгенерированные манифесты с помощью Helm, можно запустить так:

helm template -f values.yaml .0 | kubepug --k8s-version v1.22.0 --input-file=-


Измените аргументы в kubepug (и шаблоне Helm) по своему желанию
30👍5🔥1👏1
🔥🔥 Фаервол веб-приложений для Nginx

Брандмауэр веб-приложений (WAF) — это приложение, которое отслеживает сетевой трафик на прикладном уровне.

OSI (Open Systems Interconnection) — одна из наиболее часто упоминаемых структур сетевого трафика. Когда пакет пересекает уровень 6 (представление) и перемещается на уровень 7 (прикладной), он подвергается операциям расшифровки/декодирования декодирования.

Каждая из этих операций может быть подвержена ошибочному декодированию и интерпретации, которые могут быть использованы для выхода из стандартного контекста приложения. Инъекции — это всего лишь один тип таких уязвимостей, и долгое время они были причиной беспокойства номер один, особенно потому, что традиционные устройства IDS/IPS не могут справиться с этими угрозами.

Продолжение здесь
2👍2
Очередной #дайджест инструментов для проверки безопасности образов Docker

🔰 Clair — предназначен для интеграции с системами оркестровки контейнеров, такими как Kubernetes.

🔰 Trivy — поддерживает сканирование изображений на наличие уязвимостей в пакетах ОС и зависимостях приложений.

🔰 Anchore — может быть интегрирован в конвейеры CI/CD для обеспечения соблюдения политик безопасности на ранних этапах процесса разработки.

🔰 Dagda — предоставляет как интерфейс командной строки, так и REST API для интеграции в конвейеры CI/CD.

🔰 Snyk — его можно использовать для поиска уязвимостей в образах Docker и отслеживания их на предмет новых проблем.

🔰 Docker Bench Security — сам по себе это не сканер уязвимостей, но он помогает обеспечить безопасную настройку сред Docker.
4🔥1🥰1👏1
Сколько возможно хостов в сети с маской 255.255.248.0
Anonymous Quiz
16%
510
12%
126
51%
2046
14%
32766
8%
8190
👏6😁6🔥1🤔1
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2
kubectx

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

# switch to another cluster that's in kubeconfig
$ kubectx minikube
Switched to context «minikube».

# switch back to previous cluster
$ kubectx -
Switched to context «oregon».

# rename context
$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context «gke_ahmetb_europe-west1-b_dublin» renamed to «dublin».

# change the active namespace on kubectl
$ kubens kube-system
Context «test» set.
Active namespace is «kube-system».

# go back to the previous namespace
$ kubens -
Context «test» set.
Active namespace is «default».


Установка

Можно установить с помощью Krew:

kubectl krew install ctx
kubectl krew install ns


После установки инструменты будут доступны в виде kubectl ctx и kubectl ns.

Еще можно установить так:

brew install kubectx


и так:

sudo apt install kubectx
👍8🔥1
Как скрыть процессы в Linux от других пользователей.

Если запустить pstree, ps, htop можно увидеть процессы не только свои, но также системные и пользовательские. В левой колонке будут имена пользователей.

Чтобы скрыть свои процессы от других пользователей, нужно перемонтировать /proc с опцией hidepid.

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


Параметр hidepid определяет какую информацию о процессах мы ограничим для пользователей, которые не являются владельцами этих процессов.

Параметры которые можно задать:

hidepid=0
- Включена по умолчанию, все видят всё, полный доступ к /proc/PID/.

hidepid=1
- Разрешает обращаться к информации только о своих процессов. Часть файлов в каталоге /proc/PID/ защищена.

hidepid=2 - Это тот же самый hidepid=1 + всё в /proc/PID будет невидимо для других пользователей.

Запускаем от рута:

mount -o remount,rw,nosuid,nodev,noexec,relatime,hidepid=2 /proc

Теперь снова запускаем от обычного пользователя htop и наблюдаем, что выборка процессов пропала, и осталось +- 2, bash и htop.

Естественно после ребута сервера, все это пропадет. Чтобы этого не произошло — монтируем /proc в fstab.

Вставляем в /etc/fstab

proc /proc proc defaults,nosuid, nodev, noexec,relatime,hidepid=2 0 0

Встречаются приложения которые могут отвалиться. Для этого нужно зафиксить маунт с опцией gid=VALUE.

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

proc /proc proc defaults, hidepid=2, gid=bashdays 0 0

Добавляем пользователя от имени которого будет работать приложение/демон в эту группу и проверяем — если всё сделано верно, то приложение заработает как обычно.
🎉26❤‍🔥4👍4👏1
#memes

Пятница близко, запоминаем идею
😁212👍2🔥2
🎢💈 Автоматическая генерация CI/CD пайплайна для развёртывания инфраструктуры

Статья от DevOps-инженера о том, как они создали генератор джоб в GitLab CI/CD и навсегда забыли о ручном написании пайплайнов для развёртывания элементов инфраструктуры.

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

#туториал
🥱5👏3
Что будете делать если у команды chmod убрали права на исполнение?

💩 Используем утилиту setfacl. По умолчанию её может не быть в системе.
setfacl -m u::rwx,g::rx,o::x /usr/bin/chmod


💩 Можно запустить утилиту chmod, передав её явно динамическому компоновщику. В контексте данной заметки считайте компоновщик интерпретатором для программы chmod. В разных дистрибутивах он может иметь разное название и расположение. Пример для Debian 11:

/usr/lib64/ld-linux-x86-64.so.2 /usr/bin/chmod +x /usr/bin/chmod**


💩 Можно скопировать права с любого исполняемого файла и записать содержимое утилиты chmod в этот файл. Получается рабочая копия chmod. Создаём пустой файл с правами утилиты ls.

cp --attributes-only /usr/bin/ls ./new_chmod


Копируем содержимое утилиты chmod в созданный файл:

cat /usr/bin/chmod > ./new_chmod


Можно использовать:

/new_chmod +x /usr/bin/chmod


💩 Почти то же самое что и предыдущий вариант только проще:

install -m 755 /usr/bin/chmod ./new_chmod


или так:

rsync --chmod=ugo+x /usr/bin/chmod ./new_chmod


💩 Если умеете программировать, то, пример с Python:

python -c "import os;os.chmod('/usr/bin/chmod', 0755)"
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥8🤩8😁6👏4
🐳 10 практик безопасности Docker

💈 Предпочитайте минимальные базовые образы

💈 Выбирайте наименее привилегированного пользователя. Просто так root не нужен.

💈 Подписывайте и проверяйте образы для предотвращения MITM-атак

💈 Поиск, исправление и мониторинг уязвимостей с открытым исходным кодом

💈 Не допускайте утечки конфиденциальной информации. Иногда при создании приложения внутри образа Docker вам нужны секреты, такие как закрытый ключ SSH, чтобы извлекать код из частного репозитория, или вам нужны токены для установки частных пакетов. Если вы копируете их в промежуточный контейнер Docker, они кэшируются на том уровне, на который они были добавлены, даже если вы удалите их позже. Эти токены и ключи должны храниться за пределами Dockerfile.

💈 Используйте фиксированные теги для неизменности

💈 Используйте COPY вместо ADD (рекурсивно копирует локальные файлы, неявно создает каталог назначения)

💈 Используйте метки метаданных

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

💈 Используйте линтер, чтобы избежать распространенных ошибок и разработать рекомендации по наилучшей практике, которым инженеры могут следовать автоматически.

Вот тут подробно описаны все нюансы

#гайд
❤‍🔥21👍7🥰2
This media is not supported in the widget
VIEW IN TELEGRAM
🎉6🔥3👍21🤔1
🤔 Очередной #дайджест для DevOps-ов

🪀 GitOps с расширенным управлением кластерами для Kubernetes — как управлять несколькими кластерами с помощью Argo CD и Advanced Cluster Management for Kubernetes

🪀 Чем так крут язык Lua — как работает Lua, почему он такой быстрый и как работает трассирующий JIT-компилятор в этом языке

🪀 ContainerSSH — SSH-сервер, запускающий контейнеры в Kubernetes и Docker

🪀 Контейнеры и Mikrotik — чем еще можно нагрузить ваш девайс

🪀 Fast-Kubernetes — в репозитории подробно рассматриваются объекты и компоненты Kubernetes, а также возможные сценарии использования
🎉26🔥19👍21
💩🤨 Как устранять неполадки в приложениях Kubernetes

Материал основан на опыте работы автора с этой технологией с 2017 года. Существует множество сторонних инструментов и методик, но в статье используются те, которые можно найти практически на каждом компьютере, или на CLI, которые можно быстро загрузить для MacOS, Windows или Linux.

📌 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
27🔥3👍1🥱1
👀 Ответьте на 3 вопроса, чтобы получить вводные занятия, познакомиться с преподавателями и форматом обучения, можно здесь – https://proglib.io/w/1aa5ed89

Вас ждут:

1. Лекции «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов

2. Лекции «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ

3. Практические задания после лекций

4. Ссылки на дополнительные материалы для самостоятельного изучения

⚡️Переходите и начинайте учиться уже сегодня – https://proglib.io/w/1aa5ed89
👍2❤‍🔥1