Dev-Ops.su
306 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
Я было дело bash скрипт kube-dump для бэкапа манифестов кубера на jq/yq городил. А оказывается есть krew плагин neat, который я как то обошел стороной. Плагин вырезает лишнюю метадату из манифестов, хоть это и не бэкап утилита, но для сохранения чистеньких манифестов не отходя от kubectl, очень даже удобно.

#krew #kubectl

https://github.com/itaysk/kubectl-neat
Наткнулся на решение kubernetes-replicator которое позволяет реплицировать ConfigMap, Secret, Role и RoleBinding между неймспейсами вашего кластера kubernetes. Все правила репликации описываются в анотации к ресурсу, репликация может быть как по Pull так и Push модели.

Ранее также упоминал kubernetes-reflector для синхронизации Secret и ConfigMap между неймспейсами.

#k8s #kubernetes #integrity

https://github.com/mittwald/kubernetes-replicator
1👍1
Ух, какую штуку нашел, кажется у Redis есть достойная замена из поднебесной.

Kvrocks - это распределенная ключ-значение база данных NoSQL, основанная на RocksDB и совместимая с протоколом Redis. Основная цель - снизить стоимость памяти и увеличить возможности по сравнению с Redis. Дизайн репликации и хранилища был вдохновлен Rockplicator и Blackwidow, используются bin и WAL логи.

Kvrocks имеет следующие ключевые особенности:

- Протокол Redis - можно использовать клиент Redis для работы с kvrocks;
- Неймспейсы - на подобии redis db, но с использованием токена для каждого пространства имен;
- Репликация - асинхронная репликация с использованием binlog, например как в MySQL;
- Высокая доступность - поддерживает redis sentinel для аварийного переключения при отказе ведущего или ведомого экземпляра.

Больше подробностей найдете в блоге kvrocks на medium и wiki

А тут результаты бэнчмарка (CN), где обещают такую же производительность на SSD у Kvrocks как у Redis в ОЗУ.

Prometeus exporter и утилита для миграции с Redis прилагается.

#redis #kvrocks #rocksdb #nosql

https://github.com/KvrocksLabs/kvrocks
👍5
Kubernetes Resource Report - Скрипт для создания HTML-отчета о запросах ЦП/памяти и их утилизации (собранных с помощью Metrics API) для одного или нескольких кластеров Kubernetes.

Основная цель отчета о ресурсах Kubernetes - помочь оптимизировать запросы ресурсов Kubernetes и избежать простоя. Осторожно, отчет не имеет авторизации, не публикуйте это публично!

Демонстрационная версия

#k8s #kubernetes #costs #resources

https://codeberg.org/hjacobs/kube-resource-report
Для тех кому избыточны Python генерированные HTML отчеты о утилизации ресурсов в кластере Kubernetes, а kubectl top и describe долго и не практично, есть простой CLI инструмент - kube-capacity.

Распространяется как самостоятельный CLI инструмент так и в виде Krew плагина для kubectl.

Попробуйте сами:

kubectl krew install resource-capacity
kubectl resource-capacity --util --sort cpu.util
kubectl resource-capacity --pods

#k8s #kubernetes #krew #costs #resources

https://github.com/robscott/kube-capacity
👍1
Тут timescale оказывается свой инструмент для установки набора observability развивает.

Tobs - CLI утилита (инсталятор Helm чартов), цель которой — максимально упростить установку полного стека наблюдаемости (Observability Stack) в кластер Kubernetes. Установит в кластер и настроит:

- Prometheus
- AlertManager
- Grafana
- Node-Exporter
- Kube-State-Metrics
- Prometheus-Operator
- Promscale
- TimescaleDB
- Promlens
- Opentelemetry-Operator
- Jaeger Query

Но стоит ли использовать TimeScale (PromScale) для долгосрочного хранения метрик, это спорный вопрос. На всякий случай приложу пару статей с сравнением:
- VictoriaMetrics vs TimescaleDB vs InfluxDB
- Promscale vs VictoriaMetrics 😲

