Учебник. Использование Bridge to Kubernetes для подключения кластеров к компьютерам разработки

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

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

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

Предварительные требования

О данных

Этот учебник использует Bridge to Kubernetes для разработки версии микрослужбы простого приложения TODO в любом кластере Kubernetes. Этот образец приложения TODO App с использованием Visual Studio был адаптирован из кода, предоставленного TodoMVC.

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

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

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

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

Проверка кластера

Откройте командную строку и убедитесь, что средство kubectl установлено в пути, кластер, который вы хотите использовать, доступен и готов, и задайте контекст для этого кластера.

kubectl cluster-info
kubectl config use-context {context-name}

где {context-name} — это имя контекста для кластера, который вы хотите использовать для примера todo-app.

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

Клонируйте репозиторий mindaro и откройте командное окно с текущей рабочей папкой в samples/todo-app.

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

kubectl create namespace todo-app

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

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

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

Если вы выполняете тестирование с помощью MiniKube, для разрешения внешнего IP-адреса вам нужно будет использовать minikube tunnel. Если вы используете AKS или другой облачный поставщик Kubernetes, внешний IP-адрес назначается автоматически. Используйте приведенную ниже команду, чтобы отследить службу frontend и дождаться, пока она запустится.

kubectl get service -n todo-app frontend --watch

NAME       TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE
frontend   LoadBalancer   10.0.245.78   20.73.226.228   80:31910/TCP   6m26s

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

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

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

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

Откройте samples\todo-app\database-api\database-api.csproj в Visual Studio. В проекте в раскрывающемся списке параметров запуска выберите Bridge to Kubernetes, как показано ниже.

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

Нажмите кнопку запуска рядом с пунктом Bridge to Kubernetes. В диалоговом окне Создание профиля для Bridge to Kubernetes выполните указанные ниже действия.

  • Выберите имя кластера.
  • Выберите todo-app для вашего пространства имен.
  • Выберите database-api для службы, которую необходимо перенаправить.
  • Выберите тот же URL-адрес, который вы использовали ранее для запуска браузера, http://{external-ip}:{local-port}.

Выбор кластера Bridge to Kubernetes

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

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

Примечание

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

Когда в строке состояния указывается, что установлено подключение к службе database-api, это означает, что компьютер разработки подключен.

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

Примечание

В дальнейшем при запуске диалоговое окно Создание профиля для Bridge to Kubernetes выводиться не будет. Параметры можно изменить в области Отладка в свойствах проекта.

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

Примечание

Чтобы изменить профиль отладки позже, например, если вам потребуется протестировать его с другой службой Kubernetes, выберите Отладка > Debug Properties (Свойства отладки) и нажмите кнопку Изменить.

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

Откройте MongoHelper.cs и щелкните где-нибудь в строке 68 метода CreateTask, чтобы поместить туда курсор. Задайте точку останова, нажав клавишу F9 или выбрав пункт меню Отладка > Переключить точку останова.

Перейдите к примеру приложения, открыв общедоступный URL-адрес (внешний IP-адрес службы интерфейса). Чтобы возобновить работу службы, нажмите клавишу F5 или выберите пункт меню Отладка > Продолжить.

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

Примечание

По умолчанию при остановке задачи отладки компьютер разработки отключается от кластера Kubernetes. Это поведение можно изменить, изменив значение параметра Отключиться после отладки на false в разделе Средства отладки Kubernetes диалогового окна Инструменты > Параметры. После изменения этого параметра компьютер разработки будет оставаться подключенным при остановке и запуске отладки. Чтобы отключить компьютер разработки от кластера, нажмите кнопку Отключиться на панели инструментов.

Снимок экрана: параметры отладки Kubernetes

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

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

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

Журналы диагностики находятся в подкаталоге Bridge to Kubernetes в каталоге TEMP на компьютере разработки.

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

Узнайте, как работает Bridge to Kubernetes.