Библиотека девопса | 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
#вопросы_с_собеседования

Почему latency до 8.8.8.8 всегда низкий?

8.8.8.8 это не один хост. Это anycast адрес, который перенаправляет на ближайший хост, которые по всему миру.
👍12🥰4
#memes

Про курьеров и программистов уже слышали многие. Вот ещё данные из того же исследования.
21👍5🥰1
🤔 Очередной #дайджест для DevOps-ов

🛠️ D-Bus overview — о том, что такое d-bus, и о том, как эта система взаимодействия процессов работает

🛠️ dockly — TUI для управления docker контейнерами прямо из командной строки

🛠️ pghero — дашборд для PostgreSQL, умеет показывать общее состояние сервера, запросы и соединения к нему

🛠️ atuin — инструмент для синхронизации истории команд между системами

🛠️ Как обслуживать миллионы запросов в месяц с помощью VPS объемом 2 ГБ — история о размещении большого ресурса на простом виртуальном сервере без применения 100500 слоёв современных облачных технологий
🔥8🥰7🤩5👍4😁4
Стратегии развертывания Kubernetes

💩 Сине-зеленое развертывание (Blue/Green)

Эта стратегия базируется на двух продуктивных средах: «синяя» — там, где живут старые версии приложения, и «зеленая» — зона, где мы запускаем новую версию приложения.

💩 Shadow

Теневое развертывание заключается в выпуске версии 1.1 наряду с версией 1.0, перехвате входящих запросов с первой версии и отправке на вторую без влияния на трафик. Это особенно полезно для тестирования production нагрузки на новую функцию.

💩 Постепенное развертывание (Rolling)

Все инстансы приложения будут последовательно обновляться до новой версии.

💩 A/B testing

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

💩 Повторное создание (Recreate)

Сперва удаление текущей версии приложения, затем развертывание новой версии.

💩 Канареечное развертывание (Canary)

«Канареечный» деплой схож с зелено-синей стратегией. Часть текущих инстансов приложения заменяется новой версией, на которую переключается часть трафика.

Каждая стратегия предлагает свой подход к управлению обновлениями.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133🔥2🤔2🥰1
😵☠️ Смерть от тысячи микросервисов

Автор рассказывает, как он стал вместо решения текущих задач, тратить кучи денег на решение проблем, которых нет


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

#почитать
👍8🔥1
Тренировки по DevOps — плейлист на YouTube для новичков. Лекторы рассказывают теорию и показывают, что делают на практике.

Лекция 1: Кто такой DevOps (+ разбор домашнего задания)
Лекция 2: Облако. Кто виноват и что делать? (+ разбор дз)
Лекция 3: Процессы Linux (+ разбор дз)
Лекция 4: Сети Часть 1. Коты и коробки (+ разбор дз)
Лекция 5: Linux: инструменты командной строки (+ разбор дз)
Лекция 6: Базы данных (+ разбор дз)
Лекция 7: Сети. Часть 2. Коробки и коты (+ разбор дз)
Лекция 8: Как запустить «облако»
🔥14🥰3👍1
Зачем делать touch, перед тем, как что-то записать в файл? Имеется в виду такая ситуация:

touch file.txt
vim file.txt
:w


Проще так:

vim file.txt
:w


Почему не делать такого?

dd if=/dev/zero of=newfile bs=1 count=0


Оно ведь тоже создает новый файл…

На самом деле правильного ответа нет. Единственно что нужно знать, это — используя touch вы всегда будете уверены, что сможете записать свои данные в файл.

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

Да и еще touch используется для обновления даты модификации. Например, вы редактировали конфиг nginx в прошлом году, но всем нужно показать что вчера, делаете touch nginx.conf и проставляется актуальная дата и время. И в bash скриптах можно использовать, если есть какая-то логика с lock файлами, таймштампами и т.п.

А как правильно создавать файлы? Правильный способ для создания файлов, это любая команда, которая использует системный вызов create или open (с флагом O_CREATE). Таких команд и программ масса.

Кстати есть еще такой древний строковый редактор, называется ed. Идет в коробке почти со всеми дистрибутивами. Этот редактор изначально требовал наличия файла перед его редактированием. И да, из этого редактора выйти намного сложнее чем из vim 😂. Попробуйте ради интереса.

А как вы создаете файлы?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18👏87🎉6😁5
🎉🎉 Релиз Grafana k6 v0.48.0

Многочисленные критические изменения, новая k6 new подкоманда для создания тестового сценария, новый k6/experimental/fs модуль для взаимодействия с файлами, поддержка регулирования ЦП и сети для модуля браузера k6 и многое другое.

Изучить

#новость
👍4🎉3🔥1
🤓🤓 Pure bash bible

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

Подробнее

#почитать
❤‍🔥23👍3🥰21
🤔 Очередной #дайджест для DevOps-ов

⏏️ Как сделать Kubernetes еще круче — о том, как повысить стабильность приложений в К8s кластерах с высокой критичностью для бизнеса

⏏️ Оптимизируем масштабируемость и экономическую эффективность Kubernetes с помощью Karpenter — узнаете обоснование и подход для повышения масштабируемости и эффективности кластера Kubernetes

⏏️ Оптимизация DevOps — как персональные стенды и Grafana улучшают разработку и мониторинг

