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

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

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

В этом руководстве для демонстрации подключения вашего компьютера разработки к кластеру Kubernetes, работающему в AKS, используется Пример приложения Bike Sharing. Если у вас уже есть собственное приложение, работающее в кластере 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

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

Установите пример приложения в кластере с помощью предоставленного скрипта. Вы можете запустить этот сценарий на своем компьютере разработки или с помощью Azure Cloud Shell. Используйте имя вашего кластера и группы ресурсов.

Важно!

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

git clone https://github.com/Microsoft/mindaro
cd mindaro/
chmod +x ./bridge-quickstart.sh
./bridge-quickstart.sh -g MyResourceGroup -n MyAKS

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

$ ./bridge-quickstart.sh -g MyResourceGroup -n MyAKS
Checking directory /home/<user>/mindaro for GIT repo Microsoft/Mindaro
Setting the Kube context
...
To try out the app, open the url:
bikeapp.bikesharingweb.EXTERNAL_IP.nip.io

В приведенном выше примере используется общедоступный URL-адрес bikeapp.bikesharingweb.EXTERNAL_IP.nip.io.

Подключение к кластеру и отладка службы

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

az aks get-credentials --resource-group MyResourceGroup --name MyAKS

Откройте mindaro/samples/BikeSharingApp/Bikes из Примера приложения Bike Sharing в Visual Studio Code. Откройте расширение службы Azure Kubernetes и выберите пространство имен bikeapp в кластере MyAKS. Щелкните правой кнопкой мыши узел bikeapp и выберите Использовать пространство имен.

Выбор пространства имен

Откройте окно терминала (Терминал > Новый терминал) и в окне терминала в папке Велосипеды используйте команду npm install, чтобы установить зависимости для приложения.

npm install

Откройте палитру команд (CTRL+SHIFT+P или Cmd+Shift+P на Mac) и запустите команду Bridge to Kubernetes: Настройка, чтобы начать процесс настройки.

Выберите службу bikes.

Выбор службы

Весь трафик в кластере Kubernetes перенаправляется для службы bikes в версию вашего приложения, работающую на вашем компьютере разработки. Функция Bridge to Kubernetes также направляет весь исходящий трафик из приложения обратно в кластер Kubernetes.

Важно!

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

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

Подключение выбор порта

Выберите Запуск через NPM в качестве задачи запуска.

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

Примечание

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

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

Запрос изоляции

Щелкните значок Отладка слева и выберите Запуск через NPM с Kubernetes вверху.

Выбор параметра Bridge to Kubernetes

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

Компьютер разработки подключен

Примечание

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

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

Установка точки останова

Откройте server.js и поместите курсор в строку 233. Установите точку останова, нажав F9 или выбрав Выполнить, а затем — Переключить точку останова.

Перейдите к примеру приложения по его общедоступному URL-адресу. Выберите пользователя Aurelia Briggs (customer) , а затем выберите велосипед, который нужно сдать в прокат. Обратите внимание, что изображение велосипеда не загружается. Вернитесь в Visual Studio Code и обратите внимание, что строка 233 выделена. Установленная вами точка останова приостановила службу на строке 233. Чтобы возобновить работу службы, нажмите F5 или выберите Выполнить, затем Продолжить. Вернитесь в браузер и убедитесь, что вы видите изображение-заполнитель для велосипеда.

Удалите точку останова, поместив курсор в строку 233 в server.js и нажав F9.

Обновление приложения

Измените server.js, чтобы удалить строки 234 и 235:

    // Hard code image url *FIX ME*
    theBike.imageUrl = "/static/logo.svg";

Теперь раздел должен выглядеть следующим образом:

    var theBike = result;
    theBike.id = theBike._id;
    delete theBike._id;

Сохраните изменения и нажмите Ctrl+Shift+F5 (⇧⌘F5 на Mac) или выберите Запустить, затем Перезапустить отладку. После повторного подключения обновите страницу в браузере и убедитесь, что вы больше не видите изображение-заполнитель для велосипеда.

Выберите Выполнить, затем Остановить отладку или нажмите SHIFT+F5, чтобы остановить работу отладчика.

Примечание

По умолчанию при остановке задачи отладки компьютер разработки отключается от кластера Kubernetes. Вы можете изменить этот алгоритм действий, выполнив поиск по запросу Bridge to Kubernetes: отключение после отладки в настройках Visual Studio Code и сняв флажок рядом с Автоматическое отключение при завершении отладки . После изменения этого параметра компьютер разработки будет оставаться подключенным при остановке и запуске отладки. Чтобы отключить компьютер разработки от кластера, нажмите на расширение Bridge to Kubernetes в строке состояния и выберите Отключить текущий сеанс.

Дополнительная настройка

Bridge to Kubernetes может обрабатывать трафик маршрутизации и выполнять репликацию переменных среды без дополнительной настройки. Если вам необходимо локально реплицировать службы из других пространств имен или загрузить какие-либо файлы, подключенные к контейнеру в вашем кластере Kubernetes, например файл ConfigMap, вы можете создать KubernetesLocalProcessConfig.yaml для скачивания этих файлов на свой компьютер разработки. Дополнительные сведения см. в разделе Настройка Bridge to Kubernetes.

Использование ведения журналов и диагностики

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

Выходные данные журнала

Нажмите строку состояния Kubernetes и выберите Отобразить сведения о диагностике подключения. Эта команда печатает текущие переменные среды и записи DNS в выходных данных журнала.

Вывод с диагностикой

Кроме того, вы можете найти журналы диагностики в каталоге Bridge to Kubernetes в каталоге TEMP вашего компьютера разработки. В Windows 10 это %TEMP%\Bridge to Kubernetes. На компьютере Mac каталог TEMP можно найти, выполнив echo $TMPDIR в окне терминала. В Linux это /tmp/Bridge to Kubernetes.

Работа в изолированном режиме

С помощью Bridge to Kubernetes вы также можете настроить изолированную версию служб, над которыми вы работаете, а это означает, что ваши изменения не повлияют на других пользователей кластера. Режим изоляции реализуется путем маршрутизации ваших запросов к вашей копии каждой затронутой службы. При этом остальной трафик маршрутизируется в обычном режиме. Дополнительные сведения об этом см. в статье Как работает Bridge to Kubernetes.

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

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

./bridge-quickstart.sh -c -g MyResourceGroup -n MyAKS

Устранение неполадок

При возникновении этой ошибки в процессе активации расширения Bridge to Kubernetes:

"Не удалось обновить зависимости: превышено максимальное количество попыток"

Сперва повторите попытку активации с помощью кнопки. Если это не удается, см. https://github.com/microsoft/mindaro/issues/32.

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

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