Рубрики
Uncategorized

Использование TelePresence 2 для отладки Kubernetes и Local разработка

TelePresence 2 был недавно выпущен и (как TelePresence 1) это достойное дополнение к вашему Куберну … Теги с DevOps, Kubernetes, Plationnative, Tooling.

TelePresence 2 был Недавно выпущено и (как Telepresence 1) Это достойное дополнение к вашим груди для инструментов Kubernetes. TelePresence — один из тех инструментов, которые вы не можете жить без того, чтобы обнаружить, как улучшится ваш ежедневный рабочий процесс.

Так что такое телеприсутствие? Слишком сложно описать все функциональные возможности инструмента в одном предложении, но на данный момент я бы описал его как «сетевой инструмент Swiss Swiss Army Swiss». В этом посте мы увидим основные случаи использования, которые он охватывает, но со временем продолжается и больше команд принять телесперенцию, я уверен, что будет обнаружено более творческое использование этого.

Основные проблемы, которые решают телесперенцию:

  1. Kubernetes отладки и анализ выпуска. Это полезно для операторов разработчиков, так и для операторов Kubernetes
  2. Легкое местное развитие без локально бегущего кластера Kubernetes. Это в основном полезно для разработчиков
  3. Предварительный просмотр создания окружающей среды и совместное сотрудничество в реальном времени в команде. Это отлично подходит для больших команд, которые приняли Kubernetes.

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

TelePresence — это проект в растущей дисциплине опыта разработчика, в котором у нас есть другие инструменты, такие как Tilt.dev , сад .о , ОКТЕТО и ресурсы, такие как dex.dev . Он специально фокусируется на помощи разработчикам работать с контейнерами и Kubernetes (в отличие от инструментов, которые сосредоточены на администрации и управлении кластерами).

Кстати, если вы уже знакомы с Telepresence 1, то TelePresence 2 — это полное переписание (сейчас) со многими более улучшениями для надежности и дополнительных функций.

Лучшись в вашу кластер Kubernetes (используя телесперенцию для отладки Kubernetes)

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

В интернет-конце не может найти бэкэнду, очередь недоступна от бэкэнда и так далее. Вам нужен способ проверить подключение между услугами и как они отвечают. Ваш первый импульс будет использовать почтенные kubectl порт вперед Чтобы все эти услуги доступны локально на вашу рабочую станцию. Хотя этот подход может работать, это не совсем то, что вы хотите, потому что с помощью Kubectl Port — вперед, вы делаете удаленный порт, доступный для локального порта.

То, что вы действительно хотите, — это способ увидеть внутри кластера и увидеть вещи с точки зрения обслуживания, в которой вы заинтересованы. Вы хотите понять, как например, Backend POD может получить доступ к другим услугам изнутри кластера. Также, если вы хотите сразу отладить слишком много услуг, открывая несколько терминалов с помощью KUBECTL EXEC или KUBECTL PORT-INVE вперед — громоздкий процесс.

Разве не было бы здорово, если у вас был волшебный путь, который передал ваш ноутбук внутри кластера Kubernetes? Таким образом, вы можете запустить любую команду непосредственно в вашем терминале с той же точки зрения POD и понять подключение к сети с помощью простых инструментов, таких как Curl, NetCat, Wget и т. Д.

Ну, этот волшебный путь именно то, что делает Telepresence! Как предполагает имя, TelePresence перемещает вашу локальную рабочую станцию внутри кластера Kubernetes и заставляет его выглядеть как ваша местная среда находится внутри стручка. Все сетевые службы и имена DNS, доступные для POD, теперь доступны для вашей локальной рабочей станции.

За кулисами Telepresence запускает небольшой агент в кластере и маршрутизации трафика взад и вперед между безопасным сетевым туннелем. Это также одна из больших различий с Telepresence 1. TelePresence 2 имеет глобальный агент маршрутизации для всего кластера, и каждый перехваченный сервис получает свой собственный менеджер трафика (поскольку мы увидим в случае следующего использования)

Telepresence CLI изменяет ваши локальные настройки сети и позволяет использовать ваши любимые инструменты на местной рабочей станции, как если бы вы были внутри кластера.

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

1. ISPECTING существующие таблицы на базе данных MySQL, которая доступна только из кластера

  1. Загрузка тестовых данных в базу данных MySQL с помощью сценария, который вы будете развиваться
  2. Изучение ответов на отдых от другой службы, которую вы собираетесь зависеть от
  3. Отправить сообщения в очередь, которая также работает внутри кластера