#k8s #kubernetes #prometheus #timescale #promscale #observability #jaeger #grafana #alertmanager

https://github.com/timescale/tobs
😱1
ZomboDB привносит в Postgres мощные функции текстового поиска и аналитики, используя Elasticsearch в качестве типа индексов.

С технической точки зрения ZomboDB - это родное расширение Postgres, которое реализует API Postgres Index Access Method. Как собственный тип индекса Postgres, ZomboDB позволяет вам создавать индекс zombodb в ваших существующих таблицах Postgres. В этот момент ZomboDB полностью управляет удаленным индексом Elasticsearch и гарантирует транзакционно корректные результаты текстового поиска.

#postgres #elasticsearch

https://github.com/zombodb/zombodb
K8up (произносится ketchup) — это оператор резервного копирования Kubernetes, распространяемый через Helm, совместимый с OpenShift и обычным Kubernetes.

— Делает резервную копию всех PVC, помеченных как RWM или с определенной меткой.
— Создание резервных копий по требованию или через планировщик.
— Резервные копии любых приложений, которые умеют писать данные на стандартный вывод или в файл.
— Проверка целостности резервных копий.
— Ротация бэкапов.
— Поддержка S3-совместимых хранилищ.

Примеры смотрите в документации
А что бы было понятнее, вот пример аннотации для бэкапа PostgreSQL

template:
metadata:
labels:
app: postgresql
annotations:
k8up.io/backupcommand: >-
sh -c
'
PGDATABASE="$POSTGRES_DB"
PGUSER="$POSTGRES_USER"
PGPASSWORD="$POSTGRES_PASSWORD"
pg_dump --clean
'
k8up.io/file-extension: .sql
spec:
containers:
- name: postgres
image: docker.io/bitnami/postgresql:11

#k8s #kubernetes #backup

https://github.com/k8up-io/k8up
👍2🔥1
Deprecations AKA KubePug - утилита для проверки устаревших версий API в Kubernetes, поставляется как подключаемый модуль (krew deprecations) для kubectl и самостоятельная утилита kubepug.

Kubepug получает информацию о устаревших ресурсах из API Kubernetes, проверяет текущий кластер и размещенные в нем ресурсы или файлы переданные на входе с полученной информацией из кластера. На выходе получите отчет, что следует актуализировать.

Установим krew плагин:
kubectl krew install deprecations

Пример как проверить Helm шаблон на совместимость с кубером 1.22.0
helm template -f values.yaml .0 | kubepug --k8s-version v1.22.0 --input-file=-

Также ранее упоминал похожие утилиты Kubent и Pluto

#k8s #kubernetes #deprecation

https://github.com/rikatz/kubepug
prometheus_bot - бот для отправки событий Alertmanager в Telegram.

Со стороны Alertmanager настраиваем webhook_configs для отправки сообщений в бота, в боте настраиваем токен. На этом всё, никаких дополнительных команд бот не умеет. Но умеет использовать свой персональный gotmpl для сообщений, форматировать дату/время и единицы измерения.

#prometheus #alertmanager #telegram #bot

https://github.com/inCaller/prometheus_bot
🔥2
alertmanager-bot - бот для отправки событий Alertmanager в Telegram.

Этот бот умеет в разный набор комманд:
/start - Подписаться на оповещения.
/stop - Отписаться от уведомлений.
/status - Распечатать текущий статус.
/alerts - Список всех предупреждений.
/silences - Список всех отключенных уведомлений.
/chats - Список всех пользователей и групповых чатов, которые подписались.

Если сравнивать с prometheus_bot, здесь мы имеем необходимость в своей БД (bolt, etcd, consul), в отличии от prometheus_bot, где используется обычная веб-хук труба. Выбирайте, что вам подходит лучше, управляемый или простой бот.

#prometheus #alertmanager #telegram #bot

https://github.com/metalmatze/alertmanager-bot
1👍1🔥1
Нашел подборку готовых Archi моделей Cloud Native Architectural Models.

