Telegram Web
Привет! На связи KTS.

Мы подготовили новый челлендж для DevOps-инженеров в честь наступающего Дня Космонавтики.

Вы получите доступ к кластеру, в котором запущен ArgoCD. Через него вам нужно будет запустить приложение: оно рабочее и даже описано в Helm, но деплой выполнить не получается — каждый раз возникает какая-то проблема.

Ваша задача — найти ошибку в конфигурации и заставить приложение работать. Уверены в своих силах? Тогда переходите в бота и приступайте!

Десять самых успешных участников получат в награду наши фирменные футболки 💚
👎4
FlowExporter is a sidecar that runs alongside all Netflix workloads in the AWS Cloud. It uses eBPF and TCP tracepoints to monitor TCP socket state changes. When a TCP socket closes, FlowExporter generates a flow log record that includes the IP addresses, ports, timestamps, and additional socket statistics. On average, 5 million records are produced per second.
. . .

FlowCollector, a backend service, collects flow logs from FlowExporter instances across the fleet, attributes the IP addresses, and sends these attributed flows to Netflix’s Data Mesh for subsequent stream and batch processing.
. . .
As noted in our previous blog post, our initial attribution approach relied on Sonar, an internal IP address tracking service that emits an event whenever an IP address in Netflix’s AWS VPCs is assigned or unassigned to a workload.
. . .
Attributing local IP addresses for container workloads running on Netflix’s container platform, Titus, is more challenging. FlowExporter runs at the container host level, where each host manages multiple container workloads with different identities. When FlowExporter’s eBPF programs receive a socket event from TCP tracepoints in the kernel, the socket may have been created by one of the container workloads or by the host itself. Therefore, FlowExporter must determine which workload to attribute the socket’s local IP address to. To solve this problem, we leveraged IPMan, Netflix’s container IP address assignment service.

How Netflix Accurately Attributes eBPF Flow Logs
https://netflixtechblog.com/how-netflix-accurately-attributes-ebpf-flow-logs-afe6d644a3bc

Предыдущий пост из этой серии
How Netflix uses eBPF flow logs at scale for network insight
https://netflixtechblog.com/how-netflix-uses-ebpf-flow-logs-at-scale-for-network-insight-e3ea997dca96

Спасибо подписчику за наводку
👍1
Как рассказывать архитектурные диаграммы / Максим Смирнов

В докладе Максим рассказывает про правильные презентации архитектур.

Лично мне прослушивание доклада далось тяжело. Я несколько раз переслушивал отдельные фрагменты, вероятно ещё и потому что тему нельзя слушать между делом, а надо прямо выделить время и вовлечься.

Две мысли которые я вынес из доклада — диаграмму надо уметь правильно прочитать и преподнести. Если вы считаете, что нарисовав ADR (или любой другой общепринятый формат) он сам всё скажет за себя то вы ошибаетесь, нужно явно навигировать и объяснять всё детально.

Вторая мысль скорее забавная, процитирую: Архитектор не волшебник, который делает хорошо и для всех. Архитектор делает хорошо но кому то одному. С этой мыслью я не согласен, на мой взгляд архитекторы ПО — это люди которые максимизируют пользу для разных заказчиков в одном решении.

Доклад стоит посмотреть, чтобы чуть лучше понимать как презентовать сложные решения.

Все обзоры по тегу #докладобзор@teamleading
Forwarded from PythonDigest
Измерение покрытия API тестами на основе Swagger для Python
https://ift.tt/DvBnQGE

В этой статье я расскажу про swagger-coverage-tool — инструмент, который показывает, насколько полно ваши тесты покрывают API по спецификации Swagger (OpenAPI). Всё работает автоматически, без изменений в логике тестов. Поддерживаются httpx и requests, отчёт генерируется в один клик. Идеально, если вы хотите объективно видеть, что действительно проверяют ваши API автотесты.
https://www.tgoop.com/bezumniy_kot_work/10

🚀 Kubernetes The Hard Way — по-настоящему

Почти два года, тысячи перезапусков, багов, а также сотни пересобранных кластеров и море мата (в голове 😅) — и всё это вылилось в одну, но очень насыщенную статью.
Kubernetes вручную, от и до, без kubeadm и прочих поблажек.

Я собрал: — полный пошаговый гайд по сборке Kuberentes.
— удобные alias’ы, функции и обёртки
— десятки скриптов, которые реально работают в бою
— важные моменты, о которых молчат в туториалах

