Использование Bridge to Kubernetes с AKS
В этом руководстве вы воспользуетесь конкретным пример веб-приложения микрослужб AKS, чтобы узнать, как использовать Bridge to Kubernetes для локальной отладки в рамках одного модуля, который является частью кластера службы Azure Kubernetes (AKS).
Перед началом
Для демонстрации подключения компьютера разработки к кластеру Kubernetes, работающему в Службе Azure Kubernetes, в этом руководстве используется пример приложения Todo. Если у вас уже есть собственное приложение, работающее в кластере Kubernetes, см. раздел Разработка с Kubernetes. Если вы используете другой кластер, например MiniKube, работающий локально, см. раздел Использование Bridge to Kubernetes с примером.
Предварительные требования
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись.
- Установленный Azure CLI.
- Visual Studio Code, работающий в macOS, Windows 10 или Linux.
- Расширение Bridge to Kubernetes, установленное в Visual Studio Code.
Создание кластера 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 и выполните команду Использовать пространство имен.
Откройте палитру команд (нажатием клавиш CTRL+SHIFT+P или CMD+SHIFT+P на компьютере Mac) и введите Bridge to Kubernetes. Выберите параметр Bridge to Kubernetes: Настройка.
Вам будет предложено настроить службу, которую вы хотите заменить, порт для пересылки с вашего компьютера разработки, а также задачу запуска, которую необходимо использовать.
Выберите службу stats-api
.
Важно!
Перенаправление можно выполнять только для служб с одним модулем 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, который вы заменяете.
Перейдите к точке входа в веб-интерфейс вашего todo-app. Используйте внешний IP-адрес, полученный ранее: (внешний IP-адрес, полученный с помощью команды get services).nip.io. Обратите внимание, что при выборе режима изоляции необходимо использовать такой формат: (префикс — его можно найти в файле task.json).(внешний IP-адрес, полученный с помощью команды get services).nip.io.
Выполните запрос к stats-api, выбрав ссылку stats.
Обратите внимание, что трафик, изначально начатый в вашем кластере, был перенаправлен на вашу локально работающую версию (за пределами кластера), где была запущена точка останова.
Нажмите кнопку воспроизведения и позвольте запросу продолжить процедуру прозрачного выполнения.
Очистка
При остановке отладчика отменяются все изменения в кластере. Обратите внимание, что, если вы работали с изоляцией, pod диспетчера маршрутизации останется, чтобы в следующие разы отладчик можно было запустить быстрее.
Вы можете оставить кластер AKS для отладки в будущем или можете удалить его с помощью команды ниже.
az aks delete --name MyAKS --resource-group MyResourceGroup
Дальнейшие действия
Дополнительные сведения о Bridge to Kubernetes см. в разделе Как работает Bridge to Kubernetes.