Kubernetes и кот Лихачева
4.84K subscribers
1.13K photos
45 videos
4 files
1.16K links
Все про Kubernetes и немного про кота Маркуса.

Это проект Слёрма – учебного центра для IT-специалистов.

Чат для конструктивного общения: https://t.me/+Q4z_2ckAkBxhNWNi

Задать вопрос: https://t.me/K8sSlurm_bot?start=question
Download Telegram
Всем привет!

Продолжаем пост по урокам от Google.
🔥32👍1
Благодарность тем, кто поучаствовал в опросе.
У нас стало больше понимания, как работать с контентом.
Сейчас мы много думаем над тем, где и как продолжать вещать с нашим контентом(сейчас непростые времена для мессенджеров). Какой канал вы выберете?
Anonymous Poll
18%
Смахнём пыль с ВК🌬
75%
Не вижу проблем. Буду использовать VPN🛡
13%
Перейду на заграничные площадки(Reddit, Medium и т.д.)
7%
Буду читать Дзен
28%
Все новости беру из Habr
1%
Все новости беру из VC.Ru
37%
Использую Youtube
1👍1
Если Telegram заблокируют: где читать посты Виталия о Кубах?

Мы не знаем, что будет с Telegram завтра, и не хотим терять связь с вами. Если доступ к мессенджеру ограничат, мы продолжим публиковать технические разборы, статьи по Kubernetes на других площадках.

🐈Мы активно развиваем нашу группу во ВКонтакте. Это «запасной аэродром» для тех, кому важно иметь доступ к полезному контенту в любой ситуации.

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

⚡️Никакого принуждения: мы не призываем вас переходить туда прямо сейчас. Просто хотим, чтобы вы знали, где мы останемся на связи, если ТГ станет недоступен.

Подпишитесь на всякий случай, чтобы полезные знания всегда были под рукой:

▶️ Ссылка на группу в ВК

Мы в любом случае продолжим делать ИТ-образование понятным и практичным на доступных платформах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚5🔥43
S3 факапы

Чтобы вы не впадали в жар при мысли о стоимости S3, как я на концерте Lorna Shore, приготовил для вас пост.

Разберем разные типовые и не очень ошибки конфигурации.

🐈Но прежде чем к этому перейдем, отвечаю на ожидаемый вопрос: “чувак, мы не живем в aws, зачем нам это?”

Короткий ответ: S3-API стал индустриальным стандартом. Когда ты используешь Yandex Object Storage, Selectel S3, или любого другого провайдера, ты работаешь с тем же протоколом. Провайдеры копируют логику AWS не из любви к Amazon, а потому что все библиотеки (boto3, s3cmd, rclone) написаны под этот стандарт. Следовательно, и архитектурные особенности во многих случаях перекочевали к нам почти без изменений.


Мертвые данные в Standard классе

Объекты годами лежат в дорогом классе Standard, хотя к ним никто не обращается.

Решение: Настройте S3 Lifecycle Policies для автоматического перехода в Glacier Instant Retrieval или Deep Archive через 30–90 дней.

API-ошибки, незаметно сжигающие бюджет

Бесконечные ретраи при ошибках 4xx/5xx могут генерировать миллиарды запросов. Даже если данных там нет

Решение: Внедрите Exponential Backoff с джиттером и настройте алерты в CloudWatch Metrics на всплески ошибок.
В 2024 политику обработки ошибок поменяли, но до этого любой в интернете мог тратить ваш бюджет.

Версионирование

Включенное версионирование без правил удаления заставляет вас платить за каждую когда-либо созданную версию файла.

Решение: Добавьте правило NoncurrentVersionExpiration, чтобы хранить только N последних версий или удалять их спустя 30 дней.

Архивация мелких файлов (Ловушка 128 КБ)

Классы IA (Infrequent Access) и Glacier имеют минимальный расчетный размер объекта 128 КБ. Если ваш файл весит 1 КБ, вы все равно платите за 128 КБ. Плюс, переход (transition) каждого объекта стоит денег.

Решение: Агрегируйте мелкие файлы в TAR/ZIP архивы перед отправкой в холодное хранилище.

Бессмысленные Lifecycle Transitions

Загрузка данных в Standard на 1 день с последующим переходом в другой класс. Вы платите и за PUT в Standard, и за переход.

Решение: Сразу определяйте нужный класс хранения на уровне приложения при загрузке.

Незавершенные Multipart Uploads

Если загрузка большого файла оборвалась, куски остаются в бакете. Они не видны в консоли как объекты, но за их хранение выставляется счет.

Решение: Обязательно добавьте в Lifecycle Policy правило AbortIncompleteMultipartUpload (например через 7 дней).

Игнорирование S3 Gateway Endpoint

Трафик между EC2 и S3 через NAT Gateway стоит много