🔥 Всё это оформлено в удобной документации на MDX структуре, с фокусом на читаемость и практику.

Полную статью можно почитать здесь 👉 Ссылка Тут
Фидбек и звездочки Github приветствуется 🙌
9👍1
Forwarded from k8s (in)security (r0binak)
Сегодня хотим поделиться очередным новым проектом с просторов GitHubDracan. Довольно сложно описать Dracan одним предложением, однако скорее его можно отнести к чему-то между Authorization Policy от Istio, Network Policy и WAF. Сейчас он умеет следующее:

- HTTP Method Filtering
- JSON Validation
- Request Limiting
- Payload Limitation
- URI Filtering
- Header Validation


Авторы позиционируют его как легковесный инструмент, для эксплуатации которого не нужен опыт настройки WAF или большая DevOps экспертиза.
Очереди в 2025м, что выбрать: Kafka, RabbitMQ, NATS или что-то ещё?

Готова статья-расшифровка нашего стрима с Владимиром Перепелицей. Она получилась очень длинная, никогда в жизни такого на Хабре ещё не публиковали, но это потому что видео длинное. Ну и просмотреть расшифровку всё быстрее, чем просмотреть видео.

Для затравки вот кусочек статьи, где Владимир критикует RabbitMQ.

Алексей Рыбак: Где “накосяпорили” разработчики Rabbit, что скейлинг настолько неудобный? В двух словах это можно каким-то образом описать?

Владимир Перепелица: Смотри, мое личное впечатление от Rabbit, где накосячили его разработчики.
Взяв Erlang, они не сделали архитектуру масштабируемой, при том, что Erlang вроде бы под это заточен, он должен уметь раскидывать все по разным хостам, но они под это не заточили всю систему. Они не сделали систему, как в Kafka, докинул брокеров, раскидал на них задачи и система тащит больше. То есть они предусматривают, что у тебя есть узел, вот он брокер, все, у тебя все задачи проходят через этот брокер. Ты можешь поставить запасной, ты можешь поставить реплики, но они тоже будут запасными.

Алексей Рыбак: Я не могу сделать proxy-брокер?

Владимир Перепелица: Ну, можешь.

Алексей Рыбак: Взять и сказать, типа, раунд-робином давай кидай на этот апстрим.

Владимир Перепелица: Это все сделано костылями. Там есть федерация, через которую можно это все раскидывать. Я пока в курсе был Rabbit, то есть хотел показать, как бы это можно масштабировать так, чтобы красиво. Красиво не получилось. А показывать гору костылей как-то не очень. То есть, в общем, из коробки, вот прям поставил кластер, и он у тебя скейлится. Этого нет. Да, сделать это можно, но это, опять же, уже что-то добавленное сбоку, расширениями, не всегда просто устанавливаемыми. И странно, при том, что сама платформа языковая, кажется, это могла бы дать.

Ну и вторая ошибка – это, собственно, да, выбор платформы. Дефицит разработчиков всегда сказывается на популярности инструмента. То есть найти Erlang-разработчика – это такой, скажем так, челлендж, который еще захочет поинвестировать свое личное время, потому что это open-source. Гораздо проще сейчас найти GO'шный или RUST'овый open-source, или Java'вый, собственно, Kafka – тому пример. Java у нас много. Ее можно недолюбливать, у нее есть куча проблем, но она чертовски популярна. Поэтому выбор Erlang как инструмента, скажем так, скорее затормозил его развитие. И сейчас, если человек приходит, смотрит, возможно, пытается что-то улучшить, такой: «Ой, там что-то, что сейчас не популярно», человек уходит.

Читайте полную версию на Хабре: https://habr.com/ru/articles/899670/

——
Наши ближайшие запуски: PostgreSQL 17: архитектура и тюнинг SQL, Highload-буткемп, Системный дизайн.
👎1
Forwarded from DevOps FM
👩‍💻 Disaster recovery: пять рекомендаций от Terraform

Disaster recovery — это стратегии и инструменты, которые помогают быстро восстановить инфраструктуру после сбоев и минимизировать простой. Традиционные DR-решения могут стоить сотни тысяч долларов в год. Terraform помогает реализовать эффективные стратегии аварийного восстановления, сокращая время простоя и потери данных, а также уменьшая затраты на инфраструктуру.

4 основных стратегии, которые можно реализовать с Terraform:

1. Backup & Restore

