Что же такое GitOps? Его свойства и недостатки

  Рет қаралды 18,372

Флант

Флант

Күн бұрын

GitOps - современный подход, улучшающий паттерн IaC («инфраструктура как код») для доставки приложений в Kubernetes (и не только). Он был придуман для того, чтобы процессы CI/CD были детерминируемы, идемпотентны, хорошо наблюдались и т.д. Однако в реальной жизни, при использовании существующих утилит, не всё получается гладко.
Это видео - рассказ техдира компании «Флант» Дмитрия Столярова про подход GitOps, его сравнение с CIOps, оценка главных характеристик с учетом «большей картины» (полного CI/CD-пайплайна). Оно доступно также и в англоязычной версии ( • GitOps approach, its p... ).
00:00 Введение
01:01 Уточнение по терминологии «GitOps»
02:33 Про werf
03:20 Что такое GitOps
06:53 Оценка преимуществ и недостатков GitOps
13:58 Что такое CIOps
17:22 Оценка CIOps
26:15 Сравнение GitOps и CIOps с учетом всей картины
31:21 Заключение
* werf (ru.werf.io/ github.com/werf/werf) - Open Source-утилита для CI/CD, реализующая наш взгляд на GitOps.
* kubedog (github.com/werf/kubedog) - библиотека для языка Go для отслеживания Kubernetes-ресурсов в CI/CD-пайплайнах.
P.S. Текстовая версия этой лекции доступна в нашем блоге: habr.com/ru/company/flant/blo...

