Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Telepresence — это проект песочницы Cloud Native Computing Foundation (CNCF), созданный командой в Ambassador Labs. Telepresence позволяет разработчикам локально запускать службы на компьютере разработки при подключении к удаленному кластеру Kubernetes. Эта настройка упрощает разработку, отладку и тестирование приложений, взаимодействующих с другими службами в кластере, не выполняя повторное развертывание или перестроение всего приложения в Kubernetes при каждом внесении изменений.
Примечание.
Telepresence — это проект CNCF с открытым исходным кодом. Корпорация Майкрософт не предлагает поддержку проблем, которые могут возникнуть при использовании telepresence. Если у вас возникли проблемы с использованием telepresence, перейдите на страницу проблемы с Telepresence GitHub и откройте проблему.
В этом руководстве описано, как подключить кластер AKS к telepresence, а затем изменить пример приложения, работающего локально.
Как работает telepresence
Telepresence внедряет агенты трафика в модуль pod рабочей нагрузки в качестве бокового автомобиля. Агенты трафика выполняют роль прокси-сервера, перенаправляя входящий и исходящий сетевой трафик из кластера AKS на локальный компьютер. Затем вы можете разрабатывать и тестировать в локальной среде, как если бы локальный компьютер был в кластере AKS. Процесс включает в себя:
- Подключение к кластеру AKS к Telepresence.
- Указание службы или развертывания, для которого требуется перехватывать входящий и исходящий трафик, а затем перенаправляется в локальную среду.
- Запуск локальной версии службы. Telepresence подключает локальную версию службы к кластеру через прокси-модуль pod.
Необходимые компоненты
- Кластер AKS. Если у вас нет кластера, который вы можете использовать для этого руководства, создайте его с помощью руководства. Создание кластера Служба Azure Kubernetes (AKS).
- Kubectl устанавливается и находится на пути в среде командной строки, используемой для разработки. В этом руководстве используется
kubectl
для управления кластером Kubernetes. Если вы используете Azure Cloud Shell,kubectl
уже установлен. Чтобы установитьkubectl
локально, используйтеaz aks install-cli
команду. - Установите Node.js LTS. Выполнив команду
node --version
, убедитесь, что платформа Node.js установлена.
Подключение к кластеру с помощью kubectl
Примечание.
Задайте значения $MY_RESOURCE_GROUP_NAME и $MY_AKS_CLUSTER_NAME соответствующим образом.
Прежде чем установить telepresence и взаимодействовать с кластером AKS, убедитесь, что вы подключены к кластеру. Если вы не установили kubectl
в разделе "Предварительные требования" , сделайте это, прежде чем продолжить.
Настройте
kubectl
подключение к кластеру AKS с помощью команды az aks get-credentials . Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAME
Проверьте подключение к кластеру с помощью команды kubectl cluster-info . Эта команда отображает имя кластера, чтобы убедиться, что вы подключены к кластеру, с которым вы хотите работать.
kubectl cluster-info
Клонируйте пример приложения и разверните его кластер AKS
Приложение aks-store-demo , используемое в этом руководстве, — это базовое приложение для магазина, включая следующие развертывания и службы Kubernetes:
- Интерфейс магазина: веб-приложение для пользователей для просмотра продуктов и размещения заказов.
- Служба продуктов: отображает сведения о продукте.
- Служба заказов: помещает заказы.
- Rabbit MQ: очередь сообщений для очереди заказов.
Используйте git , чтобы клонировать пример приложения в среду разработки.
git clone https://github.com/Azure-Samples/aks-store-demo.git
Перейдите в клонированный каталог.
cd aks-store-demo
развернете приложение в кластере AKS;
kubectl apply -f aks-store-quickstart.yaml
Установка telepresence
Чтобы перехватить трафик в кластер AKS и из него, необходимо установить клиент Telepresence на локальном компьютере и диспетчер трафика в кластер AKS.
Установка клиента Telepresence
Выберите операционную систему, которую вы используете на локальном компьютере, и установите эту версию telepresence.
Инструкции по установке см. в документации по telepresence.
Установка диспетчера трафика telepresence
Для маршрутизации облачного трафика на локальный компьютер telepresence использует диспетчер трафика. Helm используется для развертывания диспетчера трафика в кластере Kubernetes.
telepresence helm install
Перехват трафика в службу
Выполните следующие действия, чтобы перехватить трафик, проходящий в службу в кластере AKS, и перенаправьте его на локальный компьютер.
В командной строке на локальном компьютере выполните команду
telepresence connect
, чтобы подключиться к кластеру AKS и серверу API Kubernetes.telepresence connect
Успешный ответ от
telepresence connect
имени кластера и пространства имен по умолчанию, к которому подключено telepresence, аналогично следующему примеру.Connected to context myAKSCluster, namespace default (https://myAKSCluster-dns-ck7w5t5h.hcp.eastus2.azmk8s.io:443)
telepresence list
Используйте команду для отображения списка служб, которые можно перехватывать.telepresence list
Успешный ответ отображает доступные службы, аналогичные следующему примеру.
order-service : ready to intercept (traffic-agent not yet installed) product-service: ready to intercept (traffic-agent not yet installed) rabbitmq : ready to intercept (traffic-agent not yet installed) store-front : ready to intercept (traffic-agent not yet installed)
Найдите имя порта, с помощью
kubectl get service service-name --output yaml
который необходимо перехватить трафик. В этом руководстве введите следующую команду в командной строке.kubectl get service store-front -ojsonpath='{.spec.ports[0].port}'
В этом примере возвращается порт для перехвата 80.
80
Перехват трафика из службы в кластере AKS с помощью
telepresence intercept
команды следующего формата:$ telepresence intercept <service-name> --port <local-port>[:<remote-port>] --env-file <path-to-env-file>
--port
указывает локальный порт и удаленный порт для кластера AKS.--env-file
указывает путь, в котором Telepresence создает env-файл, содержащий переменные среды, необходимые для перехвата трафика. Этот файл должен существовать для правильного перехвата трафика службы на локальный компьютер. Если файл не существует, telepresence создает его для вас.
Примечание.
sshfs
требуется для правильной работы томов во время перехвата для версий Telepresence linux и macOS. Если у вас нет установленной версии, дополнительные сведения см. в документации по telepresence.В этом руководстве введите следующую команду для перехвата трафика.
cd src/store-front telepresence intercept store-front --port 8080:80 --env-file .env
Успешный ответ показывает, какие подключения telepresence перехватываются, как показано в следующем примере.
Using Deployment store-front Intercept name : store-front State : ACTIVE Workload kind : Deployment Destination : 127.0.0.1:8080 Service Port Identifier: 80/TCP Volume Mount Point : /tmp/telfs-3392425241 Intercepting : all TCP connections
Изменение локального кода и просмотр изменений в режиме реального времени
Настроив telepresence, вы можете легко изменить локальный код и просмотреть изменения, отраженные в режиме реального времени. Это позволяет выполнять локальное тестирование и отладку при использовании кластера AKS.
Перейдите и откройте
components/TopNav.Vue
приложение, которое вы клонировали ранее.Измените
Products
элементNew Products
навигации на ,как показано в следующем примере, и сохраните изменения.<template> <nav> <div class="logo"> <router-link to="/"> <img src="/contoso-pet-store-logo.png" alt="Contoso Pet Store Logo" /> </router-link> </div> <button class="hamburger" @click="toggleNav"> <span class="hamburger-icon"></span> </button> <ul class="nav-links" :class="{ 'nav-links--open': isNavOpen }"> <li><router-link to="/" @click="closeNav">Products</router-link></li> <li> <router-link to="/cart" @click="closeNav">Cart ({{ cartItemCount }})</router-link> </li> </ul> </nav> </template>
Выполните следующие команды, чтобы запустить приложение локально.
npm install
— устанавливает зависимости.npm run serve
— запускает сервер разработки.
При переходе к общедоступному store-front
IP-адресу службы в кластере AKS обновленная навигация присутствует и трафик направляется в локальную версию службы. Локальные изменения отражаются в режиме реального времени и взаимодействуют с другими службами в кластере AKS.
Демонстрация видео
В следующем видео представлено четкое и краткое пошаговое руководство по отладке Telepresence В F5.
Следующий шаг
В этом руководстве объясняется, как использовать telepresence с примером приложения в AKS. Telepresence предлагает более подробную документацию на своем веб-сайте. Их содержимое охватывает часто задаваемые вопросы, устранение неполадок, технический справочник, основные понятия, учебники и ссылки на сообщество.
Azure Kubernetes Service