Решение: Настройте бесплатный S3 Gateway Endpoint. Это направит трафик по внутренней сети AWS, сделав его бесплатным и более быстрым.

Использование S3 как файловой системы

Создание множества бакетов вместо использования префиксов ведет к быстрому достижению лимитов аккаунта

Решение: Используйте структуру префиксов. Помните, что лимиты производительности (3500 PUT / 5500 GET запросов в сек) работают на уровне префикса, а не всего бакета.

S3 Tar Tool вместо ручного пережатия

Многие качают данные на EC2, архивируют и заливают обратно, тратя деньги на трафик

Решение: Используйте инструменты вроде amazon-s3-tar-tool , которые используют API UploadPartCopy для объединения объектов прямо внутри инфраструктуры S3.

Удаление бакетов с публичными именами

После удаления бакета его имя может занять кто угодно. Если на это имя завязаны ваши старые конфиги или ссылки, это путь к Subdomain Takeover.

Решение: Вместо удаления бакета очищайте его содержимое через Lifecycle Rules и оставляйте пустым.

Логирование в себя

Настройка S3 Access Logs в тот же самый бакет, который логируется. Это создает бесконечный цикл логов, которые логгируют логи, экспоненциально увеличивая стоимость.

Решение: Всегда выделяйте отдельный выделенный бакет для хранения логов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥83👍3
Всем привет!

Вчера стартовал «Kubernetes Мега» — твой полный контроль над Enterprise-инфраструктурой. Но у вас есть еще возможность запрыгнуть на курс до окончания продаж курса (до 22.03.26).

Если ты уже работаешь с K8s, но хочешь перестать воспринимать его как «черный ящик» и научиться управлять кластерами на уровне архитектора — время пришло!

🔷Почему это обучение даст результат:

- 79% программы — практика. Тебя ждут 78 часов работы на реальных стендах. Это не просто учебные примеры, а имитация боевого окружения.
- Траблшутинг «на вылет». Ты научишься чинить то, что обычно «ложит» прод: от протухших сертификатов и сбоев в etcd до ошибок в конфигурации kubelet.
- Экспертиза от практиков.
- Сложные темы без воды.

Важная новость для тебя, если ты не успел: Мы решили проявить заботу о тех, кто долго планировал обучение, и продлили действие промокода KUB10 (действует до 22.03.26). Он дает скидку 10%.

👉 Успей занять место со скидкой 10%: Kubernetes: Мега
2👍1🔥1
«Прячем» секреты от cluster admin. Часть 1.

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

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


Приступим к разбору.⬇️

Зашифрованный etcd и RBAC на доступ к секретам - это база. Не секрет, что секреты (такая тавтология) хранятся в base64 и cluster admin может заглянуть куда угодно.

Наша задача - сделать процесс доступа сильно сложнее, так, чтобы по аудит логам (с настроенными алертами на службу безопасности) понять, что cluster admin целенаправленно полез туда, куда не надо.

🟠Проблема: Где текут секреты?

Обычно всё ломается на двух этапах:

🟠1. API Server: Любой kubectl get secret -o yaml или describe pod вываливает всё содержимое.
🟠2. Runtime: Если админ может сделать kubectl exec, он просто посмотрит env или залезет в /proc/1/environ.

Поэтому не давать exec - это база RBAC, но админ все равно сможет создать под, подменив либо образ, либо cmd, либо что-то еще, чтобы посмотреть env, даже без exec.

Добавлям паранои: Vault Agent + execve()

Забудьте про envFrom. Мы будем использовать Vault Agent Injector и фокус с подменой процесса через vault-env.

При этом важно, чтобы либо в vault так же был настроен аудит, либо vault был недоступен для управления тем же самым админом.

➡️Секреты вообще не должны попадать в Kubernetes как объекты. Под аутентифицируется в Vault через свой ServiceAccount. Админ может обсмотреться на манифест пода - там будут только аннотации.

🐈Во второй части разберём, как через подмену процесса (execve) передать секреты в обход Kubernetes целиком, зачем выносить аудит Vault в изолированный SIEM и как добить защиту distroless-образами, сбросом capabilities и динамическими паролями с TTL в несколько секунд.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82👍1
«Прячем» секреты от cluster admin. Часть 2.

Вчера я рассказал про постановку проблемы (где именно текут секреты — API Server и Runtime), почему etcd encryption и RBAC недостаточны, и про общий подход с Vault Agent Injector. Продолжаем тему секретов.

🟠Подмена процесса

Это киллер-фича. Мы не прописываем переменные окружения в манифесте Deployment. Мы используем утилиту-враппер (например, vault-env) как ENTRYPOINT.

🟠Как это работает на уровне ядра:

🟠1. Стартует vault-env. Он лезет в Vault, забирает секреты и кладет их в свой массив environ.
🟠2. Далее он делает системный вызов execve("/app/binary", args, envp).
🟠3. Ядро Linux полностью заменяет образ процесса vault-env вашим приложением, но передает ему обогащеннй секретами стек окружения напрямую в память.