⏏️ Развертывание веб-приложения на Docker Swarm — как запилить автоматизированное создание образа Docker для сайта

⏏️ Пишем оператор Kubernetes: руководство для начинающих — как создать кастомный оператор ConfigmapSync для синхронизации Configmap между пространствами имен
7👏6😁5🎉5🤩5
Что такое CBD?

Компонентно-ориентированное программирование (CBD) представляет собой инновационный подход к разработке продукта. Вместо традиционного создания продукта с нуля, разработчики используют CBD для поиска уже существующих, проверенных и качественных компонентов, которые затем комбинируются для создания нового и оригинального продукта. Этот подход позволяет улучшить качество и надежность продукта, а также упростить его сопровождение и обновление, благодаря использованию уже проверенных компонентов. CBD открывает новые возможности для разработчиков, позволяя им быстрее и эффективнее создавать продукты, используя уже существующие ресурсы. нового и оригинального продукта. Этот процесс проходит вместо обычного для многих процесса создания продукта с нуля.
3🥰1
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

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

Чем раньше команда задумается о проблеме безопасности, тем лучше. В этой статье обсуждается, какие проблемы ИБ есть в стандартном контейнерном приложении и безопасность использования Docker, Kubernetes и Terraform, а также, как можно встроить проверки в стандартный пайплайн деплоя.

Будет интересно DevOps-инженерам, специалистам по безопасности, владельцам продуктов и всем, кто хочет:

🔹 научиться строить безопасный деплой
🔹 автоматизировать проверки безопасности
🔹 понимать проблемы и обсуждать их в команде

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

#туториал
2👏1
Стоит задача: провести ТО на сервере и всех выгнать с него.

Создаем пустой файл /etc/nologin. Теперь только root сможет авторизоваться по ssh. Предварительно нужно разрешить вообще заходить под root’ом.

Теперь нужно всех уведомить, кто в данный момент что-то делает в терминале.

Для этого воспользуемся утилитой wall.

Wall — утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей.

Запускаем команду:

wall "... текст сообщения ..."


Все кто был подключен к серверу, получают сообщение:

Broadcast message from root@dev (pts/0) (текущая дата/время):
... текст сообщения ...


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

В указанное время запускаем ассасина:

pkill -9 -u `who | awk '{print $1}'| grep -v root|head -1


Выгнали всех с сервера, кроме root’а и проводим технические работы, удаляем /etc/nologin.

Wall можно заменить например на такое:

echo "какой-то текст" | write user


Но тут сообщение уйдет конкретному пользователю user. Конечно, если по какой-то причине, в системе отсутствует wall, можно и через цикл выгрести всех юзеров и через echo отправить им уведомление.

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

Или так:

echo "какой-то текст" > /dev/pts/1
👍25👏3🎉3🔥2🥰2
#memes

Вот как выглядел один байт оперативной памяти в 1946 году
😁10👍8🤔41👾1
🤔 Как использовать OpenPubkey для SSH без SSH-ключей

Что, если бы вы могли подключаться по SSH, не беспокоясь об SSH-ключах? Без необходимости думать о том, что SSH-ключи могут быть потеряны, украдены, переданы другим пользователям, заменены или забыты? В этой статье повествуется, как подключиться по SSH к удаленному Docker-у, используя только почтовую учетку или единый вход (SSO).

Продолжение тут

#туториал
👍11🔥111
#вопросы_с_собеседования

Для решения каких задач применяется docker-compose?

Docker Compose — это инструментальное средство, входящее в состав Docker. Оно предназначено для решения задач, связанных с развёртыванием проектов. Вы передаёте файл с инструкциями для docker-compose, настроечными файлами, и докер на месте собирает из этого нужную вам комбинацию контейнеров, подтягивает образы нужных версий, пробрасывает в них волюмы с данными, поднимает между ними локальные сети и настраивает порты обмена.
👍91
GQL

GQL — это язык запросов с синтаксисом, очень похожим на SQL, с крошечным движком для выполнения запросов к файлам .git вместо файлов базы данных. Движок выполняет запрос «на лету» без необходимости создавать файлы базы данных или конвертировать файлы .git в любой другой формат.

Установка из менеджеров пакетов

Cargo.io
cargo install gitql

Widget в Windows
winget install gitql

Scoop в Windows
scoop install git ql

Полная документация здесь
❤‍🔥18👍31🥰1😁1
🤔 Очередной #дайджест для DevOps-ов

🔹 Автоматические бэкапы БД PostgreSQL по расписанию — скрипт для создания бэкапов БД PostgreSQL за определенный период, как запустить с помощью расписания crontab и настроить синхронизацию папки с бэкапами с облаком Yandex Disk

🔹 Трассировка OpenTelemetry с помощью tracepusher — гайд по открытому стандарту, который позволяет вести журналы, метрики и распределенные трассировки

🔹 Инструкция: как поднять GitLab CI/CD на GoLang-проекте — подробный и понятный туториал с использованием докера и кучи конфигов

🔹 Руководство по построению стандартного CI Pipeline с помощью Jenkins — использование HTTP-сервера на Python с удаленным репозиторием, конвейером Jenkins и тестированием на SonarQube

🔹 Пять инструментов для вашего кластера K8s — рассмотрение таких тулз, как Prometheus, Cyclops, Keda, Karpenter и Velero
👍5🎉54🥰4👏4