KazDevOps
6.91K subscribers
1.64K photos
28 videos
21 files
1.55K links
Канал о DevOps во всех проявлениях: K8s, CI/CD, HighLoad, AI/ML, Cloud, Linux
Возьмем на поддержку DevOps: https://core247.kz/
По рекламе @UlKonovalova
Download Telegram
Forwarded from DevOpsDays Almaty 2026
☄️ Get over here! ☄️

Несмертельной схватке за стабильный прод — быть! DevOpsDays Almaty'26 с новой концепцией в духе Mortal Kombat стартует 16 октября 2026.

Это наша юбилейная, 5-ая конференция в Алматы, которая объединит DevOps-ов, хостеров, вендоров ПО, банки, телеком-компании, СМИ и новичков в IT под крышей арены.

Будем делать фаталити всем сломанным процессам, упавшим серверам и кривому коду. В этому году еще больше программа, еще больше гостей. На конференции вас ждут:

— Доклады от мастеров-экспертов
— Фантастические инсайды с рынка DevOps
— Опенспейсы для дискуссий вне битв
— Воркшопы, которые бустанут ваши навыки на поле битвы
— Нетворкинг с комьюнити — Саб-Зиро и Шан Сунгом
— Мерч и подарки от партнеров

🎟 FINISH THEM! Скидки для Early Birds

Первая волна билетов уже в продаже по самой горячей цене. Количество мест ограничено — пройдут только достойные.

@devopsdayskz
Please open Telegram to view this post
VIEW IN TELEGRAM
1433
🔥 Бесплатный интенсив по ИИ и аналитике — 4 августа

Интенсив подойдет как новичкам, так и тем, кто уже знаком с ИИ и аналитикой.

Во время интенсива вас ждут:

⚪️ 2 дня обучения + бонусный день
⚪️ личный наставник
⚪️ поддержка в WhatsApp-чате
⚪️ прямые эфиры с Екатериной Рехерт
⚪️ мини-курс в подарок.

По окончании обучения вы получите именной сертификат от одной из крупнейших IT-школ Казахстана DataBoom.

За 7 лет DataBoom обучили 27 000+ студентов, провели 230+ потоков обучения, помогли 1 000+ выпускникам получить международные сертификаты Microsoft и стали образовательным партнером для 500+ компаний.

Программа разработана Екатериной Рехерт — основательницей DataBoom, главным методологом и автором образовательных программ школы, единственной в Казахстане обладательницей статуса Microsoft Most Valuable Professional в области Data & AI.


👈 Зарегистрироваться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1222
⚡️ Почему продукты проваливаются на этапе масштабирования

Распространенный паттерн при цифровой трансформации — фокус на внедрении новых технологий (включая ИИ) в ущерб системному фундаменту. В результате организация получает фрагментированные сервисы, которые увеличивают технический долг и не дают ожидаемого бизнес-эффекта.

Настоящая модернизация начинается с определения проблемы. Устойчивый технический фундамент строится на 3 неразрывных уровнях:

1️⃣ Architecture-First (единый блюпринт)

До старта разработки фиксируются правила: как системы связываются между собой, где хранятся данные, как встраивается ИИ и где проходят границы. Без единого архитектурного блюпринта команды начинают модернизировать сервисы в изоляции, воссоздавая ту самую фрагментацию, от которой пытались уйти.

2️⃣ API-First (границы возможностей и соединительная ткань)

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

3️⃣ Experience Layer (мост между UX и бизнес-процессами)

Слой пользовательского опыта связывает продуктовые интерфейсы с бизнес-процессами. Он строится на 2 принципах: адаптивности (персонализация под разные роли и контексты) и элегантности дизайна (выполнение задач без трения). Доказательство качества этого слоя — метрика voluntary adoption (добровольное использование продукта).

Итоговая матрица взаимосвязи:

⚪️ Архитектура дает единый чертеж и предотвращает фрагментацию
⚪️ API задают границы и обеспечивают независимость эволюции бэкенда и фронтенда
⚪️ Experience Layer обеспечивает конверсию технической базы в пользовательское признание и бизнес-ценность

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


@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
222
⚡️ Как управлять инфраструктурой на 80 млн юзеров командой из 5 человек

Разработчики популярного социальной платформы Yubo поделились выпуском серии статей, в которых подробно рассказали, как небольшой команде удается поддерживать и развивать масштабную cloud-native инфраструктуру.


Собрали для вас полную подборку всех частей с кратким обзором ключевых тем:

⚪️ Часть 1. Введение в инфраструктуру Yubo: Обзор и философия

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

⚪️ Часть 2. Структура команды и роли: Data Engineers, DevOps и Security