Самая базовая и наименее затратная стратегия. Однако, в зависимости от объема данных и процесса восстановления, может привести к высоким показателям RTO и RPO. Используйте -refresh-only для синхронизации состояния после восстановления из резервной копии, чтобы избежать дрейфа.

2. Pilot Light

Это стратегия, когда минимально необходимая инфраструктура постоянно поддерживается в рабочем состоянии, а при сбое быстро разворачивается полноценная копия. Через условные выражения в Terraform можно разворачивать только минимальный набор ресурсов, а остальные оставить выключенными. С такой стратегией масштабировать инфраструктуру до необходимого состояния быстрее, чем в Backup & Restore.

3. Active/Passive

При выборе данной стратегии, у вас будет два окружения: активное и пассивное, которое стоит в режиме ожидания и включается в случае сбоя основной. Пассивное минимально синхронизируется с активным, но не обслуживает пользователей. В Terraform можно отдельно помечать активный и пассивный стенд в конфигурации через conditionals. А при инциденте менять роли, активируя пассивную инфраструктуру и почти мгновенно масштабируя её до полной.

4. Multi-Region Active/Active

Дорогостоящая, но надёжная стратегия. Полноценные среды развёрнуты в нескольких регионах и одновременно обслуживают пользователей. Если один регион выходит из строя, трафик автоматически перенаправляется в другие работоспособные среды. Здесь модули Terraform могут использоваться для инкапсуляции и повторного использования компонентов инфраструктуры.

#devops #terraform
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4👍31
Forwarded from Azalio_tech (Mikhail [azalio] Petrov)
🔒 Отключаем анонимный доступ к kube-apiserver, но оставляем health checks!

Привет! Недавно ко мне пришел коллега-безопасник (Дима привет!) с интересным вопросом: как полностью отключить анонимный доступ к API-серверу Kubernetes, но оставить рабочими проверки /livez, /readyz и /healthz? 🤔 Сходу не ответил, полез копаться в исходниках и KEPах.

Проблема в том, что по умолчанию (`--anonymous-auth=true`) любой может дернуть эндпоинты health-чеков и не только health-чеков:

curl -k https://<API_SERVER_IP>:6443/livez
# Output: ok

Это удобно, но создает потенциальный вектор атаки, если RBAC настроен не идеально или найдется уязвимость. Безопасники такое не любят. 😟

К счастью, в KEP-4633 сообщество Kubernetes предложило решение! Теперь можно тонко настроить, к каким путям разрешен анонимный доступ, даже если глобально он выключен.

Сделать это можно так:

Сначала выключаем глобальный анонимный доступ в манифесте kube-apiserver:

spec:
containers:
- command:
- kube-apiserver
# ... другие флаги ...
- --anonymous-auth=false # <--- Выключаем!
- --authentication-config=/etc/kubernetes/auth-config.yaml # <--- Указываем конфиг


Затем создаем файл конфигурации /etc/kubernetes/auth-config.yaml на control plane нодах и монтируем его в под kube-apiserver:

# /etc/kubernetes/auth-config.yaml
apiVersion: apiserver.config.k8s.io/v1beta1
kind: AuthenticationConfiguration
anonymous:
enabled: true # Включаем анонимный доступ *только* для указанных путей
conditions:
- path: /livez
- path: /readyz
- path: /healthz

*(Не забудьте добавить volume и volumeMount в манифест kube-apiserver для этого файла)*

В итоге получаем:
- Запросы к /livez, /readyz, /healthz проходят как system:anonymous.
- Запросы к другим путям (например, /apis) без аутентификации получают 401 Unauthorized.

Кстати, эта функциональность появилась как Alpha в Kubernetes 1.31 и стала Beta в 1.32.

Теперь можно спать спокойнее, зная, что анонимный доступ под контролем!

#kubernetes #k8s #security #authentication #kubeadm #devops #infosec
👍3
Forwarded from /usr/bin
Как работает ptrace в Linux и зачем он нужен

С ptrace можно подключаться к чужим процессам, читать и менять их память, перехватывать системные вызовы — и даже вежливо уволить sleep 9999. Читать дальше.
Forwarded from DevOps&SRE Library
updatecli

Automatically open a PR on your GitOps repository when a third party service publishes an update


https://github.com/updatecli/updatecli
Forwarded from Мониторим ИТ
How to use Prometheus to efficiently detect anomalies at scale