Опять же, вы можете открыть 3-4 клеммы с помощью Kubectl Forward и подключите ваши инструменты для localhost: порт Отказ

Не было бы лучше просто открыть инструмент администрирования MySQL и просто подключиться к MySQL: 3306 ?

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

Как сделать вашу рабочую станцию часть кластера

Это самый простой способ начать с телеприсутствия. Скачать TelePresence CLI (В настоящее время доступно для Mac и Linux) и запустите в своем терминале (с помощью KUBECTL доступа к вашему кластеру)

>telepresence connect
Launching Telepresence Daemon v2.1.3 (api v3)
Connecting to traffic manager...
Connected to context mydemoAkscluster (https://mydemoakscluster-dns-8734f6ac.hcp.centralus.azmk8s.io:443)

TelePresence установит небольшой агент в вашем кластере и устанавливает локальные сети на вашей рабочей станции, чтобы заставить любые имена Kubernetes DNS доступны локально.

Теперь вы можете запустить ваши любимые инструменты, такие как внутри кластера. Если например, ваша бэкэнд-сервис работает с именем «My-Backend» на пространстве имен «Demo» в порту 9999, Вы можете просто написать

curl http://my-backend.demo:9999

И верните ответ! Это не становится легче, чем это. Вы можете запустить вашу любимую IDE и подключиться к отладке портам, инструменте администрирования базы данных и подключиться к DB, вашу внутреннюю приборную панель для вашего контроллера входа (который обычно доступен только в кластере) и так далее.

Кстати, это одна из областей, где Telepresence 2 видел серьезные улучшения от первой версии, поскольку агент In-Cluster позволяет более надежными подключениями

Разработка местных Кубернанов без локальной кластеры Kubernetes

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

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

Но с телеприсещением вы можете полностью пропустить этот процесс! Помните, что мы сказали, что туннель связи между вашей рабочей станцией и кластером — это два пути. Это означает, что вы можете просто запустить ваше приложение локально (снаружи кластера и снаружи контейнера) и просто скажите телепринесению, чтобы «перехватить» или маршрутизировать все трафик в свой локальный порт.

Вот как это работает:

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

Обратите внимание, что это также большая разница между Telepresence 1 и 2. TelePresence 1 Используется для замены всего развертывания в кластере, в то время как 2 использует агент (и обе версии локального и дистанционного управления приложениями, так и для удаленного удаления)

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

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

С такого рода установка процесс разработки простой. Вы просто делаете изменения кода локально, и приложение мгновенно обновляется. Нет ничего для перераспределения или повторной обработки в документе Docker. Любой механизм Live-Rood, который может использоваться ваши опоры языка программирования, как без каких-либо специальных изменений. Вы также можете запустить отладчики, трассеры и другие инструменты DEV локально, как и раньше.

Telepressence по существу сокращает ненужные части Цикл развития Отказ

Если вы привыкли запустить локальную кластер Kubernetes для разработки (или использовать другие инструменты, которые просто восстанавливают свое изображение в удаленный кластер), вы уже знакомы с дополнительной ценой, которая поставляется с развитием Kubernetes. Это шаги, показанные красным на рисунке выше. И телеприсутствие устраняет их!

Это также еще одна большая разница между телеприсуществом и другими инструментами, предназначенными для развития Кубернана (таких как Okteto, Tilt и Garden.io). С Telepresence нет процесса синхронизации кода, никаких интеллектуальных механизмов Live Reload и нет локальной сборки любого вида изображения. Приложение работает вне кластера Kubernetes на вашем ноутбуке.

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

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

Сначала запустите ваше приложение локально и убедитесь, что он правильно выставляет свой порт (например, на localhost: 3000). Это также время для настройки вашего механизма горячего перезагрузки, поддерживаемым вашим языком программирования. В идеале каждый раз, когда вы внесите изменения в свой редактор, ваше локальное приложение должно обновить автоматически.

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

Затем запустите эту команду:

telepresence intercept dataprocessingservice --port 3000 -n demo --env-file ~/example-service-intercept.env

Это взято из Пример приложения Но не стесняйтесь менять команду с нашим собственным сервисом, портом и пространством имен KUBERNETES.

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

Теперь вы можете начать развиваться как обычно. Любые изменения кода, которые вы делаете, сразу видно на кластере. Больше не ожидание сборки Docker или image pushes. И вам даже не нужны местные кластеры Kubernetes.

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

Сотрудничество Kubernetes в командной среде

Одной из наиболее важных различий между TelePresence 1 и 2 заключается в том, что телесперенция больше не сводится к развертыванию внутри кластера (метод также сопровождается OKTETO и аналогичными инструментами), но вместо этого устанавливает агент маршрутизации рядом с существующим сервисом, который заботится о всей сети коммуникация.

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

И это именно то, что TelePresence 2 предлагает в виде предварительного просмотра среды! Вот как это работает

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

Тогда, если кто-то посещает ваш URL-адрес предварительного просмотра, агент отправит все свои трафик на вашу рабочую станцию. Если кто-то еще посещает ваш сервис не из URL-просмотра, то все их трафик перейдут в существующее приложение, которое работает внутри кластера.

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

После того, как вы будете готовы опубликовать ваши изменения в каждом, которые вы можете, конечно, совершить свой код и позволить вашему решению CI/CD обновить все живые трафик. Но во время вашего времени в разработке нет лучшего способа работать в подобной среде, не влияя на производство.

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

Обратите внимание, что эта функция требует попадания в вашем кластере. И это может быть любой вид соблюдения вход (а не только ворот посол API/кромки).

Приборная панель Cloud Cloud предоставляет также хорошее пользовательское интернет-интерфейс для управления средами предварительного просмотра

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

Как использовать предварительный просмотр среды с телесперсом и облаком посла

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

telepresence login
telepresence intercept dataprocessingservice --port 3000 -n demo

Первая команда откроет UI и попросит вас зарегистрироваться с GitHub/Google/Gitlab. Затем вторая команда перехватит службу как раньше, но и распечатает URL-адрес среды предварительного просмотра.

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

Сравнение с другими инструментами

Самый большой конкурент Telepresence 2 прямо сейчас — предыдущая версия. Есть некоторые другие инструменты, которые разделяют некоторые из той же функциональности.

Сравнение с Kubectl Port-Word:

Команда Port-Freake очень упрощена, так как он работает только на одном порту для одного сервиса, и это одностороннее соединение. Он отлично подходит для быстрого доступа к кластеру, но Telepresence имеет много функций. Вы все еще можете использовать Kubectl Port вперед для проблем с подключением ADHOC, но для разработки приложений есть много лучших вариантов.

Сравнение с Kubefwd:

Kubefwd Работает, похожие на Telepresence, сделав вашу местную среду, подумайте, что она находится внутри кластера. Сетевой туннель является только одним направлением. TelePresence гораздо умнее, поскольку он также делает другие приложения кластера считают, что ваше локальное приложение внутри того же кластера. Так что с Kubefwd вы получаете 50% от того, что предлагает базовые телеприсещества. TelePresence также имеет Подставка для монтажа громкости Для более продвинутых сценариев.

Сравнение с телеприсещением 1

TelePresence 2 улучшается в каждом аспекте по сравнению с предыдущей версией. Сетевая архитектура теперь полностью переработан. На каждом кластере есть глобальный менеджер движения, и каждый перехваченный сервис имеет свой собственный контейнер для Sidecar. Новый агент маршрутизации отлично подходит для надежности, и Telepresence 2 будет работать лучше с Spotty Network Connections. Возможность использовать маршрутизатор Sidecar вместо полностью заменяющего развертывания, поставляется со своими преимуществами (среда предварительного просмотра). Также TELEPRESENCE 2 — это один двоичный писатель, записанный у монтажа намного проще (TelePresence 1 был многофункциональным приложением Python)

Сочетание телеприсутствия с внешними инструментами петли

Telepresence отлично подходит для обработки так называемых Внутренняя петля развития Отказ Это часть, в которой вы, как разработчик, напишите свой код и тестируете прямо на локальной машине. Для этой части процесса вы хотите максимально быстраиться обратной связи.

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

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

Мы уже исследовали такие инструменты в нашем предыдущем блоге. Популярные инструменты в этой категории:

ОКТЕТО Имеет мощный процесс синхронизации, который создает среду разработки внутри вашего кластера и запускает там приложение. Если вы используете определенные функции Kubernetes, такие как узлы GPU или имеют комплексные требования к сети и требованиям безопасности (IAM, конкретные идентификаторы), то Okteto может помочь вам быстро увидеть, как ваше приложение ведет себя в реальном кластере. Октето также поставляется с вариантом Okteto Cloud/Okteto Enterprise Enterprise, имеющих дополнительные функции в контексте команды (E.G. Isavation Isazation, управление учетными данными, обслуживание постройки, развертывание из GIT, реестра Okteto). Смотрите наши Обзор Okteto Больше подробностей.

Tilt.dev Это еще одна услуга для развития местных культур Кубера. Его основная сила — это его инновационные интерфейсы, которые группируют все связанные микросервисы из приложения плюс любые пользовательские ресурсы, которые вы хотите создать. Наклон имеет много разных вариантов для Местное, гибридное или полностью дистанционное развитие Отказ В случае местного развития вам все еще нужно Местные кластеры Kubernetes Отказ

Гипродукты TILT специально предназначены для приложений с большим количеством микросервисов и отлично подходит для внесения изменений в более чем один сервис одновременно. Наклон очень расширяемый, что позволяет легко адаптироваться к тому, что пользователь имеет (в отличие от пользователя, необходимого для адаптации к инструменту), и имеет растущую экосистему расширений со многими сторонниками ( https://github .com/tilt-dev/tilt-reatensions/ ). Смотрите наши Обзор Tilt.dev Больше подробностей.

Сад .о это инструмент, предназначенный для полного программного жизненного цикла (а не просто развертываний). Его основной привлекательность состоит в том, что он создает модель ваших приложений зависимости С большой визуализацией Предоставление вам хорошего понимания того, что необходимо обновить каждый раз, когда сделано изменение. Садовые попытки моделировать полный рабочий процесс программного обеспечения, включая Тестирование Отказ У вас также есть возможность создавать свои собственные задачи для улучшения вашего ежедневного рабочего процесса. Это означает, что вы можете настроить сад в качестве Mini Ci Workflow (что вы можете позвонить с вашего настоящего сервиса или садового предприятия), позволяя вам объединить способ создания разработчиков с вашими трубопроводами CI. Одной из сильных точек подхода является то, что правильные тесты и трубопроводы могут быть запущены перед точностью до Git, что делает тестирование интеграции/E2E и отладки CI/CD намного быстрее.

Сад также дает много важности для расширяемости. Даже поддержка Kubernetes на самом деле создается как плагин/расширения, и есть уже набор поставщиков для других платформ. Как и TILT.DEV, вы можете выбрать, где происходит упаковка/развертывание (на локальный или удаленный кластер Kubernetes ) и, конечно, Поддерживает Live-Reload Возможности. Смотрите наши Обзор Garden.io Больше подробностей.

Skapshold это инструмент для локальной разработки Кубернетиков. Он содержит самоуверенный рабочий процесс (который может работать то же самое на вашей локальной рабочей станции или в трубопроводе CI) и встроена интеграция со многими популярными, а не очень популярными инструментами сборки, такими как Базель , Jib и buildpacks Отказ Смотрите наши Обзор Skapsold Больше подробностей.

Принятие телеприсутствия в вашей команде

Так что телеприсутствие стоит иметь в вашем инструменте груди?

Прежде всего, если вы являетесь администратором Kubernetes или оператор системы, ответ несомненно, да. Все остальные решения направлены строго у разработчиков. Но если все, что вы хотите, состоит в том, чтобы посмотреть, какие конечные точки доступны в кластере, и хотите запускать скрипт Adhoc Bash/Python, чтобы сделать что-то, что касается нескольких услуг, Telepresence — гораздо мощнее, что kubectl Port-вперед.

Если вы являетесь разработчиком, Telepresence отлично подходит для местного развития, поскольку он имеет самый быстрый цикл кода, когда-либо (просто код). Нет синхронизации файлов, без подключения Docker, обновление контейнера Live, а локальный кластер не требуется. Вам нужно учитывать тот факт, что ваше приложение работает на вашем ноутбуке за пределами кластера Kubernetes, принимая риск страшных «Работа на моей машине».

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

Чтобы получить полные преимущества местных разработок Kubernetes, вы должны пару телесперенции с другим инструментом, который фактически разворачивает приложение в кластере и получите лучшее из обоих миров (быстрое локальное развитие, проверку, что приложение будет работать то же самое в кластере Kubernetes).

Обложка Фото Бессмысленно

Оригинал: «https://dev.to/codefreshio/using-telepresence-2-for-kubernetes-debugging-and-local-development-5bn6»