DevOps FM – Telegram
DevOps FM
4.94K subscribers
636 photos
12 videos
10 files
751 links
♾️ Канал для тех, кто живёт DevOps и системным администрированием.

Новости, статьи, best practices, инструменты и чилл-аут контент. Cloud Native, Docker, Kubernetes, CI/CD, БД, мониторинг etc.

По вопросам — к Ладе @b_vls
Download Telegram
Дисклеймер! Статья скорее для тех, кто только погружается в тему :)

***

«Понятие DevOps знакомо многим, но все-таки ответить на вопрос "Что же такое DevOps?" непросто.

В статье мы постарались это сделать: упорядочили знания, определили основные понятия DevOps, ещё раз обозначили какие процессы существуют в этой методологии, какую роль они играют и с чего начать внедрение DevOps.»

➡️ Приятного чтения!

#статья_Nixys
🔥84👍3
Всем DevOps! 🖖

Хотим начать неделю с необычного поста.

Борис Ершов, CTO компании Nixys, побывал на конференции и поделился наблюдениями, которые, пожалуй, могут быть полезны и вам!

***

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

Интересные заметки на открытии:

- Хоть это явно и не обозначалось, но тем не менее озвучивалось — стратегическими направлениям для развития Яндекс Облака будут Serverless и Security;

- Ребята показали интересный график внедрения новых сервисов и технологий, согласно которому разделили жизненный цикл на 5 этапов: триггер технологии, пик завышенных ожиданий, дно разочарования, склон просветления, плато продуктивности;

- 7 из 10 их клиентов в том или ином виде использует бессерверные вычисления.

Во-вторых, вся конфа была разделена по шести секциям:

- Infra + K8s
- Serverless
- Digital Workplace
- ML
- Data Platform
- Security

Поскольку у меня с собой была только одна пара глаз и ушей, то освещение получат не все имеющиеся треки, но я постарался захватить самые массовые, а именно те, которые собирали максимальное число зрителей на докладах и стендах. По моим наблюдениям, такими были:
- ML
- Serverless
- Security

ML

Это в принципе очень хайповая тема сейчас. Бизнес видит в ней надежду и опору в вопросах оптимизации части своих процессов и сокращение расходов. Самый крутой доклад этого трека — это YandexGPT. Где рассказывалось о истории его создания, возможностях и применении. Очень интересный доклад! И интересен он был настолько, что зал едва вместил всех желающих его послушать. Мне повезло найти себе место и слушать доклад сидя. Тут же были анонсированы новые возможности на базе объединения DataSphere и YandexGPT.

Serverless

Сразу стоит отметить, что в Яндекс Serverless представлена по двум направлениями:

- Cloud Functions: это аналог Lambda AWS, когда программа выполняется, не как результат привычного процесса сборки, деплоя и работы контейнера с бинарником типа API-сервера или кэширующего сервера. А прям в виде кода, который чихать хотел и на сборку, и на деплой и на сам сервер;

- Serverless Containers: если описать в нашем понимании, то это почти привычный нам контейнер, который ничего не знает не только про сам физический или виртуальный сервер, но и про Kubernetes со всеми его сущностями. В Яндексе верхнеуровнево деплой устроен так: закидывает код (в виде архива) и Dockerfile. Далее он там сам билдится и где-то сохраняется и уже потом пользователь оперирует нужной ревизией при запуске.

Из моего общения с участниками было видно, что интерес к этой технологии, был обусловлен основными моментами:

- Возможностью сокращения затрат на облако за счёт оплаты только тех ресурсов, которые используются во время выполнения;

- Снижением зависимости от инфраструктуры и её обслуживания (это я про дефицит в DevOps)

При всём при этом, клиенты видят в ней и существенные для себя минусы. Основные из которых это:

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

- Vendor lock-in. Каждый провайдер имеет свою реализацию, у всех разные эндпоинты и даже список поддерживаемых языков, поэтому просто перетащить имеющийся код из одного облака в другое не получится, нужна будет его переработка. И на этом все приглашённые спикеры делали акцент;

⬇️

#лонгрид
🔥7👍5👏3
На мой взгляд, из всех технологий, которые по крайней мере использует Яндекс в своём облаке, эта способна повлиять на нашу сферу с наибольшей вероятностью. И вот почему я так считаю.

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