Пікірлер: 96
@agvaresss
@agvaresss 3 жыл бұрын
не привычно слышать Дмитрия, говорящего в таком темпе. )
@dmitriysolodukha9646
@dmitriysolodukha9646 3 жыл бұрын
Можно поставить скорость 1.5х :-D Так привычней
@elcolex777
@elcolex777 3 жыл бұрын
Закончились запасы адреналин раш
@orbuzegi
@orbuzegi 3 жыл бұрын
@@dmitriysolodukha9646 так и сделал, лол :)
@user-ry5zh7mo8j
@user-ry5zh7mo8j 3 жыл бұрын
а для тех кто слушал его ранее в 1.5х приходится ставить 2х, чтоб было привычно) Но Дмитрий как всегда, объясняет очень доступно, понятно и интересно, на любой скорости)
@adammartin7477
@adammartin7477 3 жыл бұрын
Кокаин - плохо
@sergeydev8273
@sergeydev8273 10 ай бұрын
Флант конечно лютые!) Качество материала и подачи просто пушка!
@Andy-qg6mm
@Andy-qg6mm 2 жыл бұрын
Отключаем в ГитОпс операторе синхронизацию с докер реджистри (т.е. он будет мониторить только гит) и избавляемся от всех описанных недостатков этого подхода. Кроме этого ГитОпс удобно использовать не только для выкатки собственных приложений в кластер, но и для управления этим кластером в целом - роли, квоты, сопуствующие тулы и т.д. Также такой подход значительно упрощает Disaster Recovery который по сути сводится к созданию нового кластера, установке мастер-ключа для расшифровки секретов (если используется что-то типа sealed-secrets) и накатке гитопс оператора который восстановит состояние до целевого.
@user-gw6df6ns7e
@user-gw6df6ns7e 4 ай бұрын
То есть в DevOps репо просто тег образа проставляем например? Можно даже скрипт написать, чтобы автоматически это делал когда собрался новый образ. Можно это отдельным таском сделать. Тут уже как душа пожелает. Тут только одна проблема - данные и их структура. Часто у нас есть некие операции DDL которые нельзя взять и откатить просто сменив тег в репо. Ну не описывается у нас таблица через манифест к сожалению.
@miky7miky
@miky7miky 3 жыл бұрын
Отличное видео! Теперь не хватает несколько видео-воркшопов, как Вы показываете решение вышеупомянутых вызовов на практике с помощью Werf.
@AndersonSilva-dg4mg
@AndersonSilva-dg4mg 3 жыл бұрын
Дмитрий, спасибо за бесплатную инфу, активно смотрю и читаю ваши материалы. Сейчас буду смотреть. Вы крутые!
@Flant
@Flant 3 жыл бұрын
И вам спасибо!
@egorkomarov4719
@egorkomarov4719 3 жыл бұрын
Качество картинки и звука - топ. Продолжаю смотреть сам видос
@andreylagunov2638
@andreylagunov2638 3 жыл бұрын
про стену, супер. Очень точно подмечено. devops про прозрачность и отсутсвие препятствий у разработчиков. А в реальности часто два репозитория и да, разделение :) CIops как единая система вместо gitops, мне очень близко. Интеграция и единая система. Единая система должна быть проста и прозрачна.
@MrMobilesfinks
@MrMobilesfinks 3 жыл бұрын
Дмитрий, отличный взгляд. Спасибо, что делишься своей философией и видением. Очень ценю твои выступления они позволяют увидеть то на что обычно замылен взгляд в повседневной работе.
@Mausspb
@Mausspb 3 жыл бұрын
Спасибо за подробный обзор подхода GitOps в особенности за разбор ключевых моментов. Очень удобно, что есть и видео и статья на хабре ! По поводу последнего вопроса, есть ощущение, что CI трансформируется во что-то более стандартизированное и нативное(в этом контексте мне нравится движение gitlab-ci). P.S.: Так же непривычно слышать Дмитрия в таком ритме )
@slip3101
@slip3101 3 жыл бұрын
Здравствуйте! Приятно слушать, все по делу. Материал сильно помог в выборе и осознание того с чем имею дело. Спасибо за видео.
@fabasoad
@fabasoad 3 жыл бұрын
Очень структурированно и понятно. Спасибо!
@L1texxxomg
@L1texxxomg 3 жыл бұрын
Супер! Не знал, что у вас есть ещё и ролики такого плана. Спасибо!
@Flant
@Flant 3 жыл бұрын
Только начинаем, но планов много! :-)
@kirillmorgachev1752
@kirillmorgachev1752 2 жыл бұрын
Дмитрий, спасибо! Классно получились вставки. Очень интересно и нескучно!
@_piiraa
@_piiraa 3 жыл бұрын
Спасибо из Латвии, хорошая информация
@Noable
@Noable 3 жыл бұрын
Спасибо за материал, классная картинка, звук, подача
@oleksandrholovko2794
@oleksandrholovko2794 3 жыл бұрын
Непонятно почему у меня в CI-опс билд будет недерминирован, если у меня в гитлаб-СИ пайплайн запускается единожды и создает докер-имедж с тегом коммита. второй раз никто руками не будет запускать этот пайплайн. на моменте паблиша просто генерируем тег который коммитим по апи в репо на этот коммит и клеим на тег уже собранного докера. Вроде как детерминизм остается нерушимым. Хелм чарт так же хранится в аппликейшн гит-репе. Все эти стратегии билда и тегирования отчасти навеяны вашими рекомендациями из конференций, но увы там вы конкретных примеров не приводили и пришлось на колене додумать самому. Вобщем у меня было стойкое ощущение что весь мой пайплайн очень близок к гитопс (git - single source of truth). Единственным нарушением правил - является хранение продакшн конфигов в отдельной репе и на момент деплоя - они апплаятся к уже собранному хелм-чарту через кастомный values_prod.yaml. Спасибо за структурированную подачу и разбор тонкостей, которые нужно учесть. Как всегда вы делитесь хорошим опытом и расширяете кругозор!
@batazor
@batazor 3 жыл бұрын
Согласен, единственно что вносит смуты это различные переменные окружения, можно через blackbox шифровать и хранить в той же репе для каждого окружения, но это не для всех кейсов подходит P. S. Хотя можно и во внешнем хранить и подключать как саб-модуль
@zimmermann512
@zimmermann512 3 жыл бұрын
Билд недетерминирован от того, что два раза запущенная сборка образа из одного коммита даст потенциально бинарно разные образы, разве нет (представим, что необходимость второй раз запустить пайплайн возникла) ?
@jewgenijmoldawski3306
@jewgenijmoldawski3306 3 жыл бұрын
@@zimmermann512 пересборка по одному и тому же commit это anti-pattern в ci/cd. Ну да, бывает надо, но лучше избегать.
@y6vmeq
@y6vmeq 3 жыл бұрын
Обожаю флант🔥🔥🔥 отлично все рассказали. Только начал присматриваться к werf, нужно изучить поближе
@kimrgrey
@kimrgrey 3 жыл бұрын
Ребята, вы делаете очень крутую работу, генерируя контент на русском языке. Благодаря вам, в частности, наш родной язык не умирает для IT. Считаю, это важно. Поэтому переводы - это збс, но, ИМХО, можно бы обойтись субтитрами, а не делать вдвое большую работу ради перевода. Хотя, возможно, коммерчески это и круче, потому что потенциально может привести клиентов, я хз по мотивации. Как бы то ни было, спасибо за ваш труд!
@Flant
@Flant 3 жыл бұрын
Спасибо большое за мотивирующие слова! ;-)
@Holms
@Holms 7 ай бұрын
мне как из англии важно доносить нашим динозаврам суть через такие видосы так как не всегда у меня получается защитить ту или иную технологию для конкретных целей. я как бы не нанимался быть учителем )) так что мне видосы на инглишы нужны.
@BeloRing
@BeloRing 3 жыл бұрын
Круто! Спасибо
@pgdnpgdn23
@pgdnpgdn23 2 жыл бұрын
Красиво. Спасибо.
@nickb5959
@nickb5959 3 жыл бұрын
Спасибо за видос. Почаще выпускайте в это нелегкое время)) расскажите пожалуйста про правильную с вашей точки зрения стратегию тегировагия образов
@Flant
@Flant 3 жыл бұрын
Спасибо за отзыв и пожелания! По поводу стратегии тегирования пока можно почитать эту нашу статью - в ней рассказано, что мы выбрали для werf и почему к этому пришли: habr.com/ru/company/flant/blog/495112/
@pavelsazon2523
@pavelsazon2523 2 жыл бұрын
Крутое видео!
@user-qu9je8im7e
@user-qu9je8im7e Жыл бұрын
Ты крутой тип. Спасибо что делаешь такое
@user-hg9gz9dj5u
@user-hg9gz9dj5u 3 жыл бұрын
Отличное видео)))
@dmitriymatveev4558
@dmitriymatveev4558 2 жыл бұрын
Хорошее видео.
@cloudevops
@cloudevops 2 жыл бұрын
Спасибо
@rjeka
@rjeka 3 жыл бұрын
Спасибо за интереный обзор. В данный момент переходим на гиопс, сейчас как раз процесы обкатаны на дев стендах и все движется к тому что бы уйти в прод. Согласен со многим из видео, кроме усложнения. Вы в ролике рассмотрели модель CI\CD только приложения не затрагивая инфраструктцрную часть стендов. И не рассмотрели плюсы гитопс. Например мне подход гитопс с использованием argocd позволил вносить изменения во множество стендов одним коммитом в инфраструктурный репозиторий с хелм чартами. Описать все стенды проекта в одном репозитории фактически 2 yaml файлами. Более удобно и гибко создавать динамические окружения для разработчиков. Да недостатки есть, как у любого инструмента, но я пока вижу плюсов больше чем минусов.
@Vovannumberonee
@Vovannumberonee 2 жыл бұрын
Блин чувак, говори как на конфе, там быстро и от души :) За материал спасибо 🙏
@user-cu2yw9fc5j
@user-cu2yw9fc5j 3 жыл бұрын
В FluxCD деплой новых имеджей работает так - когда появился новый имедж в реджистри FluxCD делает комит с новый образом в репу с манифестами, и только после этого синкает состояние репы с кубом, то есть всегда то что в репе соотвсвует тому что в кубе, нет двух независимсых источников правды - гита и реджистри. Но даже такое поведение можно отключить что бы FluxCD не реагировал на изменения в реджистри. В таком случае тег имиджа нужно обновлять руками или через CI.
@davidmagton
@davidmagton 3 жыл бұрын
Привет. Спасибо за комент! Все так. Более того. Если я правильно помню, то в argo так вообще нельзя. И я бы сказал, что это главный косяк видео. Я должен был четко это обозначить, но не сделал. Плохо. Очень расстраиваюсь по этому поводу. Сейчас получается, что многие натыкаются на эту неточность и смотрят видео через призму "Столяров тут что-то гонит". Или не смотрят дальше вообще... Тот факт, что теги фиксированы в гите - никак не меняет ситуацию. Все поинты видео остаются валидны. Состояние registry, к сожалению, не определяется одним тегом.
@user-cu2yw9fc5j
@user-cu2yw9fc5j 3 жыл бұрын
@@davidmagton Дмитрий, в любом случае видео интересное, с удовольствием посмотрел, очень доступно обьясняете концептуальные вещи, вообще люблю смотреть Ваши видео, успехов Вам !
@MrBartonello
@MrBartonello 3 жыл бұрын
Актуальный и интересный материал, спасибо! А еще - отличная картинка. Подскажите, пожалуйста, модель камеры )
@davidmagton
@davidmagton 3 жыл бұрын
Sony a7iii
@MaximVasilets
@MaximVasilets 2 жыл бұрын
Спасибо за отличное видео. Для себя искал ответ на очень важный для меня вопрос - как скрыть важные секреты в CI/CD процессах. На самом деле очень легко, специально или случайно, такие секреты как AWS или Kubernetes ключи вывести в консоль или еще как-то сделать доступными внутри компании, или еще хуже для общего доступа. Я думал что GitOps поможет мне в этом, но видимо все не так просто.
@Wzooff
@Wzooff 2 жыл бұрын
При правильном предоставлении прав ci воркерам, у вас не будут появляться секреты в логах. Например воркер использует irsa для доступа к ecr, если говорить и паблише образов. Так же все нынешние ci тулы позволяют определить секреты в энв переменных и они будут маскироваться. Так что надо читать мануалы по вашей си системе.
@seedteam7646
@seedteam7646 3 жыл бұрын
Круто на английском! не парься по поводу акцента, очень круто!!!!
@dreamworm8
@dreamworm8 3 жыл бұрын
Звук отличный! Как писали?
@dmitriysolodukha9646
@dmitriysolodukha9646 3 жыл бұрын
Вот бы еще посмотреть видос Argo CD vs werf
@ashimov1970
@ashimov1970 3 жыл бұрын
тема! хотя при беглом знакомстве с документацией обоих проектов у Арго тема приведения реестра докеров к желаемому состоянию не раскрыта
@ashimov1970
@ashimov1970 3 жыл бұрын
В свете технологии билдпаков + недавно анонсированного Гуглом Config Sync насколько актуален Werf?
@Flant
@Flant 3 жыл бұрын
Google Sync ограничен cloud-платформой Google, а werf - универсальная утилита (для деплоя в условно любой Kubernetes). GS - это по сути такой же pull-оператор, как и другие решения, о минусах коих идет речь в этой лекции. Buildpacks - интересный проект; сравнение werf с ним у нас стоит в плане статей. Однако он только про сборку. В свою очередь Google Sync - только про деплой. А werf - и про сборку, и про деплой. Эта утилита про «склеивание» разных процессов CI/CD в одном (унифицированном) месте. И она дает возможность использовать разные инструменты (предпочтительную CI-систему, Kubernetes любого вендора…) для своих задач.
@f1baf1banac14
@f1baf1banac14 3 жыл бұрын
COOOOOLLest video ever !
@user-er9ev7vf1h
@user-er9ev7vf1h 3 жыл бұрын
тестировалась ли werf на совместимость с OpenShift? OKD4?
@Flant
@Flant 3 жыл бұрын
Не делали таких тестов.
@user-er9ev7vf1h
@user-er9ev7vf1h 3 жыл бұрын
@@Flant в данный момент разворачиваем тестовый кластер OKD4. Скорее всего попробуем и werf. По результатам могу поделиться впечатлением
@Flant
@Flant 3 жыл бұрын
@@user-er9ev7vf1h будем рады! Если возникнут проблемы - наши разработчики на связи в t.me/werf_ru
@ParanoidAndroid777
@ParanoidAndroid777 3 жыл бұрын
Спасибо за информацию, ждем вас в трендах) P.S. сейчас думаю писать диплом по k8s, но что конкретно взять, чтобы было актуально, пока не определился. Интересует тема логирования, например чтобы по запросу, поступившему на ingress, можно было проследить путь по кластеру и посмотреть логи в каждом сервисе, участвовавшем в оброботке, вплоть до запроса в бд, если бд у нас внутри кубера. На сколько эта тема может быть актуальной? Можите посоветовать еще какие то темы?
@user-iq6xw4hv9m
@user-iq6xw4hv9m 3 жыл бұрын
Отследить запрос по цепочке, это tracing называется скорее, а не логгирование.
@ParanoidAndroid777
@ParanoidAndroid777 3 жыл бұрын
@@user-iq6xw4hv9m а как tracing связать с логами? например такая ситауция: клиент отправил запрос, он как то прошел по нашему кластеру, и вернул клиенту 500 ошибку. Как мы можем понять, в каком сервисе была ошибка и какая именно?
@Mausspb
@Mausspb 3 жыл бұрын
@@ParanoidAndroid777 вот например статья на эту тему. medium.com/opentracing/opentracing-on-kubernetes-get-yer-tracing-for-free-7a69cca03c8a Выше верно написали про tracing. Собственно каждое приложение имеет свой ворклоад/лейблы, по этим ключам видно от какого приложения какие логи приходят, в системах сбора логов можно фильтровать по этим ключам (а также по traceID).
@ParanoidAndroid777
@ParanoidAndroid777 3 жыл бұрын
@@Mausspb Спасибо за информацию, обязательно почитаю!
@nikitaproit
@nikitaproit 3 жыл бұрын
Скажу так: раз вы не в магистратуре, любая тема подойдет, а лучше просто устройтесь на работу, сделайте какую-нибудь таску на пару часов и вот диплом готов. Не тратьте силы на то, чтобы в вашем дипломе было что-то адекватное, его увидят 2 человека включая вас, это просто очередной документ который отправится в мусорное ведро как и все работы которые вы сдаете (диплом конечно хранят, но это чисто для галочки). Вы конечно можете заняться этим для себя, но тогда вас будет мучать то, что вашу работу выкинули в мусорное ведро.
@ashimov1970
@ashimov1970 3 жыл бұрын
Дмитрий, что вы скажете относительно проектов TEKTON и KNative в сравнении с WERF?
@Flant
@Flant 3 жыл бұрын
Это продукты разного плана. Tekton - тоже для CI/CD, но той части, которая не реализуется werf, а интегрируется с werf (как, например, можно использовать GitLab CI или GitHub Actions с werf). Knative - решение из другой плоскости: сравнивать совсем странно.
@ashimov1970
@ashimov1970 3 жыл бұрын
@@Flant спасибо
@michaelchudinov
@michaelchudinov 3 жыл бұрын
С асинхронностью между репой кода, образом докера и репой кластера боремся просто - деплоим кластер и приложение в кластер вручную, когда нужно.
@user-gw6df6ns7e
@user-gw6df6ns7e 4 ай бұрын
Не всегда можно назад состояние откатить. Например прошла миграция в базу и убрали поля из таблицы. В модели они при откате появятся 😢.
@spiritcxz
@spiritcxz 2 ай бұрын
смешно 😄 1. что мешает держать тестовый и прод в разных кластерах или в разных неймспейсах. 2. так же допустим для теста в gitops репе можно создать тестовую и продовую папку для манифестов. 3. еще ни разу не было проблем с деплоем. 4. выпрямите руки и делайте правильное тегирование и проблем не будет. уже как неделю юзаю flux и проблем не знаю
@vskovzgird
@vskovzgird 3 жыл бұрын
Просто браво.
@alexandersmirnov4274
@alexandersmirnov4274 Жыл бұрын
что значит hyperconvergence?
@Flant
@Flant Жыл бұрын
Про гиперконвергентность у нас была статья - обзор Harvester: habr.com/ru/company/flant/blog/665066/
@YouSysAdmin
@YouSysAdmin 3 жыл бұрын
Дядько, прекращай щёлкать пальцами ;)
@user-er9ev7vf1h
@user-er9ev7vf1h 3 жыл бұрын
он так кластеры разворачивает
@GreyDjin
@GreyDjin 3 жыл бұрын
слишком много баса в звуке голоса, нужно было срезать немного
@AlexK-df4ne
@AlexK-df4ne 2 жыл бұрын
Обратите внимание какого труда ему стоит говорить медленно
@defend00r
@defend00r 2 жыл бұрын
Ну и артист
@MrPetryks
@MrPetryks 3 жыл бұрын
Без специфектов было бы не так увлекательно :)
@user-gi9sk9zr8j
@user-gi9sk9zr8j 3 жыл бұрын
А Навальный то делом занялся!
@uk267i
@uk267i Жыл бұрын
С детерминизмом вы погорячились. Мол состояние K8s зависит не только от Git. Чувак, Dockerfile же лежит в Git и от этого полностью зависит состояния Docker образа, а Registry это всего лишь доставка этого образа, собранного и хранящегося в Git... Остальные выводы примерно так же за уши притянуты. Не понимаю, зачем этот ролик? Просто вводить в заблуждение начинающих инженеров...
@Flant
@Flant Жыл бұрын
Dockerfile'а в Git недостаточно для того, чтобы не зависеть полностью. Только на днях отвечали на похожий вопрос в комментариях на Хабре: habr.com/ru/company/flant/blog/526102/comments/#comment_24754288
@uk267i
@uk267i Жыл бұрын
@@Flant полной независимости в природе вообще не существует, всё взаимосвязано. Имеет смысл говорить про достаточный и необходимый контроль над собственным приложением, архитектурой, инфраструктурой, что и дает Dockerfile находящийся в Git. Если этот контроль в системе не нужен, то конкретный Docker образ вполне можно взять из внешнего источника, что только увеличивает гипкость GitOps подхода. Вы же, зачем-то, пытаетесь сказать, что GitOps какой-то не совсем правильный. У меня только один вывод напрашивается, вы или не умеете его готовить и/или намеренно искажаете суть пытаясь набить себе очки и добавить важности. Типа GitOps не правильный, а вот Флант настоящий огурец ))
@Flant
@Flant Жыл бұрын
​@@uk267i GitOps позиционируют именно как гарантию того, что результат будет immutable (см. пункт 2 на opengitops.dev/). Уже не только мы заметили проблемы и говорим* о них - вот пример совсем свежей статьи по теме: thenewstack.io/does-the-gitops-emperor-have-no-clothes/ * В конце концов, мы не просто говорим «для красного словца» о каком-то недостижимом идеале. Мы решаем проблемы на практике и делимся этими мыслями, своим опытом.
@uk267i
@uk267i Жыл бұрын
@@Flant это понятно, что таких замечательных, внимательных и очень важных людей как вы много, а вот инженеров на всех (по прежнему) не хватает. Но я не буду спорить, если вам выгоднее и приятнее считать, что GitOps не достаточно хорош, считайте на здоровье. Когда моя маленькая дочь в первый раз жарила яичницу и успешно её спалила, она тоже решила, что виноваты проклятые куры которые несут не правильные яйца. Кстати, целая группа в садике с ней согласилась и её выводы подтвердила )))
@user-jx4jb4of3c
@user-jx4jb4of3c 3 жыл бұрын
Как жаль что сложные видео смотрит так мало человек. Как жаль что это приводит к исчезновению продолжений... :-(
@mootal2202
@mootal2202 2 жыл бұрын
Специфическая тема потому что. Это нормально.
@ProtossZealotDaol
@ProtossZealotDaol 3 жыл бұрын
Столяров специалист наверное хороший, но слово своё НЕ всегда держит. Для мужика - не очень.
@user-up9ho2ko2d
@user-up9ho2ko2d 2 жыл бұрын
чем то похоже для доклад навального
@user-gu9jg6ei4h
@user-gu9jg6ei4h 2 жыл бұрын
CI-Ops -NORM, GitOps - GOVNO
Что такое Git flow и когда использовать?
11:44
PurpleSchool | Anton Larichev
Рет қаралды 60 М.
NO NO NO YES! (50 MLN SUBSCRIBERS CHALLENGE!) #shorts
00:26
PANDA BOI
Рет қаралды 102 МЛН
Omega Boy Past 3 #funny #viral #comedy
00:22
CRAZY GREAPA
Рет қаралды 26 МЛН
Pray For Palestine 😢🇵🇸|
00:23
Ak Ultra
Рет қаралды 26 МЛН
Что такое GitOps. Улучшенный DevOps?
12:27
Senior Software Vlogger
Рет қаралды 28 М.
CI CD наглядные примеры
22:08
Ulbi TV
Рет қаралды 267 М.
Docker за 20 минут
21:42
suchkov tech
Рет қаралды 52 М.
👎Главный МИНУС планшета Apple🍏
0:29
Demin's Lounge
Рет қаралды 483 М.
XL-Power Best For Audio Call 📞 Mobile 📱
0:42
Tech Official
Рет қаралды 772 М.
How much charging is in your phone right now? 📱➡️ 🔋VS 🪫
0:11
🤔Почему Samsung ПОМОГАЕТ Apple?
0:48
Technodeus
Рет қаралды 451 М.
ПРОБЛЕМА МЕХАНИЧЕСКИХ КЛАВИАТУР!🤬
0:59
Корнеич
Рет қаралды 3,3 МЛН