Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Один из способов маршрутизации трафика Протокола гипертекста (HTTP) и безопасного трафика (HTTPS) в приложения, работающие в кластере службы Azure Kubernetes (AKS), — использовать Kubernetes Ingress объект. При создании объекта Ingress, использующего дополнение для маршрутизации приложений классы Ingress NGINX, дополнение создает, настраивает и управляет одним или несколькими Ingress контроллерами в вашем кластере AKS.
В этой статье показано, как развернуть и настроить базовый контроллер входящего трафика в кластере AKS.
Надстройка маршрутизации приложений с функциями NGINX
Надстройка маршрутизации приложений с NGINX обеспечивает следующее:
- Простая настройка управляемых Ingress-контроллеров NGINX на основе контроллера Kubernetes NGINX Ingress.
- Интеграция с Azure DNS для управления общедоступными и частными зонами
- Завершение SSL с сертификатами, хранящимися в Azure Key Vault.
Сведения о других конфигурациях см. в статье:
- Конфигурация DNS и SSL
- Конфигурация надстройки маршрутизации приложений
- Настройте внутренний контроллер входящего трафика NGIX для частной зоны DNS Azure.
С выходом Open Service Mesh (OSM) из обращения Cloud Native Computing Foundation (CNCF), использование надстройки маршрутизации приложений с OSM не рекомендуется.
Предварительные условия
- Подписка Azure. Если у вас еще нет подписки Azure, вы можете создать бесплатную учетную запись.
- Azure CLI версии 2.54.0 или более поздней версии, установленной и настроенной. Чтобы узнать версию, выполните команду
az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Ограничения
- Надстройка маршрутизации приложений поддерживает до пяти зон Azure DNS.
- Надстройка маршрутизации приложений может быть включена только в кластерах AKS с управляемым удостоверением.
- Все глобальные зоны Azure DNS, интегрированные с надстройкой, должны находиться в одной группе ресурсов.
- Все частные зоны Azure DNS, интегрированные с надстройкой, должны находиться в одной группе ресурсов.
- Изменение ingress-nginx
ConfigMapвapp-routing-systemпространстве имен не поддерживается. - Следующие аннотации фрагментов блокируются и препятствуют настройке Ingress:
load_module,lua_package,_by_lua,location,root,proxy_pass,serviceaccount,{,},'.
Включение маршрутизации приложений с помощью Azure CLI
Включить на новом кластере
Чтобы включить маршрутизацию приложений в новом кластере az aks create , используйте команду, указав --enable-app-routing флаг.
az aks create \
--resource-group <ResourceGroupName> \
--name <ClusterName> \
--location <Location> \
--enable-app-routing \
--generate-ssh-keys
Включите на существующем кластере
Чтобы включить маршрутизацию приложений в существующем кластере az aks approuting enable , используйте команду.
az aks approuting enable --resource-group <ResourceGroupName> --name <ClusterName>
Подключение к кластеру AKS
Для подключения к кластеру Kubernetes с локального компьютера используйте средство kubectl (клиент командной строки Kubernetes). Ее можно установить локально с помощью az aks install-cli команды. Если вы используете Azure Cloud Shell, kubectl уже установлен.
Настройте kubectl, чтобы подключиться к вашему кластеру Kubernetes, используя команду az aks get-credentials.
az aks get-credentials --resource-group <ResourceGroupName> --name <ClusterName>
Развертывание приложения
Надстройка маршрутизации приложений использует аннотации на объектах Ingress в Kubernetes для создания соответствующих ресурсов.
Создайте пространство имен приложения под названием
aks-storeдля запуска примерных pod-ов с помощью командыkubectl create namespace.kubectl create namespace aks-storeРазверните приложение хранилища AKS с помощью следующего файла манифеста YAML:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
Этот манифест создаст необходимые развертывания и службы для приложения магазина AKS.
Создание объекта Ingress
Надстройка маршрутизации приложений создает класс входящего трафика в кластере с именем webapprouting.kubernetes.azure.com. При создании объекта Ingress с этим классом он активирует надстройку.
Скопируйте следующий манифест YAML в новый файл с именем ingress.yaml и сохраните его на локальном компьютере.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: store-front namespace: aks-store spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - http: paths: - backend: service: name: store-front port: number: 80 path: / pathType: PrefixСоздайте ресурс входящего трафика, используя команду
kubectl apply.kubectl apply -f ingress.yaml -n aks-storeВ следующем примере выходных данных показан созданный ресурс:
ingress.networking.k8s.io/store-front created
Убедитесь, что управляемый Ingress был создан
Вы можете проверить, был ли создан управляемый Ingress с помощью команды kubectl get ingress.
kubectl get ingress -n aks-store
В следующем примере выходных данных показан созданный управляемый ресурс Ingress:
NAME CLASS HOSTS ADDRESS PORTS AGE
store-front webapprouting.kubernetes.azure.com * 51.8.10.109 80 110s
Вы можете убедиться, что хранилище AKS работает, направив браузер на общедоступный IP-адрес Ingress-контроллера. Найдите IP-адрес с kubectl:
kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"
Удаление надстройки маршрутизации приложений
Чтобы удалить связанное пространство имен, используйте kubectl delete namespace команду.
kubectl delete namespace aks-store
Чтобы удалить надстройку маршрутизации приложений из кластера, используйте az aks approuting disable команду.
az aks approuting disable --name <ClusterName> --resource-group <ResourceGroupName>
Примечание.
Чтобы избежать потенциальных нарушений трафика в кластере при отключении надстройки маршрутизации приложений, некоторые ресурсы Kubernetes, включая configMaps, секреты и развертывание, которое запускает контроллер, останется в кластере. Эти ресурсы находятся в пространстве имен системы маршрутизации приложений. Эти ресурсы можно удалить, если они больше не нужны, удалив пространство имен при помощи kubectl delete ns app-routing-system.
Следующие шаги
Настройка настраиваемых конфигураций входящего трафика показывает, как создать расширенную конфигурацию входящего трафика и настроить личный домен с помощью Azure DNS для управления зонами DNS и настройки безопасного входящего трафика.
Сведения о интеграции с внутренней подсистемой балансировки нагрузки Azure и настройке частной зоны Azure DNS для разрешения частных конечных точек для разрешения определенных доменов см. в статье Настройка внутреннего контроллера входящего трафика NGINX для частной зоны DNS Azure.
Узнайте о мониторинге метрик контроллера ingress-nginx, включенных в надстройку маршрутизации приложений с помощью Prometheus в Grafana (предварительная версия) в рамках анализа производительности и использования приложения.