Тем более, что сейчас уже есть несколько инструментов, которые дают возможность использовать бессерверные функции в собственном кубе (например, Knative и OpenWhisk), т.е. без использования облачного провайдера. Это может дать дополнительное ускорение внедрения этой технологии.

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

Security

На доклады этого трека я, к сожалению, попасть не смог, слушал другие темы. Но несколько наблюдений по этой теме всё же сделал.

На открытии было заявлено, что одной из стратегий развития облака будет создание простых Cloud-native решений в безопасности.

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

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

Другие сервисы

По ходу посещения докладов и общения с людьми, я делал небольшие пометки по сервисам, которые могут быть интересны в решении тех или иных вопросов.

- Yandex Cloud Apps: новый сервис от Яндекса. Это маркетплейс для размещения cloud-native приложений. Пока такое ощущение, что на текущий момент туда нельзя добавлять внешние приложения, но в будущем, я думаю, с высокой вероятностью они сделают такую возможность. В этом случае это кажется отличным вариантом для размещения nxs-backup и nxs-data-anonymizer.

- Gravity UI: библиотека компонентов для React. Возможно, облегчит создание web-интерфейсов для наших инструментов. Это open-source.

- DataLens: инструмент визуализации данных. Прежде всего он задумывался как BI-инструмент. Не знаю, будет ли он полезен именно в этом качестве, но выглядит так, что он может быть полезным для визуализации прогресса по текущим целям или технологического радара. Тут нужно дополнительное исследование. Это open-source

- YDB: часто упоминалась в докладах различных крупных компаниях-партнёров Yandex. Это open source

- GreenPlum: плюс минус то же самое, что и про YDB

Пожалуй, на этом мои основные наблюдения по поводу прошедшей конференции подошли к концу»

#лонгрид
🔥10👍7👏3👎1
Что было интересного на прошлой неделе? ⚡️

▪️День Рождения — kubeadm исполнилось 7 лет. kubeadm — это инструмент для запуска минимально жизнеспособного кластера.

▪️ClickHouse анонсировали альтернативу ZooKeeper — ClickHouse Keeper. В анонсе говорится, что новый инструмент станет полной заменой ZooKeeper с полностью совместимым клиентским протоколом и той же моделью данных.

▪️GitLab нашли несколько уязвимостей уровня «high» и выпустили для них патчи. Рекомендовано как можно скорее обновиться до последней версии.

▪️Helm 3.13 — флаг --dry-run теперь имеет несколько опций, в обработке значений были исправлены многочисленные проблемы, появилась возможность работать с реестрами OCI через HTTP, используя --plain-http, новая команда helm get metadata и другие обновления. Вся информация — в Release Notes.

▪️Docker улучшает видимость токенов личного доступа пользователей Docker Desktop и Hub. В частности, меняет способ обработки токенов в сеансах между двумя инструментами. В работе Docker Hub, Docker Desktop и Docker CLI не произойдет заметных изменений, но рекомендовано использовать последние версии Docker Desktop и Docker CLI, чтобы получить новейшие функции и обновления безопасности.

▪️Релиз KEDA v2.12.0. Kubernetes Event Driven Autoscaling (KEDA) — оператор Kubernetes с открытым исходным кодом. Полный список изменений доступен в Release Notes.

Всем DevOps! 🖖

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2
Среда — маленькая пятница 🥳

Собрали интересные материалы, можно сделать небольшой перерыв и почитать.

▪️Статья «13 распространенных задач в Kubernetes и способы их решения» — о проблемах в Kubernetes, с которыми часто сталкиваются инженеры-разработчики при запуске новых масштабируемых отказоустойчивых веб-сервисов.

▪️Заметка «Death by a thousand microservices» — еще одна статья в копилку противостояния «монолит или микросервисы».

▪️Статья (аж на 36 минут) «Understanding Kubernetes' Cluster Networking» — очень детально описано устройство сети Kubernetes. Радует и отличная наглядность, в статье много схем.

▪️Цикл из трех статей «Learning Linux Kernel Exploitation» — рассказывается о некоторых основных моментах эксплуатации ядра Linux: от базовой настройки среды до некоторых популярных средств защиты ядра и соответствующих им методов эксплуатации.

▪️Статья про самую бессмысленную команду Docker за всю историю — сохраним интригу и не будем делать краткое описание :)

#статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Мы уже упоминали ( и не раз) этого автора и его обучающие материалы, теперь хотим обратить внимание на одну полезную open-source разработку.

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