Разбор внутреннего устройства команды: распределение задач между дата-инженерами, DevOps-специалистами и экспертами по безопасности. Статья раскрывает, как перекрестное обучение и четкая зона ответственности помогают избежать узких мест в работе.

⚪️ Часть 3. Инженерия данных на масштабе и Self-Service базы данных

Эта часть про то, как устроена работа с пайплайнами данных и хранилищами под миллионы пользователей. Авторы объясняют, как концепция селф-сервиса позволяет продуктовым командам самостоятельно работать с базами данных без привлечения инфраструктурных инженеров.

⚪️ Часть 4. Автоматизация на масштабе

Главный секрет эффективной работы маленькой команды — это максимальная автоматизация рутины. Вы узнаете про Infrastructure as Code, автомасштабирование и инструменты CI/CD, минимизирующие человеческий фактор.

⚪️ Часть 5. Облачный MLOps

Финальная часть серии о том, как в Yubo разворачивают и поддерживают модели машинного обучения в продакшене. Авторы делятся опытом построения облачного MLOps-конвейера для модерации контента и работы рекомендательных систем в реальном времени.

@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
14322
⚡️ PROFIT Industry & Energy Day — в Астане 27 августа

Приглашение для казахстанских промышленных и энергетических компаний на конференцию PROFIT Industry & Energy Day.

Эффективное управление, сбор и обработка информации, внедрение технологий на производственных этапах — во всех этих вопросах ИТ играют ключевую роль.

На конференции PROFIT Industry & Energy Day обсудят:

⚪️ Какие решения используются в казахстанской промышленности?
⚪️ Как оптимизировать расходы и развивать предприятие с использованием новых технологий?
⚪️ Какие преграды стоят на пути Индустрии 4.0 в стране?

👈 Регистрация открыта

@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
222
🔥 Новости мира DevOps, которые вы могли пропустить

⚪️ Wave — контроллер для автоматического отслеживания изменений конфигураций в Kubernetes

Инструмент решает вечную проблему с обновлением ConfigMap и Secrets. Wave мониторит монтируемые конфиги для Deployments, StatefulSets и DaemonSets и автоматически запускает Rolling Update подов при изменении данных. Никаких ручных рестартов или костылей с добавлением хешей в аннотации.

⚪️ Sveltos — контроллер для управления аддонами и приложениями на мультикластерных фермах

Проект не конкурирует с ArgoCD или Flux, а расширяет их возможности. Sveltos позволяет раскатывать манифесты и Helm-чарты по множеству кластеров на основе меток (label-based matching). Конфигурации кластерно-независимы: достаточно повесить нужный label на новый кластер, и Sveltos сам доставит туда требуемый стек.

⚪️ Обновление опенсорс-платформы для подготовки к экзаменам по Kubernetes

Бесплатный практический тренажер для подготовки к CKA, CKAD и CKS продолжает активно развиваться. В проект добавили полноценный курс и практические лабораторные работы для подготовки к сертификации Istio Certified Associate (ICA). Отличный вариант, чтобы подтянуть знания по Service Mesh на практике.

⚪️ В Istio появился новый TrafficExtension API для кастомизации Envoy

API объединяет управление расширениями на базе WebAssembly (Wasm) и Lua в едином интерфейсе. Раньше для Lua приходилось использовать сложный и хрупкий EnvoyFilter. Новый декларативный подход одинаково работает с сайдкарами, шлюзами и waypoint-прокси (в Ambient Mode), упрощая миграцию и кастомизацию data plane.

@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
433
⚡️ 10 дней до старта Cloud Native Community Day

Уже 13 августа мы встретимся в Almaty Hub большой компанией, чтобы вместе продвинуться в понимании cloud native, разрешить спорные вопросы и найти подход к проблемам. Подготовили насыщенную программу — и ждем только вас. Торопитесь зарегаться, так как места ограничены.

👈 Зарегистрироваться как участник

А пока напоминаем, какой контент вас ждет.

⚪️ Иван Екимов, SUSE: «Как скрыть control plane k8s и что это дает»
Managed-платформа должна автоматически создавать, масштабировать, обновлять и сопровождать кластеры на протяжении всего жизненного цикла. Для реализации такого подхода наиболее подходит Cluster API — благодаря декларативной модели управления и поддержке различных инфраструктур.


⚪️ Максат Акбанов, Magnum Cash&Carry: «Защита Kubernetes-кластера с помощью Kubescape»
Обзор возможностей DevSecOps-инструмента Kubescape (CNCF) и опыт внедрения в релизные циклы. Узнаете про статический и динамический режимы работы, генерацию отчетов безопасности, интеграцию с ArgoCD, настройку Alertmanager и мониторинг безопасности через Prometheus exporter.


