🤔 Очередной #дайджест по DevOps
➡️ Рекомендации по безопасности: уязвимости Curl — описание предстоящего апдейта и безопасности в целом, а curl, как известно, напичкан пробоями в безопасности
➡️ SIG-архитектура — обсуждение насущного с лидом Conformance sub-project
➡️ Учимся бесплатно деплоить Java (и не только) приложения — использование для деплоя бесплатного сервиса CircleCi и AWS от Amazon
➡️ Group wait, Group interval и Repeat interval — разбор нюансов работы Prometheus Alertmanager, чтобы полностью понять, как функционируют интервалы
➡️ Обзор работоспособности сети с помощью mtr, ss, lsof и iperf3 — если в сети происходит что-то странное, на помощь всегда приходят эти инструменты
➡️ Рекомендации по безопасности: уязвимости Curl — описание предстоящего апдейта и безопасности в целом, а curl, как известно, напичкан пробоями в безопасности
➡️ SIG-архитектура — обсуждение насущного с лидом Conformance sub-project
➡️ Учимся бесплатно деплоить Java (и не только) приложения — использование для деплоя бесплатного сервиса CircleCi и AWS от Amazon
➡️ Group wait, Group interval и Repeat interval — разбор нюансов работы Prometheus Alertmanager, чтобы полностью понять, как функционируют интервалы
➡️ Обзор работоспособности сети с помощью mtr, ss, lsof и iperf3 — если в сети происходит что-то странное, на помощь всегда приходят эти инструменты
👍5🔥2❤1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍4❤2
💫🕳️ k'exp — Kubernetes Explorer
Данный софт поможет разобраться в Kubernetes через визуализацию. Это не очередная попытка управлять производственными кластерами в браузере.
kexp предназначен для:
изучения возможностей Kubernetes
разработки приложений
разработка контроллера и оператора
Installation
Получите последний релиз с GitHub:
GOOS=linux
GOARCH=amd64
curl -Ls https://github.com/iximiuz/kexp/releases/latest/download/kexp_${GOOS}_${GOARCH}.tar.gz | tar xvz
sudo mv kexp /usr/local/bin
Использование
Это статически связанный двоичный файл Go со встроенным UI. Если у вас уже настроен kubectl для доступа к вашим кластерам, вы также можете запустить kexp — он использует ту же логику обнаружения KUBECONFIG.
По умолчанию kexp запускает сервер на localhost:5173:
kexp
open localhost:5173
В качестве альтернативы вы можете указать кастомный адрес:
kexp --host 0.0.0.0 --port 8090
#обзор
Данный софт поможет разобраться в Kubernetes через визуализацию. Это не очередная попытка управлять производственными кластерами в браузере.
kexp предназначен для:
изучения возможностей Kubernetes
разработки приложений
разработка контроллера и оператора
Installation
Получите последний релиз с GitHub:
GOOS=linux
GOARCH=amd64
curl -Ls https://github.com/iximiuz/kexp/releases/latest/download/kexp_${GOOS}_${GOARCH}.tar.gz | tar xvz
sudo mv kexp /usr/local/bin
Использование
Это статически связанный двоичный файл Go со встроенным UI. Если у вас уже настроен kubectl для доступа к вашим кластерам, вы также можете запустить kexp — он использует ту же логику обнаружения KUBECONFIG.
По умолчанию kexp запускает сервер на localhost:5173:
kexp
open localhost:5173
В качестве альтернативы вы можете указать кастомный адрес:
kexp --host 0.0.0.0 --port 8090
#обзор
👍8❤2
📦📦 Перенос Docker на другой диск в Windows
Небольшой туториал по переносу Docker с диска С, на диск D. У автора статьи было мало места на 120-гиговой SSD-шке, и пришлось пойти на этот шаг. Если у кого-то стоит такая задача — милости просим.
# выключаем wsl
wsl --shutdown
# экспортируем данные docker-desktop
wsl --export docker-desktop D:\docker-desktop.tar
# убираем регистрацию данных docker-desktop
wsl --unregister docker-desktop
# импортируем данные docker-desktop в новую директорию
wsl --import docker-desktop D:\wslStore\ D:\docker-desktop.tar --version 2
# удаляем D:\docker-desktop.tar
После этих манипуляций, все наши сокровища с DockerDesktop будут располагаться в D:\wslStore\. Но, это не означает, что данные (контейнеры, снимки и прочие) будут тоже находиться там.
Читать далее
#туториал
Небольшой туториал по переносу Docker с диска С, на диск D. У автора статьи было мало места на 120-гиговой SSD-шке, и пришлось пойти на этот шаг. Если у кого-то стоит такая задача — милости просим.
# выключаем wsl
wsl --shutdown
# экспортируем данные docker-desktop
wsl --export docker-desktop D:\docker-desktop.tar
# убираем регистрацию данных docker-desktop
wsl --unregister docker-desktop
# импортируем данные docker-desktop в новую директорию
wsl --import docker-desktop D:\wslStore\ D:\docker-desktop.tar --version 2
# удаляем D:\docker-desktop.tar
После этих манипуляций, все наши сокровища с DockerDesktop будут располагаться в D:\wslStore\. Но, это не означает, что данные (контейнеры, снимки и прочие) будут тоже находиться там.
Читать далее
#туториал
🎉15👍7🔥2❤1
🕷️🕸️ Понимание кластерной сети Kubernetes
По умолчанию все поды в кластере K8s могут взаимодействовать друг с другом без NAT, поэтому каждому модулю присваивается IP-адрес всего кластера. Контейнеры внутри каждого пода совместно используют сетевое пространство имен поды, что позволяет им взаимодействовать друг с другом на localhost через loopback. С точки зрения рабочих нагрузок, выполняемых внутри контейнеров, эта IP-сеть выглядит как любая другая, и никаких изменений не требуется.
Когда пода создается или терминируется, частью работы kubelet является настройка или очистка песочницы поды, на которой он запущен. Kubelet полагается на реализацию Container Runtime Interface (CRI) для обработки деталей создания и уничтожения песочниц. CRI состоит из нескольких интерфейсов; наиболее интересными являются RuntimeService interface (client-side API; integration point kubelet->CRI) и RuntimeServiceServer (server-side API; integration point RuntimeService->CRI implementation). Эти API-интерфейсы одновременно большие и объемные, но в данной статье нас интересуют только *PodS и коробочный набор методов (например, RunPodSandbox). Однако под капотом CRI находится сетевой интерфейс контейнера, который создает и настраивает сетевое пространство имен поды.
Очень крутая и объемная статья, продолжение которой вас ждет тут
#гайд
По умолчанию все поды в кластере K8s могут взаимодействовать друг с другом без NAT, поэтому каждому модулю присваивается IP-адрес всего кластера. Контейнеры внутри каждого пода совместно используют сетевое пространство имен поды, что позволяет им взаимодействовать друг с другом на localhost через loopback. С точки зрения рабочих нагрузок, выполняемых внутри контейнеров, эта IP-сеть выглядит как любая другая, и никаких изменений не требуется.
Когда пода создается или терминируется, частью работы kubelet является настройка или очистка песочницы поды, на которой он запущен. Kubelet полагается на реализацию Container Runtime Interface (CRI) для обработки деталей создания и уничтожения песочниц. CRI состоит из нескольких интерфейсов; наиболее интересными являются RuntimeService interface (client-side API; integration point kubelet->CRI) и RuntimeServiceServer (server-side API; integration point RuntimeService->CRI implementation). Эти API-интерфейсы одновременно большие и объемные, но в данной статье нас интересуют только *PodS и коробочный набор методов (например, RunPodSandbox). Однако под капотом CRI находится сетевой интерфейс контейнера, который создает и настраивает сетевое пространство имен поды.
Очень крутая и объемная статья, продолжение которой вас ждет тут
#гайд
👍8❤2
#вопросы_с_собеседования
Редкий, но интересный вопрос по *nix на смекалку.
Как можно создать zombie-процесс?
#include «stdlib.h>
#include
#include
int main() {
pid_t child_pid;
/* Создание дочернего процесса. */
child_pid = fork();
if (child_pid > 0) {
/* Это родительский процесс — делаем минутную паузу. */
sleep(60);
} else {
/* Это дочерний процесс — немедленно завершаем работу. */
exit(0);
}
return 0;
}
Редкий, но интересный вопрос по *nix на смекалку.
Как можно создать zombie-процесс?
🔥19❤2
🧑🎓😎 Еще одна серия с мероприятия OFFZONE 2023
Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.
Логические уязвимости повышения привилегий в ОС Windows
В докладе будет рассказано о логических уязвимостях в ПО для ОС Windows. Будут рассмотрены основные методы и техники их эксплуатации, разобраны кейсы и даны советы, как избежать таких уязвимостей в разработке. Также спикер поделится опытом взаимодействия с вендорами, в чьих продуктах были обнаружены уязвимости.
Смотреть
#видео
Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.
Логические уязвимости повышения привилегий в ОС Windows
В докладе будет рассказано о логических уязвимостях в ПО для ОС Windows. Будут рассмотрены основные методы и техники их эксплуатации, разобраны кейсы и даны советы, как избежать таких уязвимостей в разработке. Также спикер поделится опытом взаимодействия с вендорами, в чьих продуктах были обнаружены уязвимости.
Смотреть
#видео
👍4❤3
🤔 Очередной #дайджест по DevOps
➡️ Docker vs. Virtual Machines — технические детали Docker и виртуальных машин, их различия, общие черты и сценарии, в которых они проявляют себя.
➡️ Exit Codes в контейнерах и Kubernetes — понимание exit codes в контейнере может помочь понять основную причину сбоев pod при устранении сбоев
➡️ Open Source, AI и другие технотренды — вебинар будет полезен разработчикам и тимлидам команд разработки, DevOps и DevSecOps-инженерам, руководителям и специалистам по ИБ, техническим и ИТ-директорам
➡️ Понимание Kubernetes Limits и Requests — помощь в изучении, какие ресурсы задействованы и насколько они необходимы
➡️ argocd-vault-replacer — плагин для замены плейсхолдеров в манифестах Kubernetes секретами, хранящимися в Hashicorp Vault.
➡️ Docker vs. Virtual Machines — технические детали Docker и виртуальных машин, их различия, общие черты и сценарии, в которых они проявляют себя.
➡️ Exit Codes в контейнерах и Kubernetes — понимание exit codes в контейнере может помочь понять основную причину сбоев pod при устранении сбоев
➡️ Open Source, AI и другие технотренды — вебинар будет полезен разработчикам и тимлидам команд разработки, DevOps и DevSecOps-инженерам, руководителям и специалистам по ИБ, техническим и ИТ-директорам
➡️ Понимание Kubernetes Limits и Requests — помощь в изучении, какие ресурсы задействованы и насколько они необходимы
➡️ argocd-vault-replacer — плагин для замены плейсхолдеров в манифестах Kubernetes секретами, хранящимися в Hashicorp Vault.
🥰17❤13👍12👏8🤩8
🥰13❤6
🥷 Как траблшутить и отслеживать приложения с помощью OpenTelemetry
OpenTelemetry — это бесплатный опенсорсный Observability Protocol, который находится на прикладном уровне и экспортирует трассировки, метрики и журналы в серверную часть для наблюдения. Он полезен для разработчиков с точки зрения time-to-detection и time-to-resolution ошибок и неполадок, возникающих на прикладном уровне. Процесс варьируется от обнаружения и оповещения о возникших ошибках (таких как TypeError) до обнаружения того, что конкретный микросервис работал в два раза дольше обычного, вплоть до просмотра выходных данных сервиса и сравнения их с ожидаемыми выходными данными, чтобы найти ошибку в логике работы.
Руководство предназначено для начинающих специалистов и требует минимальный опыт работы с Requests и Flask. Опыта работы с OpenTelemetry не требуется. Важно только иметь четкое представление о трассировках, метриках и журналах.
Смотреть
#видео
OpenTelemetry — это бесплатный опенсорсный Observability Protocol, который находится на прикладном уровне и экспортирует трассировки, метрики и журналы в серверную часть для наблюдения. Он полезен для разработчиков с точки зрения time-to-detection и time-to-resolution ошибок и неполадок, возникающих на прикладном уровне. Процесс варьируется от обнаружения и оповещения о возникших ошибках (таких как TypeError) до обнаружения того, что конкретный микросервис работал в два раза дольше обычного, вплоть до просмотра выходных данных сервиса и сравнения их с ожидаемыми выходными данными, чтобы найти ошибку в логике работы.
Руководство предназначено для начинающих специалистов и требует минимальный опыт работы с Requests и Flask. Опыта работы с OpenTelemetry не требуется. Важно только иметь четкое представление о трассировках, метриках и журналах.
Смотреть
#видео
🔥5❤4👍4
Рассмотрим ситуацию, когда случайно/специально 😱 удалился исполняющийся bash скрипт.
Чтобы не попадать в такие ситуации, всегда храните исходники в git — это избыточно, но бекапы никто не отменял.
Скрипт удалён с диска, но продолжает работать в фоне, значит его можно как-нибудь восстановить.
Создадим подопытный скрипт: touch /tmp/script.sh:
#!/bin/bash
sleep 1000
exit
Делаем исполняемым chmod +x /tmp/script.sh и запускаем в фоне /tmp/script.sh &
Символ & может служить разделителем между командами command & command, две команды выполнятся параллельно.
Скрипт запустили, он крутится в фоне. Удалим сам файл:
rm -f /tmp/script.sh ключ -f удалит без лишних вопросов.
Восстанавливаем:
lsof -c 'script.sh'
На экран выведется простыня, нам нужна строка где в конце указан путь до скрипта, который был удален:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
script.sh 261899 root 255r REG 8,1 51 130773 /tmp/script.sh
Берем PID = 261899, берем FD = 255 и делаем так:
cat /proc/261899/fd/255
А вот и исходник скрипта:
File: /proc/261899/fd/255
#!/bin/bash
sleep 1000
exit
Вот полезная инфа, которая была использована в гайде:
man 5 proc # /proc/[pid]/fd/
man lsof
#гайд
Чтобы не попадать в такие ситуации, всегда храните исходники в git — это избыточно, но бекапы никто не отменял.
Скрипт удалён с диска, но продолжает работать в фоне, значит его можно как-нибудь восстановить.
Создадим подопытный скрипт: touch /tmp/script.sh:
#!/bin/bash
sleep 1000
exit
Делаем исполняемым chmod +x /tmp/script.sh и запускаем в фоне /tmp/script.sh &
Символ & может служить разделителем между командами command & command, две команды выполнятся параллельно.
Скрипт запустили, он крутится в фоне. Удалим сам файл:
rm -f /tmp/script.sh ключ -f удалит без лишних вопросов.
Восстанавливаем:
lsof -c 'script.sh'
На экран выведется простыня, нам нужна строка где в конце указан путь до скрипта, который был удален:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
script.sh 261899 root 255r REG 8,1 51 130773 /tmp/script.sh
Берем PID = 261899, берем FD = 255 и делаем так:
cat /proc/261899/fd/255
А вот и исходник скрипта:
File: /proc/261899/fd/255
#!/bin/bash
sleep 1000
exit
Вот полезная инфа, которая была использована в гайде:
man 5 proc # /proc/[pid]/fd/
man lsof
#гайд
👍32❤6👏4😁3🎉3
This media is not supported in your browser
VIEW IN TELEGRAM
Разработчик сообщает своему пиэму, что задача еще не готова. Пиэм 😳😯, мягко говоря, от такой новости немного удивлён и озадачен 😂😂😂😂
#memes
#memes
😁18❤2🔥2
👣 SRE Roadmap
Даже если не собираетесь переходить полностью в SRE, хорошо бы развиваться постоянно т.к. серое вещество с возрастом теряет свойство работать нормально 😂, да и новые штуки узнавать полезно.
Встретилась нам роудмапа по SRE. Там столько всякого, что не встречается в обычной DevOps-жизни... 😱
#туториал
Даже если не собираетесь переходить полностью в SRE, хорошо бы развиваться постоянно т.к. серое вещество с возрастом теряет свойство работать нормально 😂, да и новые штуки узнавать полезно.
Встретилась нам роудмапа по SRE. Там столько всякого, что не встречается в обычной DevOps-жизни... 😱
#туториал
❤10👍3
⚔️🛡️ О безопасности Open Source кода
В этом ролике Алексей Смирнов, основатель системы композиционного анализа программного обеспечения «CodeScoring», и Любовь Семенович, менеджер по продвижению центра информационной безопасности, расскажут главное о безопасности Open Source.
Зачем смотреть?
🔹 Понять, какие основные аспекты безопасности выделяются при анализе Open Source
🔹 Разобраться, как обеспечить равномерный и непрерывный процесс риск-проверки
🔹 Узнать, что такое автоматизация SCA-процессов и какие решения для этого есть на рынке
#видео
В этом ролике Алексей Смирнов, основатель системы композиционного анализа программного обеспечения «CodeScoring», и Любовь Семенович, менеджер по продвижению центра информационной безопасности, расскажут главное о безопасности Open Source.
Зачем смотреть?
🔹 Понять, какие основные аспекты безопасности выделяются при анализе Open Source
🔹 Разобраться, как обеспечить равномерный и непрерывный процесс риск-проверки
🔹 Узнать, что такое автоматизация SCA-процессов и какие решения для этого есть на рынке
#видео
❤6🥱1