notes_devops_engineer
125 subscribers
8 photos
1 file
43 links
Записки DevOps инженера
Download Telegram
При работе с кластерами PostgreSQL, особенно в конфигурациях с высокой доступностью (High Availability, HA), разработчики часто сталкиваются с ошибками типа "cannot execute INSERT in a read-only transaction". Эти ошибки возникают, когда приложение пытается выполнить операцию записи на узел, который в данный момент является репликой (read-only). Особенно остро эта проблема проявляется в моменты переключения мастера: пул соединений вашего приложения может все еще содержать коннекты к бывшему мастеру, ставшему репликой, или же балансировщик может направить новый запрос на запись к реплике.

К счастью, драйверы PostgreSQL предоставляют элегантное решение этой проблемы – параметр строки подключения target_session_attrs. В версии PostgreSQL 14 были добавлены новые значения для target_session_attrs: read-only, primary, standby и prefer-standby. Этот параметр позволяет указать, какого типа сессию ожидает ваше приложение. Наиболее полезным значением для приложений, выполняющих операции чтения и записи, является read-write. В этой статье мы подробно разберем, почему это так важно, продемонстрируем проблему на практике и покажем, как target_session_attrs=read-write спасает ситуацию. Использование target_session_attrs=primary, включая его специфические отличия от read-write, будет подробно рассмотрено далее в статье.

https://habr.com/ru/articles/910508/
Разработчики Coroot зарелизили версию 1.12:

1. Availability risks
https://docs.coroot.com/risks/overview

2. Dashboards
https://docs.coroot.com/dashboards/overview

3. GPU monitoring
https://docs.coroot.com/inspections/gpu

4. New layout (the main navigation menu on the left)
https://demo.coroot.com
Протестировал Pyroscope + Gradle для профилирования сборок Android APK , но название проекта в Pyroscope создается сгенерированное, а не передается через параметры. Сделал issue https://github.com/grafana/pyroscope/issues/4243
Полезный шаблон для gitlab merge request (.gitlab/merge_request_templates/default.md):
/assign_reviewer @user1 @user2 @user2
/assign me

## Required
Обязательные условия прохождения **merge request**.

- [ ] **Я** отвечаю за доведение функционала до **production** окружения.
- [ ] Код соответствует принятым [соглашениям IT департамента](ссылка)
- [ ] Не нарушена обратная совместимость миграций.
- [ ] Не нарушена обратная совместимость API.
- [ ] Перед созданием **merge request** были выполнены `make format`, `make lint` и `make test`.


## Conformity
Соглашения которые можно пропустить/выполнить из-за особенностей задачи.

- [ ] Функционал протестирован перед отправкой Merge Request.
- [ ] Необходимо тестирование на dev/uat окружении.
- [ ] Необходим пропуск job `migrations-lint`.
Обнаружение отсутствия данных или результатов в алертах и recording rules:
1) Следующее выражение вернёт правила оповещения, которые, скорее всего, содержат опечатку или неправильный селектор временных рядов: max(vmalert_alerting_rules_last_evaluation_series_fetched) by (group, alertname) == 0
2) Чтобы найти recording rules, которые не генерируют данные, выполните следующий запрос: sum(vmalert_recording_rules_last_evaluation_samples) by (group, recording) < 1

Подробности: https://victoriametrics.com/blog/never-firing-alerts/
Форк kaniko https://github.com/chainguard-dev/kaniko, который обещают поддерживать так как исходный проект больше не поддерживается.
В sentry-kubernetes чарт смержили 2 интересных PR:
1) Adds support for configuring a separate distributedClusterName for external ClickHouse - https://github.com/sentry-kubernetes/charts/pull/1780

2) add errors-only mode from original self-hosted compose - https://github.com/sentry-kubernetes/charts/pull/1810

Функционал будет доступен в версии 26.22.0 как только Mokto сделает релиз.
Forwarded from 𝚔𝚟𝚊𝚙𝚜
К слову о дичи, я тут давеча с ресурсами и реквестами разбирался в одном кластере. Написал целую тулзу kubectl ps, это эдакий kubectl top но на стеройдах, умеет реквесты/лимиты показывать и по всякому их сравнивать с реальным потреблением.

Возможно кому-то будет полезно
https://github.com/aenix-io/kubectl-ps

Синтаксис позабористее чем у ps aux получился, в общем любой фидбек приветствуется

https://github.com/aenix-io/kubectl-ps
Вышла версия 0.1.0 инструмента VictoriaTraces: https://github.com/VictoriaMetrics/VictoriaTraces/releases/tag/v0.1.0

VictoriaTraces аналог https://github.com/grafana/tempo.
Напомню, Grafana Tempo — это масштабируемая, высокопроизводительная и экономичная система распределенной трассировки с открытым исходным кодом. Желаю успехов VictoriaTraces!
С 28 августа 2025 года в публичном каталоге Bitnami произойдут изменения:

- Прекратится генерация образов Debian, существующие переедут в Bitnami Legacy repository.

- Бесплатные hardened образы для разработки будут доступны только с тегом "latest" на hub.docker.com/u/bitnamisecure.

- Production-ready образы и Helm charts перейдут в Bitnami Secure Images (с hardening, CVE, SBOM, поддержкой и LTS).

- Старые образы (включая версии) будут перемещены в Bitnami Legacy repository (без обновлений и поддержки).


Рекомендации пользователям:

- Обновить CI/CD пайплайны, Helm репозитории и ссылки на образы.

- Протестировать hardened образы на hub.docker.com/u/bitnamisecure.

- Для production подписаться на Bitnami Secure Images (для поддержки и обновлений).

- Как временное решение - использовать Bitnami Legacy repository.


Различия репозиториев:

- Bitnami Mainline: актуальные образы (бесплатные и enterprise). После 28 августа 2025 - только hardened образы.

- Bitnami Legacy: архив старых версий (без обновлений).


Бесплатные образы сохранятся, но в ограниченном количестве и только "latest" версии. Для продолжения поддержки старых версий и приложений необходимо подписаться на Bitnami Secure Images. Исходный код Bitnami доступен на GitHub (Apache 2 license).


Для продолжения поддержки Helm charts рекомендуется подписка на Bitnami Secure Images. Временное решение - указать Bitnami Legacy repository в настройках Helm chart.

Подробности https://github.com/bitnami/containers/issues/83267
Вышла новая версия https://github.com/romashqua/alertcli - консольной утилиты для просмотра алертов. теперь не нужно собирать ее из исходников.

alertcli alerts list -A -u https://alertmanager.k8s.dev.corp | grep -v ScrapePoolHasNoTargets
ALERT SEVERITY STATE SINCE INSTANCE SUMMARY SILENCED BY INHIBITED BY
KubernetesJobFailed warning active 25h0m0s victoria-metrics-k8s-stack-kube-state-metrics.victoria-metrics.svc:8080 Kubernetes Job failed (instance victoria-metrics-k8s-stack-kube-state-metrics.victoria-metrics.svc:8080)