⚪️ Эмиль Аминов, Cloud Tech Lead, Salmon: «За пределами одного кластера: Istio Multi-Cluster между AWS-аккаунтами»
Как построить Istio Multi-Cluster между несколькими AWS-аккаунтами, связать распределённые сервисы и какие архитектурные решения помогают масштабировать облачную платформу.


⚪️ Валерий Окшин, DevOps Team Lead, Freedom Cloud: «Longhorn: когда Ceph слишком тяжёл, а local storage уже не хватает»
Когда Longhorn становится оптимальным выбором для Kubernetes, какие задачи он решает и какие компромиссы стоит учитывать при эксплуатации.


⚪️ Тимур Тукаев, COO из Aenix: «Kubernetes как Linux Kernel: какое будущее ждет самый популярный оркестратор»
Сегодня K8s воспринимается как готовое приложение, иногда даже как «ОС для облаков». Это тупик. Kubernetes должен превратиться в аналог Linux Kernel — низкоуровневый компонент, с которым работает очень ограниченное людей.


👈 Зарегистрироваться как участник

Также мы проведем воркшоп (регистрируйтесь на сам ивент и отдельно на воркшоп), где разберем, как перейти от классической виртуализации к cloud native private cloud: с виртуальными машинами, self-service для команд, managed-сервисами, сетями, хранилищем, мониторингом и API-first подходом.

@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
1433
🔥 Бесплатный локальный эмулятор AWS

Представляем Ministack — сервис с 60+ эмулируемых AWS-сервисов на одном порту: S3, SQS, SNS, DynamoDB, Lambda, Secrets Manager, Step Functions, CloudWatch и другие. Совместим с Terraform.

Он предназначен для локальной разработки, интеграционного тестирования и запуска в CI/CD без необходимости реального обращения к AWS и оплаты ресурсов.

Для ряда сервисов поднимаются честные контейнеры/движки — RDS запускает настоящие Postgres/MySQL, ElastiCache — Redis/Valkey, Athena использует DuckDB, а ECS — Docker API.

Есть встроенные эндпоинты для автоматизации тестов. В отличие от стандартного AWS API, Ministack предоставляет служебные URI для быстрого управления состоянием в автотестах.

Образ занимает всего ~270 MB (против ~1 GB у LocalStack), а потребление RAM в idle — около ~30 MB (против ~500 MB).

Хороший выбор для DevOps-инженеров, которым нужно быстрое, воспроизводимое и легковесное окружение «здесь и сейчас», не перегружающее хостовую систему.


@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
18332
🔥 История о том, как reload ingress-nginx уронил прод

Разбор двухчасового инцидента на продуктивном Kubernetes-кластере, причиной которого стала неочевидная каскадная цепочка из настроек Nginx, cgroups systemd и специфики работы ядра Linux при динамическом изменении RAM виртуалки.

👈 Читать разбор

Если коротко, симптомы и цепочка отказа:

⚪️Симптом: клиенты начали получать 503 Service Unavailable, в логах внешнего proxy (Envoy Gateway) — UF и upstream_reset_before_response_started. В error.log самого ingress-nginx при этом была тишина, но Readiness-проба падала (:10246 connection refused), выбивая под из ротации.

⚪️Лимит процессов (pids.max): в логах ноды (journalctl) обнаружилась ошибка cgroup: fork rejected by pids controller. Контейнер упёрся в лимит pids.max = 975 и не мог создать новые воркеры.

⚪️Накопление потоков в Nginx: из-за долгоживущих WebSocket-соединений старые воркеры не успевали завершиться за время worker-shutdown-timeout (240s). Частые reload'ы конфига привели к сосуществованию ~30 воркеров (3 поколения). Включенный aio thread pool (threads=32) давал по 33 задачи на воркер. Итого: ~990 задач, что превысило лимит 975.

⚪️Первопричина (KVM Hotplug & threads-max): лимит pids.max выставлялся через systemd DefaultTasksMax (15% от kernel.threads-max). Лимит threads-max составлял всего 6501 (в десятки раз ниже нормы), потому что KVM-виртуалка стартовала с минимальной RAM, а затем была расширена до 16 ГБ через ballooning/hotplug. Ядро считало threads-max один раз при загрузке OS и не пересчитало его при увеличении памяти.

При использовании динамического расширения памяти (RAM hotplug/ballooning) на нодах Kubernetes ядро Linux не пересчитывает kernel.threads-max на лету. Это оставляет контейнеры с заниженными лимитами pids.max, что при штатных перезагрузках Nginx и наличии WebSocket/thread-пулов неизбежно приводит к fork rejected и падению ingress-контроллера.

