Использование функции Bridge to Kubernetes с примером
Примечание.
Корпорация Майкрософт планирует больше не поддерживать проект Bridge to Kubernetes. В течение следующих нескольких месяцев мы передаем проект в архивное состояние. В то же время проект по-прежнему доступен для использования и скачивания. В течение этого периода мы надеемся изучить и рекомендовать проекты сообщества, которые обеспечивают аналогичные преимущества Bridge to Kubernetes для вашего будущего использования. Если у вас есть вопросы, обратитесь к нам на борту вопросов на сайте GitHub.
В этом примере показано, как можно использовать 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: Настройка.
Вам будет предложено настроить службу, которую вы хотите заменить, порт для пересылки с компьютера разработки и задачу запуска для использования.
Выберите службу stats-api
.
После выбора службы вам будет предложено ввести TCP-порт для локального приложения. В этом примере введите 3001.
Выберите Run Script: dev в качестве задачи запуска.
У вас есть возможность работать изолированно или неизолированно. Если вы работаете изолированно, в ваш локальный процесс направляются только ваши запросы; другие разработчики могут использовать кластер без каких-либо последствий. Если вы не работаете изолированно, весь трафик перенаправляется в ваш локальный процесс. Дополнительные сведения об этом параметре см. в разделе Использование возможностей маршрутизации для изолированной разработки. В этом примере давайте будем использовать неизолированные.
Примечание.
VS Code предлагает разрешить EndpointManager запускать повышенные привилегии и изменять файл узлов.
Профиль отладки Bridge to Kubernetes настроен успешно.
Щелкните значок "Отладка" слева и выберите Запуск сценария: dev с Kubernetes. Нажмите кнопку "Пуск" рядом с пунктом Запуск сценария: dev с Kubernetes.
Компьютер разработки подключен, когда строка состояния VS Code становится оранжевым, а расширение Kubernetes показывает, что вы подключены. После подключения компьютера разработки трафик начинает перенаправление на компьютер разработки для stats-api, который вы заменяете.
Перейдите к точке входа в веб-интерфейс вашего 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