k'exp — Kubernetes Explorer

k'exp отражает состояние вашего кластера в режиме реального времени, показывает «связанные» объекты и может показывать информацию по конкретным объектам.

Здесь — плейлист с демо-видео :)

💻 Репозиторий инструмента

P.S. Другие open-source проекты автора можно найти вот здесь.

#open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥32
В команду Nixys требуются DevOps-инженеры — от Junior до Senior

Nixys — профессионалы в поддержке HighLoad / HA web-проектов с более чем 13-летним опытом. На постоянном обслуживании компании находится более 300 крупных известных брендов.

⚙️ Стек: Linux (ubuntu/debian, centos), Kubernetes (k8s, k3s, OKD), Prometheus/Grafana/Zabbix, ELK/EFK, CI/CD (GitLab, Jenkins), Docker, Docker Compose, Nginx, Apache, PHP-FPM, MySQL, PostgreSQL, MariaDB, MongoDB, Redis, Clickhouse, Minio, IaC (Terraform, Ansible), Yandex Cloud, GCP, AWS

📌 Основные задачи:

• проектирование архитектуры инфраструктурной части проекта и процессов по запросу клиента;

• мониторинг и контроль работоспособности сервисов;

• разработка и поддержка процессов CI/CD;

• подготовка и администрирование тестовых и промышленных сред, предоставление сервиса, соответствующего SLA;

• автоматизация рутины с помощью python/bash/golang;

• администрирование и настройка систем контейнеризации, Linux-систем (CentOS, Debian, Ubuntu), различных сервисов БД, очередей и т.д.

➡️ Полную информацию по вакансиям (условия, контакты и т.д.) можно найти на сайте или на hh.ru
🔥16👍63
DevOps FM pinned a photo
В эфире — новости ⚡️

🔸 4-5 октября прошла конференция «DockerCon», на которой компания Docker анонсировала множество новых продуктов: новый сервис удаленной сборки, новые инструменты для отладки, общедоступность Docker Scout и новый стек GenAI.

🔸 Kubernetes объявили состав Руководящего комитета, в этом году туда выбирали 4 человек из 7. Руководящий комитет контролирует управление всем проектом Kubernetes.

🔸 Релиз Terraform 1.6. Новая среда тестирования Terraform, поддержка выражений для config-driven import и т.д. Все улучшения можно найти в Changelog.

🔸 Linux Foundation, BastionZero и Docker представили новый открытый проект OpenPubKey, развивающий одноимённый криптографический протокол для заверения цифровой подписью произвольных объектов. Технология разработана с целью упрощения заверения цифровыми подписями образов контейнеров Docker для исключения их подмены и для подтверждения сборки, заявленной создателем.

Всем DevOps и хорошей недели! 🖖

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2
Forwarded from CORTEL
💸 Подборка бесплатных сертификационных курсов по DevOps и Cloud

— Основы программирования для Linux (тут):

— Основы Linux (тут);

— Бесплатный онлайн-курс DevOps (тут);

— GIT (тут);

— Docker (тут);

— Azure (тут);

— Специализация Python Scripting for DevOps (тут);

— Kubernetes (тут);

— Jenkins (тут);

— Chef (тут);

— Cloud Computing (тут).

@Cortel_cloud
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥15🗿1
Всем DevOps! 🖖
Сегодня — про Helm и инструменты для работы с ним.

Немного теории

Для начала вспомним, что это вообще такое.

Helm — это пакетный менеджер, который позволяет вам работать с приложениями в K8s так-же просто и удобно, как с привычным пакетным менеджером, например apt или yum, помогает доставлять одно и то же приложение в разные окружения с различными параметрами и позволяет легко и удобно управлять жизненным циклом приложения. На практике является одним из самых распространённых и простых способов релиза приложений в куб.

Для получения манифестов k8s в Helm используется go-templates. Это мощный и удобный инструмент, позволяющий реализовывать очень много интересных вещей и обладающий гибкой логикой.

Для работы с чартами используются артефакт хабы. Осуществлять поиск и установку нужной версии очень легко. Если публичные чарты вам не подходят, вы можете использовать свой собственный регистри хаб или чей то ещё. Некоторые дистрибутивы k8s (OS, OKD, Rancher) вообще предоставляют для данного функционала GUI из коробки, позволяя работать с Helm максимально удобным способом.

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