Лимиты нужно проверять и корректировать на нодах вручную.


@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
1422
Please open Telegram to view this post
VIEW IN TELEGRAM
142222
Основы_DevOps_и_Software_Delivery_Евгений_Брикман_2026.pdf
12.4 MB
🔥 Основы DevOps и Software Delivery. Практика развертывания и сопровождения ПО в продакшене (2026)

В большинстве книг о DevOps лишь поверхностно рассматриваются теория и культура. В этом практическом руководстве описываются инструменты, практики и технологии, которые составляют основу software delivery — доставки программного обеспечения.

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

Изучите основные концепции и лучшие практики современного DevOps и получите личный опыт и ценные навыки для работы DevOps, SRE и фулстек-разработчика.

Внутри:

⚪️Развертывание приложений и микросервисов в облаке с использованием ВМ (EC2), контейнеров (Kubernetes) и бессерверных технологий (Lambda)

⚪️Управление инфраструктурой как кодом с помощью OpenTofu/Terraform, Packer, Docker и Ansible.

⚪️Автоматизация жизненного цикла доставки ПО (сборки, тесты, развертывания) с использованием CI/CD.

⚪️Настройка сетевого взаимодействия, включая VPCs, VPNs, DNS и сервисные сетки.

⚪️Разделение кодовой базы между несколькими средами, библиотеками и микросервисами.

⚪️Управление секретами и шифрование данных при передаче (TLS) и в покое (AES).

⚪️Хранение данных в реляционных базах данных, NoSQL-базах и файловых хранилищах.

⚪️Настройка мониторинга, включая метрики, логи, события и оповещения.

@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
110633
⚡️ Воркшоп на Cloud Native Community Day Almaty 13 августа

Рассказываем о самой «вкусной части» грядущего митапа — воркшоп проведет Тимур Тукаев, COO Aenix (создатели Cozystack) — вместе вы разберете реальные сценарии миграции и риски, а не теорию со слайдов.

Что воркшоп даст вам:

⚪️ Полную независимость: вы перейдете от вендор-лока к гибкой Cloud Native экосистеме
⚪️ Готовый план миграции: получите карту замены компонентов VMware на стек Kubernetes, KubeVirt, LINSTOR и Cilium
⚪️ Практический опыт: своими руками перенесете виртуальную машину в KubeVirt на примере платформы Cozystack
⚪️ Месяц бесплатной практики: тестовый стенд и закрытый чат поддержки останутся у вас на 30 дней
⚪️ Подтверждение экспертизы: за выполнение лабораторной работы вы получите официальный сертификат

Будет полезно инженерам уровня Middle+ и тимлидам: DevOps, SRE, системным архитекторам и всем, кто прямо сейчас строит private cloud в Казахстане.

👈 Чтобы занять место на воркшопе: зарегистрируйтесь на ивент + заполните заявку на воркшоп

После воркшопа будет основная программа Cloud Native Community Day Almaty — пять докладов от инженеров, которые ежедневно строят и масштабируют инфраструктуру в крупных компаниях.

Большая благодарность Astana Hub за предоставленную площадку и помощь в организации ивента!


@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
14332
🔥 Почему песочницы сторонних API вас предадут: проблема Sandbox Drift и как с ней жить

Разработка интеграций с внешней инфраструктурой (платежки, ID-провайдеры, SMS-шлюзы) всегда упирается в Sandboxes. И слепая вера в песочницу вендора ведет к инцидентам в продакшене и как выстроить надежный процесс тестирования.


⚪️Главный враг: дрейф песочницы

- Тестовые среды вендоров — это симуляции, но не дубликаты продакшена. Вендоры обновляют песочницы по остаточному принципу.

- В продакшене появляется новое поле или меняется структура токена, а в песочнице — часто нет (или не сразу). Логика rate limiting и специфические HTTP 4xx/5xx ошибки в песочнице часто вовсе не имплементированы.

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

⚪️ Что реально нужно тестировать

- Обработку nullable-полей, опциональных ключей и специфических типов.

- Проверку поведения системы при отваливающемся провайдере (таймауты, специфические коды ответов вроде 402, асинхронные вебхуки невпопад). Песочницы провайдеров чаще всего поддерживают только happy path.

- State Management: побочные эффекты тестирования (записи, аудит-логи) остаются в песочнице провайдера. Внезапные плавающие сбои в CI часто вызваны грязным состоянием тестовой среды вендора.

⚪️Рабочая стратегия: Record & Replay вместо прямой зависимости

