#вопросы_с_собеседования
Почему latency до 8.8.8.8 всегда низкий?
8.8.8.8 это не один хост. Это anycast адрес, который перенаправляет на ближайший хост, которые по всему миру.
Почему latency до 8.8.8.8 всегда низкий?
👍12🥰4
🤔 Очередной #дайджест для DevOps-ов
🛠️ D-Bus overview — о том, что такое d-bus, и о том, как эта система взаимодействия процессов работает
🛠️ dockly — TUI для управления docker контейнерами прямо из командной строки
🛠️ pghero — дашборд для PostgreSQL, умеет показывать общее состояние сервера, запросы и соединения к нему
🛠️ atuin — инструмент для синхронизации истории команд между системами
🛠️ Как обслуживать миллионы запросов в месяц с помощью VPS объемом 2 ГБ — история о размещении большого ресурса на простом виртуальном сервере без применения 100500 слоёв современных облачных технологий
🛠️ 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)
«Канареечный» деплой схож с зелено-синей стратегией. Часть текущих инстансов приложения заменяется новой версией, на которую переключается часть трафика.
Каждая стратегия предлагает свой подход к управлению обновлениями.
Эта стратегия базируется на двух продуктивных средах: «синяя» — там, где живут старые версии приложения, и «зеленая» — зона, где мы запускаем новую версию приложения.
Теневое развертывание заключается в выпуске версии 1.1 наряду с версией 1.0, перехвате входящих запросов с первой версии и отправке на вторую без влияния на трафик. Это особенно полезно для тестирования production нагрузки на новую функцию.
Все инстансы приложения будут последовательно обновляться до новой версии.
Обычно это стратегия принятия бизнес-решений на основе статистики. Она может быть реализована путем добавления к Canary дополнительной функциональности при определенных условиях. Например, куки браузера, язык или параметры запроса. Вместо того, чтобы открыть доступ к новой функции всем пользователям, ее предлагают лишь ограниченной их части.
Сперва удаление текущей версии приложения, затем развертывание новой версии.
«Канареечный» деплой схож с зелено-синей стратегией. Часть текущих инстансов приложения заменяется новой версией, на которую переключается часть трафика.
Каждая стратегия предлагает свой подход к управлению обновлениями.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3🔥2🤔2🥰1
😵☠️ Смерть от тысячи микросервисов
Автор рассказывает, как он стал вместо решения текущих задач, тратить кучи денег на решение проблем, которых нет
Читать статью
#почитать
Автор рассказывает, как он стал вместо решения текущих задач, тратить кучи денег на решение проблем, которых нет
Читать статью
#почитать
👍8🔥1
Тренировки по DevOps — плейлист на YouTube для новичков. Лекторы рассказывают теорию и показывают, что делают на практике.
Лекция 1: Кто такой DevOps (+ разбор домашнего задания)
Лекция 2: Облако. Кто виноват и что делать? (+ разбор дз)
Лекция 3: Процессы Linux (+ разбор дз)
Лекция 4: Сети Часть 1. Коты и коробки (+ разбор дз)
Лекция 5: Linux: инструменты командной строки (+ разбор дз)
Лекция 6: Базы данных (+ разбор дз)
Лекция 7: Сети. Часть 2. Коробки и коты (+ разбор дз)
Лекция 8: Как запустить «облако»
Лекция 1: Кто такой DevOps (+ разбор домашнего задания)
Лекция 2: Облако. Кто виноват и что делать? (+ разбор дз)
Лекция 3: Процессы Linux (+ разбор дз)
Лекция 4: Сети Часть 1. Коты и коробки (+ разбор дз)
Лекция 5: Linux: инструменты командной строки (+ разбор дз)
Лекция 6: Базы данных (+ разбор дз)
Лекция 7: Сети. Часть 2. Коробки и коты (+ разбор дз)
Лекция 8: Как запустить «облако»
🔥14🥰3👍1
Зачем делать touch, перед тем, как что-то записать в файл? Имеется в виду такая ситуация:
Проще так:
Почему не делать такого?
Оно ведь тоже создает новый файл…
На самом деле правильного ответа нет. Единственно что нужно знать, это — используя touch вы всегда будете уверены, что сможете записать свои данные в файл.
Это быстрый способ выяснить, если ли права на запись, прежде чем начать редактирование.
Да и еще touch используется для обновления даты модификации. Например, вы редактировали конфиг nginx в прошлом году, но всем нужно показать что вчера, делаете touch nginx.conf и проставляется актуальная дата и время. И в bash скриптах можно использовать, если есть какая-то логика с lock файлами, таймштампами и т.п.
А как правильно создавать файлы? Правильный способ для создания файлов, это любая команда, которая использует системный вызов create или open (с флагом O_CREATE). Таких команд и программ масса.
Кстати есть еще такой древний строковый редактор, называется ed. Идет в коробке почти со всеми дистрибутивами. Этот редактор изначально требовал наличия файла перед его редактированием. И да, из этого редактора выйти намного сложнее чем из vim😂 . Попробуйте ради интереса.
А как вы создаете файлы?
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👏8❤7🎉6😁5
🤓🤓 Pure bash bible
Цель этого материала — задокументировать методы выполнения различных задач с использованием только встроенных функций bash. Использование фрагментов из этой библии может помочь удалить ненужные зависимости из скриптов и в большинстве случаев ускорить их выполнение.
Подробнее
#почитать
Цель этого материала — задокументировать методы выполнения различных задач с использованием только встроенных функций bash. Использование фрагментов из этой библии может помочь удалить ненужные зависимости из скриптов и в большинстве случаев ускорить их выполнение.
Подробнее
#почитать
❤🔥23👍3🥰2❤1
🤔 Очередной #дайджест для DevOps-ов
⏏️ Как сделать Kubernetes еще круче — о том, как повысить стабильность приложений в К8s кластерах с высокой критичностью для бизнеса
⏏️ Оптимизируем масштабируемость и экономическую эффективность Kubernetes с помощью Karpenter — узнаете обоснование и подход для повышения масштабируемости и эффективности кластера Kubernetes
⏏️ Оптимизация DevOps — как персональные стенды и Grafana улучшают разработку и мониторинг
⏏️ Развертывание веб-приложения на Docker Swarm — как запилить автоматизированное создание образа Docker для сайта
⏏️ Пишем оператор Kubernetes: руководство для начинающих — как создать кастомный оператор ConfigmapSync для синхронизации Configmap между пространствами имен
⏏️ Как сделать Kubernetes еще круче — о том, как повысить стабильность приложений в К8s кластерах с высокой критичностью для бизнеса
⏏️ Оптимизируем масштабируемость и экономическую эффективность Kubernetes с помощью Karpenter — узнаете обоснование и подход для повышения масштабируемости и эффективности кластера Kubernetes
⏏️ Оптимизация DevOps — как персональные стенды и Grafana улучшают разработку и мониторинг
⏏️ Развертывание веб-приложения на Docker Swarm — как запилить автоматизированное создание образа Docker для сайта
⏏️ Пишем оператор Kubernetes: руководство для начинающих — как создать кастомный оператор ConfigmapSync для синхронизации Configmap между пространствами имен
❤7👏6😁5🎉5🤩5
Forwarded from Библиотека собеса по DevOps | вопросы с собеседований
Что такое CBD?
Компонентно-ориентированное программирование (CBD) представляет собой инновационный подход к разработке продукта. Вместо традиционного создания продукта с нуля, разработчики используют CBD для поиска уже существующих, проверенных и качественных компонентов, которые затем комбинируются для создания нового и оригинального продукта. Этот подход позволяет улучшить качество и надежность продукта, а также упростить его сопровождение и обновление, благодаря использованию уже проверенных компонентов. CBD открывает новые возможности для разработчиков, позволяя им быстрее и эффективнее создавать продукты, используя уже существующие ресурсы. нового и оригинального продукта. Этот процесс проходит вместо обычного для многих процесса создания продукта с нуля.
Компонентно-ориентированное программирование (CBD) представляет собой инновационный подход к разработке продукта. Вместо традиционного создания продукта с нуля, разработчики используют CBD для поиска уже существующих, проверенных и качественных компонентов, которые затем комбинируются для создания нового и оригинального продукта. Этот подход позволяет улучшить качество и надежность продукта, а также упростить его сопровождение и обновление, благодаря использованию уже проверенных компонентов. CBD открывает новые возможности для разработчиков, позволяя им быстрее и эффективнее создавать продукты, используя уже существующие ресурсы. нового и оригинального продукта. Этот процесс проходит вместо обычного для многих процесса создания продукта с нуля.
❤3🥰1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2
💪💪 Современная безопасность контейнерных приложений
Чем раньше команда задумается о проблеме безопасности, тем лучше. В этой статье обсуждается, какие проблемы ИБ есть в стандартном контейнерном приложении и безопасность использования Docker, Kubernetes и Terraform, а также, как можно встроить проверки в стандартный пайплайн деплоя.
Будет интересно DevOps-инженерам, специалистам по безопасности, владельцам продуктов и всем, кто хочет:
🔹 научиться строить безопасный деплой
🔹 автоматизировать проверки безопасности
🔹 понимать проблемы и обсуждать их в команде
Читать статью
#туториал
Чем раньше команда задумается о проблеме безопасности, тем лучше. В этой статье обсуждается, какие проблемы ИБ есть в стандартном контейнерном приложении и безопасность использования Docker, Kubernetes и Terraform, а также, как можно встроить проверки в стандартный пайплайн деплоя.
Будет интересно DevOps-инженерам, специалистам по безопасности, владельцам продуктов и всем, кто хочет:
🔹 научиться строить безопасный деплой
🔹 автоматизировать проверки безопасности
🔹 понимать проблемы и обсуждать их в команде
Читать статью
#туториал
❤2👏1
Стоит задача: провести ТО на сервере и всех выгнать с него.
Создаем пустой файл /etc/nologin. Теперь только root сможет авторизоваться по ssh. Предварительно нужно разрешить вообще заходить под root’ом.
Теперь нужно всех уведомить, кто в данный момент что-то делает в терминале.
Для этого воспользуемся утилитой wall.
Wall — утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей.
Запускаем команду:
Все кто был подключен к серверу, получают сообщение:
И неважно что делает человек и где находится, сообщение появится у него на экране. Через wall можно спамить определенным группам пользователей.
В указанное время запускаем ассасина:
Выгнали всех с сервера, кроме root’а и проводим технические работы, удаляем /etc/nologin.
Wall можно заменить например на такое:
Но тут сообщение уйдет конкретному пользователю user. Конечно, если по какой-то причине, в системе отсутствует wall, можно и через цикл выгрести всех юзеров и через echo отправить им уведомление.
write - утилита, позволяющая отправить сообщение другому пользователю, который имеет сессию в этой же системе.
Или так:
Создаем пустой файл /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
🤔❓ Как использовать OpenPubkey для SSH без SSH-ключей
Что, если бы вы могли подключаться по SSH, не беспокоясь об SSH-ключах? Без необходимости думать о том, что SSH-ключи могут быть потеряны, украдены, переданы другим пользователям, заменены или забыты? В этой статье повествуется, как подключиться по SSH к удаленному Docker-у, используя только почтовую учетку или единый вход (SSO).
Продолжение тут
#туториал
Что, если бы вы могли подключаться по SSH, не беспокоясь об SSH-ключах? Без необходимости думать о том, что SSH-ключи могут быть потеряны, украдены, переданы другим пользователям, заменены или забыты? В этой статье повествуется, как подключиться по SSH к удаленному Docker-у, используя только почтовую учетку или единый вход (SSO).
Продолжение тут
#туториал
👍11🔥11❤1
#вопросы_с_собеседования
Для решения каких задач применяется docker-compose?
Docker Compose — это инструментальное средство, входящее в состав Docker. Оно предназначено для решения задач, связанных с развёртыванием проектов. Вы передаёте файл с инструкциями для docker-compose, настроечными файлами, и докер на месте собирает из этого нужную вам комбинацию контейнеров, подтягивает образы нужных версий, пробрасывает в них волюмы с данными, поднимает между ними локальные сети и настраивает порты обмена.
Для решения каких задач применяется docker-compose?
Docker Compose — это инструментальное средство, входящее в состав Docker. Оно предназначено для решения задач, связанных с развёртыванием проектов. Вы передаёте файл с инструкциями для docker-compose, настроечными файлами, и докер на месте собирает из этого нужную вам комбинацию контейнеров, подтягивает образы нужных версий, пробрасывает в них волюмы с данными, поднимает между ними локальные сети и настраивает порты обмена.
👍9❤1
GQL
GQL — это язык запросов с синтаксисом, очень похожим на SQL, с крошечным движком для выполнения запросов к файлам .git вместо файлов базы данных. Движок выполняет запрос «на лету» без необходимости создавать файлы базы данных или конвертировать файлы .git в любой другой формат.
Установка из менеджеров пакетов
Cargo.io
cargo install gitql
Widget в Windows
winget install gitql
Scoop в Windows
scoop install git ql
Полная документация здесь
GQL — это язык запросов с синтаксисом, очень похожим на SQL, с крошечным движком для выполнения запросов к файлам .git вместо файлов базы данных. Движок выполняет запрос «на лету» без необходимости создавать файлы базы данных или конвертировать файлы .git в любой другой формат.
Установка из менеджеров пакетов
Cargo.io
cargo install gitql
Widget в Windows
winget install gitql
Scoop в Windows
scoop install git ql
Полная документация здесь
❤🔥18👍3❤1🥰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
🔹 Автоматические бэкапы БД 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🎉5❤4🥰4👏4