В Helm есть хуки. Это очень удобный инструмент, который позволяет вам выполнить какой-либо джоб до того, как будет выполнено обновление других манифестов k8s. Например, если у вас приложение состоит из деплоймента и кронджобов, а миграция БД выполняется в init-контейнере, вы не застрахованы от ситуации, когда миграция ещё не завершилась, а кроны с новым кодом уже падают, из-за того, что версия БД еще старая. Хук в данном случае решает задачу.

Удобно реализована работа с зависимостями. Параметры запуска зависимости настраиваются точно так же, как и само приложение: всё что вам нужно — добавить зависимость в описание чарта, а её параметры — в файл values.

У Helm большое комьюнити, и практически все open-source проекты имеют свой собственный чарт. Вам ничто не помешает скачать любой чарт, и локально поменять в нём всё что угодно.

Если для деплоя вы используете манифесты k8s без шаблонизации, то вам потребуется поработать с существенно большим объёмом данных, чтобы настроить ваше приложение в нескольких окружениях.

Недостатки:

• При использовании публичных чартов есть шанс столкнуться с багами.

• Тяжело реализуется сложная логика, есть ограничения.

• Для создания минималистичного values файла чарт должен быть заточен под приложение.

1/2

#лонгрид
👍17
Инструменты

nxs-universal-chart

Универсальный Helm-чарт. Создан для установки любых приложений в Kubernetes / OpenShift и другие оркестраторы, совместимые с собственным API Kubernetes. Apache 2.0 license

helmfile

По сути это обёртка для Helm, которая позволяет в одном месте описывать множество Helm релизов, параметризовать их чарты для нескольких окружений, а также задавать порядок их деплоя.

helm-diff

Плагин Helm, который показывает разницу, объясняющую, что изменится при обновлении Helm. По сути, этот инструмент генерирует разницу между последней развернутой версией выпуска и версией helm upgrade --debug --dry-run

helm-unittest

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

2/2

#лонгрид #open_source
👍23🗿1
Всем DevOps! 🖖

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

🔸 В канале «DevOps FM» больше 2500 подписчиков! 🎉 Большое спасибо, что читаете наш канал. На 3000 обязательно организуем что-нибудь прикольное, если у вас есть идеи — самое время написать их в комментариях. Идеи по улучшению DevOps FM тоже пишите :)

🔸 Релизнули GitLab 16.5. В выпуске более 25 улучшений, среди них — настраиваемая политика заблокированных пользователей, правила целевых веток мерж-реквестов, виджет связанных элементов в задачах, целях и ключевых результатах и т.д.

🔸 Kubernetes представили ingress2gateway — инструмент, который поможет перейти с Ingress на Gateway API. Зачем вообще это все нужно и как оно работает можно прочитать в блоге k8s или в этой заметке.

🔸 А NGINX рассказали про ngx-rust, который позволяет создавать модули к http-серверу и многопротокольному прокси NGINX на языке программирования Rust. Пока проект в стадии бета.

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

🔸 11 октября, компания Google зафиксировала крупнейшую DDoS-атаку на свою инфраструктуру, интенсивность которой составила 398 миллионов запросов в секунду. Новая техника атаки получила название "Rapid Reset". Помимо Google с атаками интенсивностью в 155 и 201 млн запросов в секунду также столкнулись компании Amazon и Сloudflare.

🔸 Angie обновили до версии 1.3.1., улучшив защиту от DoS-атаки «HTTP/2 Rapid Reset».

#новости
🎉12👍51🔥1😁1
За то же время, что и новости, на Хабре вышло несколько отличных статей про DevOps.

▪️Статья «Практическое руководство по созданию Helm чарта или как избавиться от рутины при работе с YAML манифестами» — автор показывает свой опыт создания Helm чарта и его запуска, а также методы деплоя приложения без Helm.

▪️Статья «Kubernetes Networking: сервисы, Ingress и Network Policies» — автор подробно рассказывает про основные сетевые компоненты Kubernetes.

▪️Статья «Управление Linux-сервером — самая ценная инвестиция» — автор называет ряд причин, почему настройка и управление Linux-сервером на своём собственном железе/хостинге это круто.

Если было что-то еще интересное, присылайте ссылки в комменты :)

#Хабр #статьи
👍10🔥6
В понедельник грустно даже серверам 😔

