Использование Bridge to Kubernetes с AKS

В этом руководстве вы воспользуетесь конкретным пример веб-приложения микрослужб AKS, чтобы узнать, как использовать Bridge to Kubernetes для локальной отладки в рамках одного модуля, который является частью кластера службы Azure Kubernetes (AKS).

Перед началом

Для демонстрации подключения компьютера разработки к кластеру Kubernetes, работающему в Службе Azure Kubernetes, в этом руководстве используется пример приложения Todo. Если у вас уже есть собственное приложение, работающее в кластере Kubernetes, см. раздел Разработка с Kubernetes. Если вы используете другой кластер, например MiniKube, работающий локально, см. раздел Использование Bridge to Kubernetes с примером.

Предварительные требования

Создание кластера Kubernetes

Создайте кластер AKS в поддерживаемом регионе. Нижеприведенные команды создают группу ресурсов с именем MyResourceGroup и кластер AKS с именем MyAKS.

az group create \
    --name MyResourceGroup \
        --location eastus
az aks create \
    --resource-group MyResourceGroup \
    --name MyAKS \
    --location eastus \
    --node-count 3 \
    --generate-ssh-keys

Установка примера приложения

Скачайте код и установите зависимости:

git clone https://github.com/Microsoft/mindaro
cd mindaro/samples/todo-app
npm install stats-api\

Подключение к кластеру и развертывание приложения

На компьютере разработки скачайте и настройте Kubernetes CLI для подключения к кластеру Kubernetes с помощью команды az aks get-credentials.

az aks get-credentials --resource-group MyResourceGroup --name MyAKS
kubectl create namespace todo-app
kubectl config set-context --current --namespace=todo-app
kubectl apply -f deployment.yaml --namespace todo-app

Проверка работы приложения

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

kubectl get services

Чтобы опробовать приложение, перейдите по такому URL-адресу: (внешний IP-адрес из данных команды выше).nip.io

Отладка службы stats-api

В том же терминале, что вы использовали ранее, введите указанную ниже команду или откройте stats-api в VS Code.

code ./stats-api

Сначала разместите точку останова в строке 17 в файле server.js.

Убедитесь, что пространство имен todo-app в кластере MYAKS имеет значение по умолчанию (рядом есть символ "*"). Если там другое значение, щелкните правой кнопкой мыши узел todo-app и выполните команду Использовать пространство имен.

Снимок экрана: пространство имен Bridge to Kubernetes.

Откройте палитру команд (нажатием клавиш CTRL+SHIFT+P или CMD+SHIFT+P на компьютере Mac) и введите Bridge to Kubernetes. Выберите параметр Bridge to Kubernetes: Настройка.

Снимок экрана: окно с командой настройки в Bridge to Kubernetes.

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

Выберите службу stats-api.

Снимок экрана: окно выбора службы для подключения в Bridge to Kubernetes.

Важно!

Перенаправление можно выполнять только для служб с одним модулем pod.

После выбора службы вам будет предложено ввести порт TCP для вашего локального приложения. В этом примере введите 3001.

Снимок экрана: окно для ввода номера порта.

Выберите Run Script: dev в качестве задачи запуска.

Снимок экрана: окно для выбора задачи запуска отладчика.

У вас есть возможность работать изолированно или неизолированно. Если вы работаете изолированно, в ваш локальный процесс направляются только ваши запросы; другие разработчики могут использовать кластер без каких-либо последствий. Если вы не работаете изолированно, весь трафик перенаправляется в ваш локальный процесс. Дополнительные сведения об этом параметре см. в разделе Использование возможностей маршрутизации для изолированной разработки. В этом примере мы продолжим работу в неизолированном режиме. Если вы выбрали изоляцию, у task.json будет префикс, который следует использовать, чтобы направить запрос на компьютер.

Снимок экрана: окно выбора с вариантом изоляции.

Примечание

При последующих запусках вам следует всего лишь нажимать значок отладки. Нет необходимости выполнять настройку и заполнять запросы на имя службы, порт, задачу запуска или выбор между изолированной или неизолированной работой. Эти значения сохраняются в .vscode/tasks.json. Чтобы изменить эти настройки позже, откройте палитру команд (CTRL+SHIFT+P или Cmd+Shift+P на Mac) и выполните команду Bridge to Kubernetes: Настройка.

Профиль отладки Bridge to Kubernetes настроен успешно.

Чтобы запустить отладку, нажмите значок "Отладка" слева и выберите команду Запустить сценарий: dev с Kubernetes. Нажмите кнопку "Пуск" рядом с пунктом Запуск сценария: dev с Kubernetes.

Снимок экрана: окно для выбора профиля запуска отладки.

Примечание

Вам будет предложено предоставить EndpointManager повышенные привилегии для изменения файла hosts.

Ваш компьютер разработки подключен, когда строка состояния VS Code становится оранжевой, а расширение Kubernetes показывает, что вы подключены. Как только ваш компьютер разработки подключен, трафик начинает перенаправляться на ваш компьютер разработки для stats-api, который вы заменяете.

Снимок экрана: окно выбора отладки с использованием Bridge to Kubernetes.

Перейдите к точке входа в веб-интерфейс вашего todo-app. Используйте внешний IP-адрес, полученный ранее: (внешний IP-адрес, полученный с помощью команды get services).nip.io. Обратите внимание, что при выборе режима изоляции необходимо использовать такой формат: (префикс — его можно найти в файле task.json).(внешний IP-адрес, полученный с помощью команды get services).nip.io.

Выполните запрос к stats-api, выбрав ссылку stats.

Снимок экрана: запущенный веб-сайт со ссылкой stats, которую необходимо выбрать.

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

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

Очистка

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

Вы можете оставить кластер AKS для отладки в будущем или можете удалить его с помощью команды ниже.

az aks delete --name MyAKS --resource-group MyResourceGroup

Дальнейшие действия

Дополнительные сведения о Bridge to Kubernetes см. в разделе Как работает Bridge to Kubernetes.