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

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

Подготовка к работе

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

Необходимые компоненты

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

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

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/Azure/Bridge-To-Kubernetes
cd Bridge-To-Kubernetes/samples/todo-app
npm install stats-api\

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

На компьютере разработки скачайте и настройте интерфейс командной строки Kubernetes для подключения к кластеру 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-адрес: {your external IP from above command goes here}.nip.io

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

В том же терминале, который вы использовали ранее, введите следующую команду, чтобы открыть 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.

Перейдите к точке входа внешнего интерфейса приложения через внешний IP-адрес, {your external IP from get services command}.nip.ioкоторый вы нашли ранее. Обратите внимание, что при выборе режима изоляции необходимо использовать {your prefix - can be found in task.json}.{your external IP from get services command}.nip.io.

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

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

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

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

Очистка

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

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

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

Следующие шаги

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