Стратегии развертывания Kubernetes
🔜 Сине-зеленое развертывание (Blue/Green)
Эта стратегия базируется на двух продуктивных средах: «синяя» — там, где живут старые версии приложения, и «зеленая» — зона, где мы запускаем новую версию приложения.
🔜 Shadow
Теневое развертывание заключается в выпуске версии 1.1 наряду с версией 1.0, перехвате входящих запросов с первой версии и отправке на вторую без влияния на трафик. Это особенно полезно для тестирования production нагрузки на новую функцию.
🔜 Постепенное развертывание (Rolling)
Все инстансы приложения будут последовательно обновляться до новой версии.
🔜 A/B testing
Обычно это стратегия принятия бизнес-решений на основе статистики. Она может быть реализована путем добавления к Canary дополнительной функциональности при определенных условиях. Например, куки браузера, язык или параметры запроса. Вместо того, чтобы открыть доступ к новой функции всем пользователям, ее предлагают лишь ограниченной их части.
🔜 Повторное создание (Recreate)
Сперва удаление текущей версии приложения, затем развертывание новой версии.
🔜 Канареечное развертывание (Canary)
«Канареечный» деплой схож с зелено-синей стратегией. Часть текущих инстансов приложения заменяется новой версией, на которую переключается часть трафика.
Каждая стратегия предлагает свой подход к управлению обновлениями
👉 DevOps Portal
Эта стратегия базируется на двух продуктивных средах: «синяя» — там, где живут старые версии приложения, и «зеленая» — зона, где мы запускаем новую версию приложения.
Теневое развертывание заключается в выпуске версии 1.1 наряду с версией 1.0, перехвате входящих запросов с первой версии и отправке на вторую без влияния на трафик. Это особенно полезно для тестирования production нагрузки на новую функцию.
Все инстансы приложения будут последовательно обновляться до новой версии.
Обычно это стратегия принятия бизнес-решений на основе статистики. Она может быть реализована путем добавления к Canary дополнительной функциональности при определенных условиях. Например, куки браузера, язык или параметры запроса. Вместо того, чтобы открыть доступ к новой функции всем пользователям, ее предлагают лишь ограниченной их части.
Сперва удаление текущей версии приложения, затем развертывание новой версии.
«Канареечный» деплой схож с зелено-синей стратегией. Часть текущих инстансов приложения заменяется новой версией, на которую переключается часть трафика.
Каждая стратегия предлагает свой подход к управлению обновлениями
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3❤1
Ngrok — это сервис, который позволяет сделать локальный порт доступным из интернета без настройки NAT, роутера, DDNS и других протоколов. Программа создает туннель между вашим компьютером и удалённым сервером и предоставляет доступ к нему с уникального домена.
Такой способ не подойдёт если вам нужно чтобы ваш сервис был доступен постоянно, но показать как работает ваш локальный сайт или потестировать работу Callback API довольно удобно.
🔜 Как пользоваться Ngrok — Читаем здесь
👉 DevOps Portal | #ресурсы
Такой способ не подойдёт если вам нужно чтобы ваш сервис был доступен постоянно, но показать как работает ваш локальный сайт или потестировать работу Callback API довольно удобно.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍2
Задача: провести техническое обслуживание на сервере и всех выгнать с него
Создаем пустой файл /etc/nologin. Теперь только root сможет авторизоваться по ssh. Предварительно нужно разрешить вообще заходить под root’ом.
Теперь нужно всех уведомить, кто в данный момент что-то делает в терминале.
Для этого воспользуемся утилитой wall.
Wall — утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей.
Запускаем команду:
Все кто был подключен к серверу, получают сообщение:
И неважно что делает человек и где находится, сообщение появится у него на экране. Через wall можно спамить определенным группам пользователей.
В указанное время запускаем ассасина:
Выгнали всех с сервера, кроме root’а и проводим технические работы, удаляем /etc/nologin.
Wall можно заменить например на такое:
Но тут сообщение уйдет конкретному пользователю user. Конечно, если по какой-то причине, в системе отсутствует wall, можно и через цикл выгрести всех юзеров и через echo отправить им уведомление.
write - утилита, позволяющая отправить сообщение другому пользователю, который имеет сессию в этой же системе.
Или так:
👉 DevOps Portal
Создаем пустой файл /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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31❤3
Для отладки bash-скриптов существует инструмент set -xve. Это мастхев фича именно на момент, создания чего-либо т. к. не всегда логика может работать правильно, а с set -xve, можно вовремя увидеть все значения переменных и т.п. не используя мусорные конструкции, например, echo «Error in function xxx».
Применяется так:
Основные флаги set:
x — вывести команды и их аргументы по мере их выполнения.
v — вывести строки ввода командной строки по мере их считывания.
e — выход, если команда завершается с ненулевым статусом.
Пример:
Изменяем PS4 и добавляем вывод номера строки во включенный дебаг режим:
После выполнения мы видим:
Теперь если скрипт где-то вылетает с плохим статусом, всегда можно узнать в какой строке это приключилось
Немного украшательств, экспортируем PS4:
Происходит подкрашивание запускаемых строчек.
С помощью PS4 можно отладить shell-скрипт, задав при его выполнении set -x, что позволяет выводить каждую команду, а затем ее результаты. Перед каждой командой ставится знак +, эту строку подсказки «+» можно изменить, определив переменную PS4.
👉 DevOps Portal
Применяется так:
#!/bin/bash -xve
set -xve
Основные флаги set:
x — вывести команды и их аргументы по мере их выполнения.
v — вывести строки ввода командной строки по мере их считывания.
e — выход, если команда завершается с ненулевым статусом.
Пример:
Изменяем PS4 и добавляем вывод номера строки во включенный дебаг режим:
#!/bin/bash -xve
PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
bar=10
echo ${bar}
echo $((6 + 6))
После выполнения мы видим:
bar=10
+(./script.sh:6): foo=10
echo ${bar}
+(./script.sh:7): echo 10
10
echo $((6 + 6))
+(./script.sh:8): echo 12
4
Теперь если скрипт где-то вылетает с плохим статусом, всегда можно узнать в какой строке это приключилось
Немного украшательств, экспортируем PS4:
PS4='\033[0;33m+(${BASH_SOURCE}:${LINENO}):\033[0m ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'Происходит подкрашивание запускаемых строчек.
С помощью PS4 можно отладить shell-скрипт, задав при его выполнении set -x, что позволяет выводить каждую команду, а затем ее результаты. Перед каждой командой ставится знак +, эту строку подсказки «+» можно изменить, определив переменную PS4.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤2
Не можете вспомнить команду в Linux? Я вам помогу!
Вот бывает такое, что команда вылетела из головы. Причем прихватила не только свое название, но и какие-то команды с ключами. Что делать? Воспользуемся утилитой man с нужными ключами:
Например, вы забыли название команды, но помните, что она как-то связана с диском. Поэтому вводим следующую строку в терминал:
В выхлоп попадают все команды, связанные с дисками. Легко найти необходимую, вспомнить ее название и нужные ключи. Правда, все очень просто? Так что, пользуемся и наслаждаемся!
👉 DevOps Portal
Вот бывает такое, что команда вылетела из головы. Причем прихватила не только свое название, но и какие-то команды с ключами. Что делать? Воспользуемся утилитой man с нужными ключами:
man -k <ключевое слово>
Например, вы забыли название команды, но помните, что она как-то связана с диском. Поэтому вводим следующую строку в терминал:
man -k disk
В выхлоп попадают все команды, связанные с дисками. Легко найти необходимую, вспомнить ее название и нужные ключи. Правда, все очень просто? Так что, пользуемся и наслаждаемся!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍45🔥8
На этой карте представлен краткий обзор наиболее часто используемых команд Linux, сгруппированных по их основным функциям.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤5
Простой способ записать ваши терминальные сессии 💾
Не хотите ли сохранить информацию о вашей терминальной сессии? Команда script спасет вас! Она фиксирует всё: ваши вводы, выводы и даже временные метки.
Для начала записи, просто выполните:
Теперь можете спокойно вводить команды, например, ls, cal, w.
Когда закончите, завершите запись, введя команду
Теперь все, что вы делали в терминале, сохранено в файле history_log.txt. Полезно, не правда ли?
👉 DevOps Portal
Не хотите ли сохранить информацию о вашей терминальной сессии? Команда script спасет вас! Она фиксирует всё: ваши вводы, выводы и даже временные метки.
Для начала записи, просто выполните:
script history_log.txt
Теперь можете спокойно вводить команды, например, ls, cal, w.
Когда закончите, завершите запись, введя команду
exit в терминале. После этого вы увидите:Script done, file is history_log.txt
Теперь все, что вы делали в терминале, сохранено в файле history_log.txt. Полезно, не правда ли?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥3👀3
Команда which - полезный инструмент, который помогает быстро определить, где находится исполняемый файл программы. Это может быть очень удобно, особенно если вы работаете с командной строкой и хотите убедиться, что используется нужная вам версия программы. Ну или вы когда-то закинули в систему самописанную программу и напрочь забыли как она называется и где находится. В общем, команда нужная, поэтому давайте посмотрим, как ей пользоваться.
Чтобы воспользоваться командой which, просто введите ее, а затем укажите имя команды, местоположение которой вы хотите найти. Например:
$ which ls
/bin/ls
Этот пример покажет вам, что команда ls находится в каталоге /bin. Это полезно, если у вас есть несколько версий программы или вы хотите убедиться, что используется нужная версия.
Вы также можете использовать опцию -a, чтобы найти все местоположения команды, если она присутствует в нескольких местах. Например:
$ which -a python
/usr/bin/python
/usr/local/bin/python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Компьютерные сети. 6-е изд.
Авторы: Таненбаум Эндрю, Фимстер Ник, Уэзеролл Дэвид
Год: 2023
📂 Скачать книгу
👉 DevOps Portal | #книги
Авторы: Таненбаум Эндрю, Фимстер Ник, Уэзеролл Дэвид
Год: 2023
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤2
COPY - Копирование файлов в другое местоDIR - Отображение файлов и папок в текущем каталогеDEL или ERASE - Удаление файловEDIT - Запуск редактора файловCD - Изменить каталогEXPAND - Распаковать сжатые файлыFC - Сравнивает файлы и показывает различия между нимиFIND - Найти текстовую строку в файлеMD или MAKEDIR - Создать папкуMOVE - Переместить файлы из одной папки в другуюPRINT – отобразить содержимое текстового файлаRD или RMDIR - удалить папкуREN или RENAME - переименовать файл или папкуREPLACE - Замена файлов в одном каталоге на файлы с тем же именем в другом каталогеROBOCOPY - Использует программу робокопи для копирования файлов и каталоговTREE - Показывает структуру каталогов диска или папкиTYPE - Отображает содержимое текстовых файловOPENFILES - Управление открытыми локальными или сетевыми файламиXCOPY - Копирование файлов и деревьев каталоговSCHTASKS – Запланированный запуск приложения приложения (планировщик задач)SHUTDOWN - Выключение или перезагрузка компьютераTASKLIST - Список выполняемых задачTASKKILL - Остановить или прекратить выполнение задачи (для остановки задачи используется PID, который можно узнать из TASKLIST).REG - Запустить редактор реестраRUNAS - Запуск задачи от имени другого пользователяCHKDISK - Проверяет диск и показывает статистикуDEFRAG - Запуск дефрагментации дискаCHKNTFS - Отображает или изменяет выполнение проверки диска при загрузкеCOMPACT - Отображает и изменяет сжатие файлов в разделах NTFSCONVERT - преобразование дискового тома FAT в NTFSDISKPART - Отображение и настройка свойств разделов дискаFORMAT - Форматирование дискаFSUTIL - Отображение и настройка свойств файловой системыLABEL - Создание, изменение или удаление метки тома дискаRECOVER - Восстановление данных с поврежденного или испорченного дискаVOL - Отображение метки тома и серийного номера дискаDATE - Выводит или устанавливает текущую датуTIME - Выводит или устанавливает системное времяDRIVERQUERY - Отображает текущее состояние и свойства драйвера устройстваHOSTNAME - Отображает имя компьютераSYSTEMINFO - Отображает информацию о конфигурации компьютераVER - Позволяет просмотреть версию WindowsGPRESULT - Отображает текущие примененные групповые политики (RSoP)GPUPDATE - Обновление групповых политикIPCONFIG - Отображает информацию о сетевых интерфейсахPING - Отправляет ICMP-запросы на целевой хост, проверяет его доступностьTRACERT – Отображение пути пакетов в сети
NSLOOKUP - Поиск IP-адреса по имени ресурсаROUTE - Отображает таблицы сетевых маршрутовARP - Показывает таблицу с IP-адресами, преобразованными в физические адресаNETSH - Запускает программу управления сетевыми настройкамиGETMAC - Показывает MAC-адрес сетевого адаптераTFTP - Запускает TFTP-клиент в консолиCLS - Очистить экранCMD - Отображает другую командную строку COLOR - Устанавливает цвет текста и фона в консолиPROMPT – Изменение начального текста командной строкиTITLE - Присвоение заголовка для текущего сеансаHELP - Запуск справки CMDEXIT - Выход из командной строкиPlease open Telegram to view this post
VIEW IN TELEGRAM
👍24😁2
Что такое контейнеризация? Чем она отличается от виртуализации?
⏩ При виртуализации машины создаются с помощью гипервизора и все аппаратные составляющие создаются через него. Затем на него накатываются операционные системы. Соответственно, ресурсы машины будут уходить на поддержание работы запущенной операционной системы.
⏩ При контейнеризации аппаратные ресурсы выделяются с помощью ядра операционной системы, и изолируются пространством имен. Следовательно, они потребляют меньше ресурсов, и быстрее пересоздаются.
👉 DevOps Portal | #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Отладка дедлока FUSE в ядре Linux
Автор подробно объясняет инструменты и методы диагностики таких проблем, сложности, которые могут возникнуть с FUSE, и пошагово показывает, как анализировать и решать подобные ситуации в рабочих средах
🔜 Читать статью
👉 DevOps Portal | #cтатья
Автор подробно объясняет инструменты и методы диагностики таких проблем, сложности, которые могут возникнуть с FUSE, и пошагово показывает, как анализировать и решать подобные ситуации в рабочих средах
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Порой опытные админы используют команды в консоли следующим образом:
ssh root@linuxzone.ru --
Что означает это двойное тире? Зачем оно? Давайте разбираться.
Двойное тире означает «флаги командной строки». Оно указывает ssh или другой команде не пытаться анализировать то, что следует после параметров. На словах выглядит не очень, давайте посмотрим на практике!
У меня есть такая команда:
ssh root@linuzone.ru -- command1 --arg1 --arg2
Приведенный выше синтаксис указывает ssh не пытаться анализировать параметры arg1 и arg2 после символа «--». Это гарантирует, что команда command1 примет arg1 и arg2 в качестве аргументов командной строки и выполнится на удаленном сервере.
Короче говоря мы сообщаем ssh - все то, что идет после двойного тире, это не твои параметры и аргументы, анализировать это НЕ НАДО! СТОП! Дальше дело за command1 и его параметрами и аргументами.
Двойное тире обрабатывается не обрабатывается оболочками bash/zsh/csh/sh/fish и т.п. Оно обрабатывается средствами самих программ, но НЕ всех. Например ssh это умеет делать, как и множество других команд и утилит. Рассмотрим другие примеры.
Например, вы не сможете просмотреть файл с именем --file или -f используя команду cat. Проверяем:
cat --file
cat -f
Опа. Ошибка! cat: unrecognized option --file/f. Давайте теперь передадим двойное тире:
cat -- --file
cat -- -f
Ошибка пропала и файл успешно вывелся на экран, ну либо выскочило сообщение cat: --file/f: No such file or directory. Это нормально.
Закрепим:
rm --file = получим ошибку
rm -- '--file' = а вот это сработает
Ну а что бы передать параметры в rm, делаем так:
rm -v -i -- '--file'
rm -f -v -i -- '-f'
Просто, логично, мелодично. Но как я и сказал выше, не все команды умеют работать с двойным тире. Например, команда echo, на все попытки подружить её с двойным тире, просто-напросто провалятся:
/usr/bin/echo -- -n
echo -- --test
выведется это:
-- -n
-- --test
Если материал оказался полезным и интересным, то поставьте лайк
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61❤10
Раньше в интернете была популярна фраза "я тебя по IP вычислю", но сегодня давайте разберемся, насколько это возможно на самом деле, используя терминал Linux.
Определение местоположения человека по IP-адресу – это интересная тема, и оно основано на технологии геолокации. Отмечу сразу, что точность определения зависит от множества факторов, и это не так просто, как кажется.
Linux предоставляет утилиту
geoiplookup, которая может выдать информацию о стране, городе и провайдере по IP-адресу. Вы можете воспользоваться этой командой в терминале следующим образом:
geoiplookup <IP-адрес>
Замените
<IP-адрес> на конкретный IP, который хотите проверить. Но помните, что эта информация может быть неточной, особенно если пользователь использует VPN или прокси.Существуют веб-сервисы и API, которые предоставляют более точную информацию о местоположении по IP-адресу. Вы можете использовать такие сервисы, отправляя запросы через терминал с помощью утилиты
curl. Например, сервис "ipinfo.io" предоставляет информацию о городе, регионе, стране, координатах и другие данные:
curl ipinfo.io/<IP-адрес>
Однако, даже с использованием более точных методов, стоит помнить, что IP-адрес не является надежным способом идентификации местоположения пользователя. В современном интернете многие используют VPN, прокси или другие методы для скрытия своего настоящего местоположения.
Так что давайте воспользуемся этими способами в терминале Linux и посмотрим, что они скажут. Но помните, что это просто увлекательная возможность и не стоит полагаться на неё как на надежный метод определения местоположения.
Спасибо за вашу активность! Ваше участие делает наше сообщество интереснее и полезнее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23👍17😁3
Bash и кибербезопасность: атака, защита и анализ из командной строки Linux
Авторы: Пол Тронкон, Карл Олбинг
Год: 2020
📂 Скачать книгу
👉 DevOps Portal | #книги
Авторы: Пол Тронкон, Карл Олбинг
Год: 2020
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
CLI инструменты, которые облегчат времяпровождение в терминале и сделают его приятнее
Многие из вас каждый день работают в терминале. Этот процесс можно улучшить. Существует множество полезных инструментов CLI, которые могут сделать вашу жизнь в командной строке проще, быстрее и в целом веселее.
🔜 Читать подробнее
👉 DevOps Portal | #cтатья
Многие из вас каждый день работают в терминале. Этот процесс можно улучшить. Существует множество полезных инструментов CLI, которые могут сделать вашу жизнь в командной строке проще, быстрее и в целом веселее.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤯1
Сегодня расскажу вам, как отправить электронное письмо прямо из терминала Linux! ✉️
1️⃣ Вам понадобится установленный пакет "mailutils", чтобы воспользоваться утилитой "mail". Если его у вас нет, установите с помощью команды:
2️⃣ Теперь, для отправки письма, воспользуйтесь следующей командой:
Замените "Текст вашего письма" на текст сообщения, "Тема письма" на тему письма и "адрес_получателя@example.com" на адрес электронной почты получателя.
3️⃣ Если нужно отправить письмо с вложением, воспользуйтесь командой "mutt":
Замените "/путь/к/вашему_файлу.txt" на путь к вашему вложению и "/путь/к/текстовому_файлу.txt" на путь к текстовому файлу с телом письма.
Теперь вы можете отправлять письма из терминала Linux! Хорошего дня🤝
👉 DevOps Portal
sudo apt-get install mailutils
echo "Текст вашего письма" | mail -s "Тема письма" адрес_получателя@example.com
Замените "Текст вашего письма" на текст сообщения, "Тема письма" на тему письма и "адрес_получателя@example.com" на адрес электронной почты получателя.
mutt -s "Тема письма" -a /путь/к/вашему_файлу.txt адрес_получателя@example.com < /путь/к/текстовому_файлу.txt
Замените "/путь/к/вашему_файлу.txt" на путь к вашему вложению и "/путь/к/текстовому_файлу.txt" на путь к текстовому файлу с телом письма.
Теперь вы можете отправлять письма из терминала Linux! Хорошего дня
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32😁8❤5🤝2🤔1
Быстрый совет для Linux 👩💻
Вы можете включить временные метки в истории команд bash, чтобы видеть, когда вы выполняли предыдущие команды. Это может быть полезно для отслеживания того, над чем вы работали и когда
Чтобы добавить временные метки в историю, просто установите переменную окружения HISTTIMEFORMAT следующим образом:
Теперь, когда вы просматриваете свою историю или ищете в ней с помощью grep, вы будете видеть временную метку рядом с каждой командой, указывающую, когда она была выполнена:
Или, чтобы сэкономить несколько нажатий клавиш:
Формат "%F %T" отображает дату и время, но вы можете настроить его под свои предпочтения.
Примечание: Это не добавляет временные метки к командам, которые вы выполняли до установки HISTTIMEFORMAT, и работает только в bash.
👉 DevOps Portal
Вы можете включить временные метки в истории команд bash, чтобы видеть, когда вы выполняли предыдущие команды. Это может быть полезно для отслеживания того, над чем вы работали и когда
Чтобы добавить временные метки в историю, просто установите переменную окружения HISTTIMEFORMAT следующим образом:
$ export HISTTIMEFORMAT="%F %T "
Теперь, когда вы просматриваете свою историю или ищете в ней с помощью grep, вы будете видеть временную метку рядом с каждой командой, указывающую, когда она была выполнена:
$ history | tail -n 5
Или, чтобы сэкономить несколько нажатий клавиш:
$ history 5
Формат "%F %T" отображает дату и время, но вы можете настроить его под свои предпочтения.
Примечание: Это не добавляет временные метки к командам, которые вы выполняли до установки HISTTIMEFORMAT, и работает только в bash.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥4❤1