Использование функции Bridge to Kubernetes с примером

В этом примере показано, как можно использовать Bridge to Kubernetes для разработки версии микрослужбы простого приложения TODO в любом кластере Kubernetes. Этот пример с использованием Visual Studio Code был адаптирован из кода, предоставленного TodoMVC. В рамках этого примера мы используем MiniKube для размещения приложения, однако эти шаги должны работать с любым кластером Kubernetes.

Пример приложения TODO состоит из внешнего интерфейса и серверной части, обеспечивающей постоянное хранилище. В этом расширенном примере добавлен компонент статистики и приложение разбито на несколько микрослужб, а именно:

  • внешний интерфейс вызывает database-api для сохранения и обновления элементов TODO;
  • служба database-api использует базу данных Mongo для сохранения элементов TODO;
  • внешний интерфейс записывает события добавления, завершения и удаления в очередь RabbitMQ;
  • рабочая роль статистики получает события из очереди RabbitMQ и обновляет кэш Redis;
  • API-интерфейс статистики предоставляет кэшированную статистику для отображения во внешнем интерфейсе.

В целом это расширенное приложение TODO состоит из шести взаимосвязанных компонентов.

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

  • Любой кластер Kubernetes или менеджер пакетов Chocolatey для установки MiniKube
  • В Windows 10 это Hyper-V
  • Установленный Kubectl, который находится по пути в среде командной строки по вашему выбору
  • Bridge to Kubernetes расширение Visual Studio Code

Установка MiniKube

Вы можете использовать любого поставщика Kubernetes с Bridge to Kubernetes. В этой статье мы используем MiniKube. MiniKube — это упрощенный поставщик Kubernetes, который позволяет размещать Kubernetes на вашем локальном компьютере. Следуйте инструкциям по установке, чтобы установить MiniKube в Windows 10, Linux или macOS.

Для получения наилучших результатов в Windows 10 следует использовать диспетчер виртуальных машин Hyper-V и создать виртуальный коммутатор.

После установки запустите MiniKube, укажите использование Hyper-V и укажите имя основного виртуального коммутатора. Эту команду необходимо запускать из командной строки с правами администратора.

minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"

Развертывание приложения

Клонируйте репозиторий Bridge to Kubernetes и откройте командное окно с текущей рабочей папкой для todo-app.

Создайте пространство имен для примера.

kubectl create namespace todo-app

Затем примените манифест развертывания:

kubectl apply -n todo-app -f deployment.yaml

Это простое развертывание, которое предоставляет внешний интерфейс с помощью службы типа LoadBalancer. Подождите, пока все модули pod будут запущены и внешний IP-адрес службы frontend станет доступным.

При тестировании с помощью MiniKube необходимо использовать minikube tunnel для разрешения внешнего IP-адреса.

kubectl get services -n todo-app

NAME          TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
frontend      LoadBalancer   10.0.49.177    127.0.0.1   80:30145/TCP   18h

Перейдите к приложению, используя внешний IP-адрес и локальный порт (первое число в столбце PORT(S)).

http://{external-ip}:{local-port}

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

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

Теперь вы можете использовать расширение Bridge to Kubernetes, чтобы продемонстрировать, как трафик из кластера Kubernetes может быть перенаправлен на локально работающую версию stats-api.

cd stats-api/

Откройте исходный код stats-api в VS Code.

code .

После запуска VS Code откройте панель Kubernetes на левой боковой панели VS Code, после чего выберите пространство имен todo-app в своем кластере MiniKube. Щелкните правой кнопкой мыши узел todo-app и выберите Использовать пространство имен.

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

Установите зависимости, запустив npm install в окне терминала (CTRL+~).

npm install

Затем установите точку останова в строке 17 server.js.

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

Bridge to Kubernetes: команда настройки

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

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

Выберите службу для подключения

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

Введите номер порта

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

Выберите задачу запуска отладчика

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

Выбор изоляции

Примечание.

VS Code предлагает разрешить EndpointManager запускать повышенные привилегии и изменять файл узлов.

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

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

Выберите профиль запуска отладки

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

Отладка при помощи Bridge to Kubernetes

Перейдите к точке входа в веб-интерфейс вашего todo-app. Для minikube мы будем использовать 127.0.0.1. Чтобы получить доступ к URL-адресу локальной конечной точки для вашего приложения, откройте меню Kubernetes в строке состояния и выберите запись конечной точки.

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

Работающий веб-сайт — выбор ссылки состояния

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

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

В этом примере показана лишь одна иллюстрация использования Bridge to Kubernetes в кластерах, отличных от AKS. Воспользуйтесь ей в следующий раз в своем собственном проекте!

Очистка

Чтобы очистить активы, созданные в этом примере, выполните:

kubectl delete namespace todo-app

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

Вы также можете развернуть свое приложение в службе Azure Kubernetes (AKS) с помощью Bridge to Kubernetes. См. Использование Bridge to Kubernetes с AKS