Допустим, вы работаете в дежурной смене и вам посреди ночи приходит уведомление. Вы его открываете, там ссылка на дашборд мониторинга, где вы задержку выполнения транзакций. Но является ли этот всплеск нормальным для этого времени суток? Является ли он вообще актуальным? Следующее, что вы делаете — вы расширяете временное окно и проверяете другие связанные показатели, пытаясь выяснить, что происходит.

Такая вот обычная ситуация. В этой статье в блоге Grafana разбираются какие математические выражения помогут наиболее эффективно и быстро обнаружить аномалии на различных графиках производительности.
💡 Go-кэш за 5 минут

🔧 Установка
go get github.com/patrickmn/go-cache


🚀 Быстрый пример
c := cache.New(5*time.Minute, 10*time.Minute)
c.Set("foo", "bar", cache.DefaultExpiration)

val, found := c.Get("foo")
if found {
fmt.Println("Found:", val)
}

• 5m — TTL по умолчанию для всех ключей
• 10m — интервал очистки просроченных ключей
• можно указать cache.NoExpiration — чтобы хранить вечно

🛠 Полезные методы
// Установить с TTL
c.Set("key", "value", time.Minute)
// Получить значение
c.Get("key")
// Удалить ключ
c.Delete("key")
// Очистить всё
c.Flush()


💬 Какой либой для кэша пользуетесь вы? Делитесь в комментариях👇

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from monhouse.tech
Дорогие друзья, уже на следующей неделе, 23 апреля в Амфитеатре Санкт-Петербургского конгресс-центра Ленполиграфмаш состоится очередной [ Big Monitoring Meetup ] 12!

Программа посвящена мониторингу и включает доклады по тематикам разработки, связи, менеджменту. BMM - площадка, где встречаются профессионалы и энтузиасты отрасли, чтобы обсудить современные тренды, обменяться опытом и найти новые решения для актуальных задач.

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

Встречайте докладчиков двенадцатой конференции:

Презентация "3D визуализация в мониторинге: модный тренд или рабочий инструмент?"
— Андрей Никифоров. Генеральный директор [ ООО «ТРИТВИН» ]

Дискаверинг и мониторинг сетевого оборудования в системе мониторинга Saymon, часть вторая.
— Дмитрий Хандыго. Начальник отдела программных решений [ Inline Technologies ]

Мониторинга много не бывает. Или бывает? А наследованного и самописного?
— Михаил Еграмин. Главный инженер [ ООО «Сети ВЕБА» ]

Мониторинг не ограничен потреблением. Как FinOps помогает не упустить контроль над инфраструктурой.
— Гуляев Андрей. Руководитель развития продукта [ Инферит Клаудмастер ]

Облачная система мониторинга радиовещания.
— Александр Орлов. Менеджер [ ООО "Тракт-Софт" ]

Мониторинг — это просто.
— Вадим Исаканов. Старший инженер [ Платформа контейнеризации «Боцман» ]

Если инциденты случаются - значит это кому-нибудь нужно?​
— Вероника Шапиро. Руководитель направления инфраструктурного мониторинга [ CLOUD.ru ]

Не упустите шанс стать частью профессионального сообщества, получить новые знания и вдохновение для развития своих проектов!

✔️ Зарегистрируйтесь сейчас, количество билетов ограничено

Подпишитесь на наш ТГ канал или ВК сообщество, чтоб не пропустить важные новости

До встречи на конференции [ Big Monitoring Meetup ] 12!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👎1
PythoNN: видео с апрельского митапа

4 апреля прошел очередной #python митап в Нижнем Новгороде.

Было очень душевно и интересно.
Случился аншлаг! Пришло много нижегородцев и приехало очень много гостей: из Москвы, Питера, Кирова и других городов. Спасибо всем!

Было 4 крутых доклада:
- "Are you NATS?" – Гурбанов Михаил https://youtube.com/watch?v=atD3JVWurno
- "Почему исправление опечаток сложнее, чем кажется, и как мы с этим српавляемся" – Дмитрий Бровкин https://youtube.com/watch?v=9HRBwwaMIfA
- "Современный web с современными темплейтами" – Алексей Гончарук https://youtube.com/watch?v=lN3Pz_hUCio
- "Демистификация PostgreSQL-индексов" – Алексей Голобурдин https://youtube.com/watch?v=6kVGSLdj28k

А потом мы сидели в баре до 5 утра.