Содержит модели для CAAS, собственных облачных приложений, приложений 12/15 Factor с CI/CD/CS, мониторингом и управлением журналами. Компоненты инфраструктуры включают OpenShift, Storage, Cloudforms, JBoss Java Web Server, JBoss Enterprise Application Server, JBoss Business Rules Management, JBoss Data Grid, JBoss Data Virtualization и Ansible.

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

Модель сохранена при помощи coArchi, про него я ранее писал на хабре, кто не знаком, там можно ознакомится с вводной.

#archi #archimate #coarchi

https://github.com/alberttwong/archi_cloudnative
Какую выбрать платформу для коллективной работы над локализацией приложений?

▫️Есть, наверное всем знакомый Crowdin, предоставляется только как сервис с разными тарифами, но для OpenSource проектов можно попросить бесплатное размещение.

А что есть из On-Premise?

▫️Weblate - веб-система непрерывной локализации с лицензией GPL-3.0 License, довольно зрелое решение. И скорее всего вы найдете его первым при попытке найти OpenSource альтернативу Crowdin

▫️Pontoon - Платформа локализации Mozilla с лицензией BSD-3-Clause License. Очень напоминает своим интерфейсом Crowdin, и на нем кстати ведется работа над переводами Firefox и прочих продуктов Mozilla.

И что выбрать, Weblate или Ponton? Оба решения написаны на Python с использованием Django и имеют очень похожий набор функционала, интеграция с SCM, база переводов, предложения переводов, OAuth.

Я считаю Pontoon куда привлекательнее. внешне, имеет более приятный и отзывчивый интерфейс, на него будет проще пересесть переводчикам, ранее работавшим с Crodwin. Да и само приложение требует значительно меньше ресурсов для работы, weblate к примеру, только, что бы запустится, потребовал 4 ядра и 12 Gi в лимитах контейнера, Ponton же ограничился 2/2 и вполне не плохо работал.

Конечно еще есть такие сервисы как Phrase, POEditor, Transifex, Lokalise и т.п., а если у вас всего один небольшой проект, вы можете обойтись свободным десктопным poedit

Целью было скорее рассказать о Pontoon, ведь он лежит совсем не на верху поисковой выдачи. И может кому-то помочь с выбором.

#localization #crodwin #weblate #ponton #gettext #po
Hierarchical Namespace Controller (HNC) - проект из Kubernetes SIG по созданию иерархических (вложенных) пространств имён (sub-namespace) в кластере Kubernetes. Проект развивается с целью решения вопроса мультиарендности (multitenancy) кластера Kubernetes между разными потребителями.

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

Ранее упоминал альтернативное решение, оператор Capsule позволяющий объединить несколько неймспейсов кластера Kubernetes в одно мультиарендное пространство.

#k8s #kubernetes #multitenancy #operator

https://github.com/kubernetes-sigs/hierarchical-namespaces
Accurate оператор для создания вложенных пространств имён (sub-namespace) в кластере Kubernetes.

Это довольно молодой (сейчас beta) конкурент Hierarchical Namespace Controller (HNC)

И Accurate, и HNC преследуют одну и ту же цель — обеспечить лучшее удобство использования пространства имен в многопользовательских средах Kubernetes.

Accurate более точен, чем HNC, в распространении ресурсов, потому что Accurate использует способ согласия, а HNC использует способ отказа. При использовании Accurate будут распространяться только ресурсы, аннотированные с помощью accurate.cybozu.com/propagate. При использовании HNC будут распространяться все ресурсы, за исключением специально аннотированных.

Предположим, вы хотите распространять только секрет для извлечения личных изображений. С HNC это может быть довольно сложно, потому что секреты часто генерируются из другого ресурса. Такие сгенерированные секреты часто не могут иметь пользовательские аннотации. Как следствие, такие секреты будут распространяться на подпространства имен, что может вызвать проблемы с безопасностью.

Больше подробностей, вы найдёте в документации.

#k8s #kubernetes #multitenancy #operator

https://github.com/cybozu-go/accurate
🔥2👍1
Опа, нашлась мидлварь для работы с внешним агентом 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