SadServers — классный сервис для практики troubleshooting (поиска и устранения неисправностей) на Linux-серверах. Сценарии неисправностей, по большей части, соответствуют реальным проблемам с настоящими серверами.

Вам предоставляется полный доступ к серверу Linux (виртуальной машине) через SSH. (В некоторых сценариях можно использовать sudo, в других — нет, кроме как sudo shutdown). Нужно сделать все необходимое для устранения описанной проблемы, чтобы тест прошел в течение отведенного времени. По истечении этого времени виртуальная машина будет отключена.

Как это работает «под капотом», можно почитать в гитхабе.

Всем DevOps и отличной недели! 🔥

#интересное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍63
Что происходит после команды kubectl run?

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

Это руководство полностью разбирает жизненный цикл запроса от клиента к kubelet, при необходимости ссылаясь на исходный код, чтобы проиллюстрировать, что происходит. Написано понятным языком, 4.6k звездочек на GitHub!

«Хорошо, давайте начнем. Мы только что нажали Enter в нашем терминале. Что теперь?»

#интересное
👍16🔥53
🗣Внимание, конкурс!

Коллеги из KazDevOps разыгрывают 7 ваучеров на бесплатное обучение и сертификацию от Cloud Native Computing Foundation. Ваучеры дают 100% скидку на курс или экзамен по Kubernetes из списка ниже до 23 февраля:

🟣 CKA certification exam
🟣 CKAD certification exam
🟣 CKS certification exam
🟣 Обучение LFS258 Kubernetes Fundamentals
🟣 Обучение LFS260 Kubernetes Security Essentials
🟣 Обучение LFD259 Kubernetes для разработчиков
🟣 Пакет LFS258+CKA (обучение + экзамен)
🟣 Пакет LFD259+CKAD (обучение + экзамен)
🟣 Пакет LFS260+CKS (обучение + экзамен)

🔵 Условия розыгрыша просты: подпишитесь на ТГ-канал и оставьте комментарий с профилем коллеги (@username) из DevOps и смежных сфер. Оставляйте коммент под аналогичным постом в закрепе KazDevOps.

🥳 13 ноября подведут итоги и выберут 7 победителей методом генерации случайных чисел. Каждый получит по ваучеру. Go-go-go, и успехов!

@DevOpsKaz
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5
Общедоступный релиз Gateway API v1.0

Спецификация API и подробная документация доступны на сайте проекта: https://gateway-api.sigs.k8s.io

На этом же сайте можно найти ответы на основные вопросы:

▪️ Что такое Gateway API?

▪️ Ключевые концепции Gateway API

▪️ В чем разница между Gateway API и API Gateway?

💻 Ссылка на репозиторий проекта

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2
📝 Это база: нюансы работы с Redis. Часть 1

Начинаем серию статей про неочевидные нюансы работы с Redis.

В первой части Петр, DevOps-инженер компании Nixys, подробно рассказал об основных концепциях и понятиях этой БД и подготовил чек-лист, который может помочь вам в оптимизации этого NoSQL решения.

Приятного чтения!

#Хабр #статья_Nixys
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥84👍1
Всем DevOps! 🖖

Ненапряжные интересные статьи, самое то для среды.

✉️ Статья «How Discord Stores Trillions of Messages» — про Discord знают все. А вот как он работает под капотом: хранит и обрабатывает триллионы сообщений, нет. Отличная возможность узнать об этом, прочитав статью. Внутри еще есть ссылка на материал шестилетней давности, можно посмотреть, как изменилась архитектура с тех пор.

📦 Статья «10 insights on real-world container use» — пожалуй, не совсем правильно называть этот текст статьей, это полноценный отчет, в котором оценивается состояние контейнерной экосистемы. Выводы сделаны на основе анализа более 2,4 миллиардов контейнеров.

💻 Статья «Building a cheaper Kubernetes cluster at home» — еще одна статья из любимой рубрики «k8s для личных проектов». Автор хотел снизить расходы на поддержание своих проектов и отказаться от услуг облачного провайдера, поэтому решил развернуть кластер дома.

#статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Helm Diff Plugin — плагин Helm, который показывает превью изменений

Команды:

release — shows diff between release's manifests

revision — shows diff between revision's manifests

rollback — shows a diff explaining what a helm rollback could perform

upgrade — shows a diff explaining what a helm upgrade would change

2.3k звездочек! ⭐️

💻 Репозиторий на GitHub

#open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5👌2