Что улучшить?
- Первый раз записывал на StreamYard, сделал плохую композицию слайдов и видео докладчика, исправим в следующий раз. Прикрепил все слайды в описании докладов – чтобы была возможность все прочитать и скопировать код
- Поработаем над звуком, сейчас он немного прыгал

Хотите присоединиться?
- Если хотите сделать доклад, пишите мне в личку – лично учу новичков выступать и делать слайды, полная свобода в выборе темы
- Если хотите просто послушать – следите за анонсами в чате и подписывайтесь на мой канал с записями

У нас в Нижнем – просто офигенно, всех ждем в гости! 🌆

| Поддержать | YouTube | GitHub | Чат |
Perforator — система непрерывного профилирования для разных языков

https://github.com/yandex/perforator

Главные фичи:

> Efficient and high-quality collection of kernel + userspace stacks via eBPF
> Scalable storage for storing profiles and binaries
> Support of unwinding without frame pointers and debug symbols on host
> Convenient query language and UI to inspect CPU usage of applications via flamegraphs
> Support for C++, C, Go, and Rust, with experimental support for Java and Python
> Generation of sPGO profiles for building applications with Profile Guided Optimization (PGO) via AutoFDO

Но самое главное – у Perforator есть режим Continuous Profiling, где на сервак ставится агент, который передает информацию о производительности всех сервисов. На что тратит всего около 1% CPU.

Очень полезный и полный пост с анонсом на хабре.
Важное ограничение: пока работает только на x86_64 Linux, ARM поддержка планируется в ближайшем будущем.

Профилируем код на Python

Нас конечно же больше всего интересует, как данная штука умеет профилировать код на питоне.
Пока что работают только версии после 3.12, потому что нативная поддержка perf появилась именно там: https://docs.python.org/3/howto/perf_profiling.html

Смотрим доку, как профилировать питон: https://perforator.tech/docs/en/tutorials/python-profiling
Сначала собираем при помощи docker в пару строк: https://perforator.tech/docs/en/guides/build#container

Прямо в примере в доке есть код, который будет работать неоптимально. Запустим его:


» python server.py
My pid is 53000
Serving on port 9007


И запускаем профилировщик: sudo perforator record --pid $YOUR_PID --duration 1m --serve ":9006"
На http://localhost:9006 вас будет ждать flamegraph работы скрипта.

Перед тем, как его смотреть, нагрузим наш сервак простейшим скриптом:


import requests
import random

while True:
user_id = random.randint(1, 1000000)
requests.get(f"http://localhost:9007/search_user?user_id={user_id}")


Получится вот такой замечательный flamegraph.

Но! Пример из документации не заканчивается просто созданием графика, пример показывает, как его анализировать. Что очень важно. Далее нам предлагают найти узкое место в коде: https://perforator.tech/docs/en/tutorials/python-profiling#optimizing-the-bottleneck

После оптимизации получится так. Потребление CPU упадет с 96% до 26%

Чего хочется?

- Хочется поддержки macos для локального профилирования
- Хочется попробовать в реальном проде :)
- Хочется понять, насколько такие данные помогут средней компании писать более производительные сервисы

Обсуждение: как у вас в компаниях дела с Continuous Profiling?

Про Perforator я узнал благодаря своему старому и доброму товарищу – Евгению Антонову, он ведет канал про важные навыки для тимлидов и два подкаста: КодаКода – про менеджмент и харды, "Три тимлида заходят в бар" – про разные тимлидские штуки, которые будут безусловно полезны для тех, кто решил развиваться в данную ветку карьеры. Советую!

Хотите рассказать про свой опенсорс проект? Пишите в наш чат :)

| Поддержать | YouTube | GitHub | Чат |
Forwarded from k8s (in)security (Дмитрий Евдокимов)
Мы начинаем публиковать доклады с программы БеКон 2025!

1) "Без секретов! Workload Identity Federation: безопасная аутентификация в облаке" (Дмитрий Лютов, Yandex Cloud)

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

2) "Неочевидные и непонятные моменты безопасности Kubernetes" (Дмитрий Евдокимов, Luntry)

Рабочее название доклада было "Ворчание старого деда про k8s security". А лейтмотивом стали вопросы на тренингах "Почему так?", "Почему до сих пор так?", "Почему не иначе?", "Доколе?" и т.д. В итоге, сформировался список таких моментов.

За детальным описанием можно обратиться сюда.
👎2
2025/07/13 13:08:28
Back to Top
HTML Embed Code: