Dev-Ops.su – Telegram
Dev-Ops.su
307 subscribers
79 photos
4 files
206 links
Полезные утилиты, статьи, доклады и обзоры.
Канал для DevOps, SRE, Архитекторов и прочих *Ops

https://dev-ops.su

#DevOps #SRE #DevSecOps #SecOps #ChatOps #GitOps #DocsOps #MLOps #FinOps #NoOps #CloudOps #CIOps #CDOps #AnyOps #BuzzWordOps

@woozymasta
Download Telegram
Опа, нашлась мидлварь для работы с внешним агентом OPA PDP (Policy Decision Point) на .NET - OPA-AspDotNetCore-Middleware

И еще как бонус, WASM агент для OPA на .NET

#opa #aspnet #netcore #pdp

https://github.com/build-security/OPA-AspDotNetCore-Middleware
https://github.com/christophwille/dotnet-opa-wasm
Нашел еще одну утилиту config-syncer (ранее Kubed) - созданную для синхронизации / репликации ConfigMap и Secret в Kubernetes, но в отличии от аналогов умеет выполнять синхронизацию не только между неймспейсами но и между кластерами Kubernetes.

Ранее упоминал:
▫️kubernetes-replicator - синхронизирует ConfigMap, Secret, Role и RoleBinding между ns
▫️kubernetes-reflector синхронизирует ConfigMap и Secret между ns

#k8s #kubernetes #integrity

https://github.com/kubeops/config-syncer
Неожиданно для меня, bash скрипт kube-dump для создания чистового дампа yaml манифестов из kubernetes (читай бэкапа), смог набрать 125 звезд на GitHub.

Вчера принесли PR, который добавляет три новых параметра сохранения манифестов Kubernetes.