Итог: kubectl describe pod покажет чистый список переменных. Секреты не проходили через API-сервер, их нет в etcd, и они не светятся в логах.


🟠Помним: Аудит и «Правило четырех глаз».

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

🟠 Vault Audit Logs (External): Логи Vault должны уходить сразу в изолированный SIEM, к которому у админа куба нет доступа. Любая попытка пода (или того, кто им притворился) достать лишний секрет должна триггерить алерт.
🟠 Control Groups (Rule of two keys): Для самых критичных штук (например, ключи расшифровки БД) включаем в Vault control_groups. Даже если под попросит секрет, Vault его не отдаст, пока второй человек (Security Officer) не нажмет кнопку «Одобрить» у себя. Конечно это доступно только в enterprise версии и не подойдет для автоматической разблокировки, когда vault неожиданно перезапустится. Но тут уже отдельная история, как делать vault unseal, если все упало, включая падение кластера vault.

🟠Добиваем выживших: Hardening

Чтобы kubectl exec превратился для админа в тыкву:

🟠1. Distroless/Scratch: Выкиньте из образа sh, ls и env. Нет бинарников - нет простого способа посмотреть окружение.
🟠2. Drop Capabilities: Сносите CAP_SYS_PTRACE через securityContext. Да и вообще все capabilties дропайте. Без этого даже root внутри контейнера не сможет легко сделать дамп памяти процесса или прочитать чужой /proc/[pid]/environ.
🟠3. Dynamic Credentials: Используйте динамические секреты Vault для БД. Пароль живет 5 секунд и умирает вместе с подом. Даже если админ его украл - через 5 секунд это просто мусор.

Итог:
Админ видит пустые конфиги, пустой env в манифестах и заблокированный ptrace. Любая его попытка пошпионить залетает в внешний аудит, который он не может почистить.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍1
Нахожусь на KubeCon в Амстердаме (23–26 марта). Флагманская конференция CNCF — собираются все, от выпускных проектов до новых решений.

Четыре дня докладов, Solutions Showcase (выставочная зона), KubeCrawl и всё такое.

Присматривался, что сейчас происходит внутри и вокруг cloud native и k8s.

И нашёл на выставке один стенд,который сильно запал в душу - ребята так его сделали,что мимо пройти невозможно. Делюсь с вами
🔥16😁81
Сегодня весь день на observabilityCON. Организаторы, как вы поняли, Grafana Labs.

Главное, что я для себя вынес: ручной анализ инцидентов уходит в прошлое. Все крупные вендоры сейчас делают ставку на AI-агентов — они сами собирают контекст, логи, трейсы и предлагают решения. Кто-то уже и фиксы автоматом катает.

Но тут есть нюанс: чтобы таким агентам доверять, за ними самими нужна наблюдаемость. Простые метрики ошибок и латентности тут не работают. Нужен мета-уровень — понимать, почему агент принял то или иное решение, какие данные использовал, не зациклился ли.

Для нас, кто пишет автоматизации и расследует алерты, это новый вызов. Либо осваивать практики работы с AI-агентами сейчас, либо учиться этому на ходу, когда они уже станут стандартом.

А вы как думаете — готовы отдать расследование инцидентов агентам? Или пока рано?
🔥81👍1
Всем привет!🐈

Старт курса «Kubernetes: базовый уровень» уже близко!

Чему научитесь на курсе:
🟠основам работы с Kubernetes, системой автоматизации развертывания, масштабирования и управления приложениями в контейнерах
🟠работать с базовыми абстракциями кластера и понимать его устройство
🟠запускать собственный кластер, понимать принципы работы сети
🟠настраивать визуализацию этапов непрерывной интеграции и поставки (CI/CD-pipline) для приложения

73% программы — практика и работа со стендами

Курс можно приобрести в рассрочку или согласовать оплату у вашего работодателя, узнать подробности - здесь

А ещё при покупке курса, вы получите курсы по Docker и Ansible в подарок

ЗАНЯТЬ МЕСТО НА КУРСЕ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Всем привет🐈
Рад сообщить, что вы можете пройти курс по Kubernetes бесплатно или с огромной скидкой!

Слёрм запускает конкурс грантов на курс: «Kubernetes: базовый уровень»

Что можно выиграть:
🟠100% скидка — 1 участник
🟠50% скидки — 2 участника
🟠30% скидки — 3 участника

⚡️ Грант стартует сегодня ⚡️

Как участвовать:
➡️Заполнить анкету участника и выполнить задание до 27 апреля - по ссылке
➡️ Быть подписанным на мой канал - «Kubernetes и кот Лихачева»
➡️ Ждать результаты гранта в канале 28 апреля

Желаю удачи!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1