Чтобы не зависеть от изменения чужих сред, инженерные команды переходят на локально контролируемый baseline:

- Запись и воспроизведение трафика: перехват реальных HTTP-ответов (через Keploy, Hoverfly, WireMock в режиме записи) и сохранение их в качестве локальных фикстур.

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

- Explicit Fault Injection: явное создание фикстур под таймауты, битые JSON и специфические 5xx-ошибки.

⚪️Почему Contract Testing (Pact) не спасает на 100%

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

⚪️ Плата за надежность: Обслуживание фикстур

Главный подводный камень собственного Record & Replay — протухание фикстур. В качестве решения процесс обновления фикстур должен быть явно закреплен за командой (explicit ownership) и входить в техдолг/бэклог при каждом релизе изменений в API провайдера.

Песочница провайдера подходит для первичного exploratory-тестирования и smoke-тестов. Регрессионный пайплайн должен опираться на локально зафиксированные, версионируемые фикстуры реальных ответов.


@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
1222
Разыгрываем 10 ваучеров со скидкой 50% на абсолютно весь каталог от The Linux Foundation и 10 комплект видеокурсов по Kubernetes со скидкой 50% от Slurm.

⚪️ Каталог курсов и сертификации

Ваучеры можно применить к любому:

— онлайн-курсу
— сертификационному экзамену (CKA, CKS, CKAD и другие)
— пакету продуктов (курс + сертификация)
— курс под руководством инструктора с гарантированным стартом

⚪️ Запись на поток Kubernetes: Продвинутый уровень от Slurm.

Условия розыгрыша:

Подпишитесь на KazDevOps и нажмите кнопку "Учавствую!" под оригинальным постом в канале KazDevOps.

❗️ 1 сентября подведем итоги и выберем 10 победителей (каждый получит скидку на предложения Linux Foundation + скидку на курс Slurm). Активировать ваучеры Linux Foundation нужно до 07.01.2027. После этого у вас будет 1 год и 2 попытки, чтобы завершить обучение и сдать экзамен.

Go-go-go, и успехов!

@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
21043222
KazDevOps pinned a photo
🔥 Cloud Native Community Day Almaty — уже завтра

👈 Зарегистрироваться на Cloud Native Community Day

Встречаемся 13 августа в Almaty Hub, чтобы провести целый день в Сloud Native: от практической миграции виртуальных машин до технических докладов, живых обсуждений и after-party. Публикуем программу с таймингом.

10:00 — практический воркшоп

Вместе с Тимуром Тукаевым, COO Aenix и одним из создателей Cozystack, разберём переход от классической виртуализации к cloud native private cloud: перенесём виртуальную машину в KubeVirt и посмотрим, как работают Kubernetes, LINSTOR, Cilium и другие open-source компоненты.

👈 Зарегистрироваться на воркшоп

13:00 — обед

После обеда 5 технических докладов — реальные кейсы и инженерные решения:

⚪️ Иван Екимов, SUSE
14:00 — «Как скрыть control plane k8s и что это дает»

⚪️ Максат Акбанов, Magnum Cash&Carry
14:40 — «Защита Kubernetes-кластера с помощью Kubescape»

⚪️ Эмиль Аминов, Cloud Tech Lead, Salmon
15:20 — «За пределами одного кластера: Istio Multi-Cluster между AWS-аккаунтами»

⚪️ Валерий Окшин, DevOps Team Lead, Freedom Cloud
16:00 — «Longhorn: когда Ceph слишком тяжёл, а local storage уже не хватает»

⚪️Тимур Тукаев, COO Aenix
16:40 — «Kubernetes как Linux Kernel: какое будущее ждет самый популярный оркестратор»

А после — after-party и общение с теми, кто каждый день строит, ломает, масштабирует и чинит инфраструктуру.

Ждем всех в Almaty Hub 13 августа в 10:00. Мероприятие проходит при поддержке команды Astana Hub — благодаря их экосистеме митапы возможны!

@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
17332
🔥 Кейс Juz40: переход техподдержки образовательной платформы от 1 штатного DevOps к полноценному IT-отделу

Мы в Core 24/7 часто рассказываем о модернизации инфраструктуры, миграции и аудите, но основная наша деятельность — это DevOps-поддержка. Мы заходим в проект, соблюдая все юридические тонкости, и берем его на поддержку + развитие. Целая команда из инженеров разного уровня трудится, чтобы у сервисов, которыми пользуются миллионы казахстанцев, все работало как часы.

В новом кейсе рассказали, что конкретно сделали и делаем для образовательной платформы Juz40 — и это лишь малая часть. Многое остается под NDA.

👈 Читать кейс

@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
1722