--detailed — исключает удаление метаданных, файлы сохраняются как есть;
--output-by-type — сохраняет ресурсы структурировано по каталогам, сервисы в svc/*, поды в pod/* и т.п. Меня несколько раз просили это сделать, значит параметр нужный;
--flat — сохраняет все ресурсы одного типа в один общий файл с списком items:.

Стандартная логика не изменилась, но новый функционал появился, в связи с этим выпустил новую минорную версию 1.1.0

#k8s #kubernetes #backup

https://github.com/WoozyMasta/kube-dump
👍1
SLO exporter - это не просто экспортер Service Level Objectives, а скорее нормализатор и класификатор для метрик. Некая мидлварь, которая поможет сначала обработать весь ваш объем метрик Prometheus и уже передать в него самую мякотку.

Как это работает:
Каждое полученное событие имеет метаданные, которые используются для его классификации по определенному домену и классу SLO, как описано в главе рабочей книги SRE «Оповещения об SLO». Кроме того, имя приложения, в котором произошло событие, и идентификатор события также добавляются для облегчения отладки возможного нарушения SLO. Наконец, вы решаете на основе метаданных, было ли событие успешным или неудачным. Затем SLO-exporter предоставляет метрику Prometheus slo_domain_slo_class:slo_events_total{slo_domain="...", slo_class="...", result="..."}. Это дает вам количество успешных или неудачных событий, и это все, что вам нужно для расчета бюджета ошибок (error budget), скорости сгорания (burn rate) и т.п.

Также у ребят есть две занимательные статьи на эту тему:
▫️Implementing SRE workbook alerting with Prometheus only
▫️Advanced SLO infrastructure based on slo-exporter

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

#SLO #SLI #prometheus

https://github.com/seznam/slo-exporter
Хаос-инжиниринг - это весело. На самом деле это ложь, но ниже приведена подборка инструментов и геймификаций которая должна исправить это, при тестированни работы приложений на отказ в кластере Kubernetes. Начиная от простых планировщиков которые будут убивать случайные поды по расписанию вплоть до полноценных игр, где враги - это поды.

▫️ChaosKube - периодически убивает случайные поды;
▫️KubeThanos - убивает половину случайно выбранных подов;
▫️KubeInvaders - похоже на Space Invaders, но инопланетяне - это поды или ноды;
▫️Lens extension Invaders - это расширение для Lens которое добавляет в него KubeInvaders, но убиваем только поды;
▫️KubeDoom - убивайте поды Kubernetes, играя в DOOM;
▫️KubeCraftAdmin - в Minecraft убивайте животных в загонах (неймспейсах), где свинья - pod, корва - deployment, курица - svc, лошадь - rs
▫️Whack-a-pod - игра, цель которой нарушить работоспособность сервиса, бейте молотком по вылезающим из нор кротов (поды) и попробуйте нарушить работу приложения
▫️Kube-Chaos - игра в стиле Twin Stick Shooter для убийства подов

#chaos #chaos_engineering #fun
👍3
Chaos Mesh - это облачная платформа Chaos Engineering, которая организует хаос в средах Kubernetes, вносит хаос в приложения и инфраструктуру Kubernetes управляемым способом, который предоставляет простые настраиваемые определения для экспериментов с хаосом и автоматической оркестровки.

Состоит из компонентов:
🔹Chaos Operator: используется для планирования и управления жизненным циклом объектов CRD.
🔹Chaos Dashboard: веб-интерфейс для управления, проектирования и мониторинга экспериментов с хаосом.

Chaos Operator использует CustomResourceDefinition (CRD) для определения объектов хаоса:
▫️pod-kill: выбранный pod уничтожается (потребоваться ReplicaSet или что-то подобное, чтобы обеспечить перезапуск);
▫️pod-failure: выбранный pod будет недоступен в течение указанного периода времени;
▫️container-kill: выбранный контейнер уничтожается в выбранном поде;
▫️netem chaos: сетевой хаос, такой как задержка, дублирование и т.д.;
▫️network-partition: имитация разделения сети;
▫️IO chaos: имитация ошибок файловой системы, таких как задержка ввода-вывода, ошибки чтения/записи и т.д.;
▫️time chaos: выбранному поду будет введено искажение часов;
▫️cpu-burn: имитирует нагрузку на ЦП выбранного пода;
▫️memory-burn: имитирует утилизацию памяти выбранного пода;
▫️kernel chaos: выбранный под будет внедрен с ошибками (slab, bio и т.д);
▫️dns chaos: выбранный под будет содержать ошибки DNS, такие как error, random.

#chaos #chaos_engineering #k8s #kubernetes

https://github.com/chaos-mesh/chaos-mesh
Litmus Chaos — это платформа Chaos Engineering с открытым исходным кодом, которая позволяет командам выявлять слабые места и потенциальные сбои в инфраструктурах путем контролируемого запуска тестов хаоса.

Litmus использует облачный подход для создания, управления и мониторинга хаоса. Сама платформа работает как набор микросервисов и использует пользовательские ресурсы Kubernetes для определения хаоса, а также гипотезы стабильного состояния.

Очень похож на Chaos Mesh, возможно будет немного сложнее в настройке, но тем самым и дает большую гибкость, к примеру в Litmus есть Multi Tenant, GitOps (Event-Driven Chaos Injection) и ChaosHub - портал с различными экспериментами от сообщества, хоть их там не много, но уже что-то.

#chaos #chaos_engineering #k8s #kubernetes

https://github.com/litmuschaos/litmus
Подборка утилит, на тему эмуляции сети и имитации распространенных сетевых проблем:

▫️netem — стандартная linux утилита, обеспечивает функциональность эмуляции сети для тестирования протоколов путем имитации свойств глобальных сетей. Эмулирует переменную задержку, потерю, дублирование и изменение порядка.

▫️slow — bash обёртка над netem, если кому некогда разбираться в параметрах

▫️dummynet — это инструмент для эмуляции сети в реальном времени, первоначально разработанный для тестирования сетевых протоколов. Он имитирует/применяет ограничения очереди и пропускной способности, задержки, потери пакетов и эффекты многолучевости.

▫️Comcast — это инструмент, предназначенный для имитации распространенных сетевых проблем, таких как задержки, ограничения полосы пропускания и отброшенные/переупорядоченные/поврежденные пакеты.

▫️Toxiproxy — это фреймворк для моделирования сетевых условий. Он создан специально для работы в средах тестирования, непрерывной интеграции и разработки, поддерживая детерминированное вмешательство в соединения, но с поддержкой рандомизированного хаоса и настройки.

▫️Muxy — это прокси-сервер, который взаимодействует с вашей системой и контекстом приложения, работая на уровнях 4, 5 и 7, позволяя вам моделировать распространенные сценарии сбоев с точки зрения тестируемого приложения, например, API или веб-приложение.

▫️Pumba — это инструмент командной строки для тестирования хаоса для контейнеров Docker. Pumba нарушает работу ваших контейнеров, вызывая сбой контейнерного приложения, эмулируя сбои сети и стресс-тестируя ресурсы контейнера.

▫️sitespeed.io - инструмент для тестирования скорости работы веб-приложения, позволяет гибко настраивать лимиты подключения со стороны браузера, на выходе имеем как встроенный дашборд так и метрики prometheus с алертами.

#chaos #chaos_engineering #proxy #testing #network
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Pyroscope — это платформа непрерывного профилирования с открытым исходным кодом. Есть дашборд, очень аккуратно утилизирует CPU и замечательно сжимает данные на диске, что позволяет хранить годами данные от нескольких приложений.

Поможет вам:

- Найти проблемы с производительностью и узкие места в вашем коде
- Устранять проблемы с высокой загрузкой ЦП
- Разобраться с деревом вызовов вашего приложения
- Отслеживать изменения хронологически

Дэмо версия для потрогать

Интеграции:
- Ruby (через rbspy)
- Python (через py-spy)
- Go (через pprof)
- Linux eBPF (через profile.py из bcc-tools)
- PHP (через phpspy)
- .NET (через dotnet trace)
- Java (через async-profiler)
- Rust (в процессе разработки, через pprof-rs)
- Node (в поиске участников для реализации)

#profiling #debug #go #net #python #bpf #rust

https://github.com/pyroscope-io/pyroscope
🔥2
Kubenurse - это небольшой сервис, который отслеживает все сетевые подключения в кластере Kubernetes. Kubenurse измеряет продолжительность запросов, записывает ошибки и экспортирует эти показатели в формате Prometheus.

Все выполненные проверки предоставляют метрики, которые можно использовать для мониторинга/предупреждения:

▫️Задержки и ошибки сети SDN
▫️Задержки и ошибки сети kubelet-to-kubelet
▫️Связь pod-apiserver
▫️Задержки и ошибки приема-передачи
▫️Задержки и ошибки сервисов (kube-proxy)
▫️Основные проблемы kube-apiserver
▫️Ошибки CoreDNS
▫️Внешние ошибки разрешения DNS

#k8s #kubernetes #prometheus #network

https://github.com/postfinance/kubenurse
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Plumber — это CLI инструмент для проверки, передачи, обмена сообщениями и перенаправления данных в таких системах как Kafka, RabbitMQ и подобных брокерах сообщений.

Инструмент позволяет:

▫️Безопасный просмотр содержимого ваших потоков данных
▫️Запись простых или закодированных данных в любую систему
▫️Маршрутизация данных из одного места в другое
▫️Декодирование данных protobuf/avro/thrift/JSON в режиме реального времени
▫️Ретрансляция данных в Batch platform
▫️Воспроизведение событий в системе сообщений в вашей локальной сети

А поддерживает эта утилита и в правду много систем. А именно: Kafka, RabbitMQ, GCP PubSub, MQTT, Amazon Kinesis Streams, Amazon SQS, Amazon SNS, ActiveMQ, Azure Service Bus, Azure Event Hub, NATS, NATS Streaming, Redis-PubSub, Redis-Streams, Postgres CDC, MongoDB CDC, Apache Pulsar, NSQ, KubeMQ 😳

#cli #kafka #rabbitmq #pubsub

https://github.com/batchcorp/plumber
👍2
jo — небольшая утилита для создания объектов JSON.

К примеру:

jo -p name=jo n=17 parser=false
получим:
{
"name": "jo",
"n": 17,
"parser": false
}

или

seq 1 10 | jo -a
получим:
[1,2,3,4,5,6,7,8,9,10]

#cli #json

https://github.com/jpmens/jo
Тут у Keycloak вышел релиз 17.0 - дистрибутив по умолчанию теперь основан на Quarkus, прощай WildFly. Это изменение должно сделать keycloak быстрее, компактнее и намного проще в настройке.

При этом, способ запуска и настройки Keycloak радикально изменился, по этому поддерживать дистрибутив WildFly будут до июня 2022 года.

#keycloak

https://github.com/keycloak/keycloak/releases/tag/17.0.0
😱2👍1🔥1
Mizu - простое, но мощное средство просмотра API трафика для Kubernetes, позволяющее просматривать все взаимодействия API между микросервисами, чтобы помочь вам отлаживать регрессии и устранять неполадки.

Ну это, что-то на подобии TCPDump и Wireshark для Kubernetes.

Имеет CLI, гибкую фильтрацию и отслеживает в реальном времени трафик:

▫️HTTP/1.x (REST, GraphQL, SOAP, etc.)
▫️HTTP/2 (gRPC)
▫️AMQP (RabbitMQ, Apache Qpid, etc.)
▫️Apache Kafka
▫️Redis

#k8s #kubernetes #network #wireshark #tcpdump

https://github.com/up9inc/mizu
RedisJSON — это модуль Redis, который реализует стандарт обмена данными JSON ECMA-404 в качестве собственного типа данных. Он позволяет хранить, обновлять и извлекать значения JSON из ключей (документов) Redis.

Документация

Подгружается в сервер как модуль
redis-server --loadmodule ./target/release/librejson.so

Или берем готовый контейнер redislabs/rejson:latest

Также есть клиентские библиотеки на Node.js, Java, Python, Go, .NET, PHP и Ruby. И скорее всего ваша библиотека уже умеет в JSON.

#redis #json

https://github.com/RedisJSON/RedisJSON
XSV — это программа командной строки для индексации, нарезки, анализа, разделения и объединения CSV-файлов. Написана на Rust.

▫️cat — объединение CSV по строке или по столбцу
▫️count — подсчет строк в CSV (Мгновенно с индексом)
▫️fixlengths — заставить CSV иметь записи одинаковой длины, либо дополняя, либо усекая их
▫️flatten — плоский вид записей CSV
▫️fmt — переформатировать данные CSV с другими разделителями, разделителями записей или правилами цитирования
▫️frequency — создание частотных таблиц для каждого столбца в данных CSV. (Использует параллелизм)
▫️headers — показать заголовки данных CSV
▫️index — создать индекс для CSV
▫️input - чтение данных CSV с экзотическими правилами цитирования/экранирования
▫️join - внутренние, внешние и перекрестные соединения
▫️partition — разбиение данных CSV на основе значения столбца
▫️sample — произвольное рисование строк из данных CSV с использованием выборки
▫️reverse — обратный порядок строк в данных CSV
▫️search — запустить регулярное выражение для данных CSV
▫️select — выберите или измените порядок столбцов данных CSV
▫️slice — нарезать строки из любой части CSV
▫️sort — сортировка данных CSV
▫️split — разделить один CSV на множество CSV по N фрагментов
▫️stats — показать основные типы и статистику каждого столбца в CSV
▫️table — показать выровненный вывод любых данных CSV

#csv #cli

https://github.com/BurntSushi/xsv
This media is not supported in your browser
VIEW IN TELEGRAM
hwatch — это альтернативна watch утилите командной строки. Периодически выполняет программу, отображая выходные данные в полноэкранном режиме, записывает результат выполнения команды и может отображать его историю и различия.

#watch #hwatch #cli

https://github.com/blacknon/hwatch
This media is not supported in your browser
VIEW IN TELEGRAM
Netmaker — это платформа для создания и управления быстрыми, безопасными и динамическими виртуальными оверлейными сетями с использованием WireGuard.

Из особенностей:

▫️можно строить одноранговые (Peer-to-Peer) Mesh сети
▫️поддержка Kubernetes и нескольких облаков
▫️удаленный доступ через шлюз
▫️функции OAuth и частного DNS
▫️поддержка Linux, Mac, Windows, FreeBSD, iPhone и Android.
▫️автоматизирует виртуальные сети между ЦОД, облаками и шлюзами
▫️WireGuard предлагает максимальную скорость, производительность и безопасность
▫️создан для масштабирования от малого бизнеса до предприятия.

Руководство / Руководство по Kubernetes

#network #wireguard #mesh #k8s #kubernetes

https://github.com/gravitl/netmaker
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
smag — утилита командной строки для создания графиков из команд и просмотра их в терминале. Это как команда watch, но с графиком вывода.

Примеры использования:

smag 'ping -c1 ya.ru | grep -oP ".*time=\K\d+\.\d+"'

smag "kubectl get pods -A | grep Running | wc -l"

smag "grep ' 404 ' access.log | wc -l" -d

#cli #watch #graph #plot

https://github.com/aantn/smag
👍4
rustdesk — еще одно программное обеспечение для удаленного рабочего стола, написанное на Rust. Работает из коробки, не требует настройки. Вы полностью контролируете свои данные, не беспокоясь о безопасности. Вы можете использовать публичный сервер ретрансляции, настроить или написать свой собственный сервер ретрансляции.

Работает на Linux, MacOS, Windows. Единственное, не умеет пока что в Wayland, только X11.

Вполне сойдет как Open Source и Self-hosted альтернатива всяким TeamViewer, AmmyAdmin, AnyDesk, RAdmin и т.п.

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

#remote #rustdesk #teamviewer #ammyadmin #anydesk #radmin

https://github.com/rustdesk/rustdesk
👍7