Поделиться через


Управляемые входящий трафик NGINX с надстройкой маршрутизации приложений

Один из способов маршрутизации трафика Протокола гипертекста (HTTP) и безопасного трафика (HTTPS) в приложения, работающие в кластере Служба Azure Kubernetes (AKS), — использовать объект Входящего трафика Kubernetes. При создании объекта Ingress, использующего классы Ingress для маршрутизации приложений NGINX, надстройка создает, настраивает и управляет одним или несколькими контроллерами входящего трафика в кластере AKS.

В этой статье показано, как развернуть и настроить базовый контроллер входящего трафика в кластере AKS.

Надстройка маршрутизации приложений с функциями NGINX

Надстройка маршрутизации приложений с NGINX обеспечивает следующее:

  • Простая настройка управляемых контроллеров Ingress NGINX на основе контроллера входящего трафика Kubernetes NGINX.
  • Интеграция с Azure DNS для управления общедоступными и частными зонами
  • Завершение SSL с сертификатами, хранящимися в Azure Key Vault.

Сведения о других конфигурациях см. в статье:

При выходе из системы 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 пространстве имен не поддерживается.
  • Следующие заметки фрагмента блокируются и препятствуют настройке входящего трафика: load_module, lua_package, proxy_passserviceaccount{locationroot_by_lua, . }'

Включение маршрутизации приложений с помощью 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>

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

Надстройка маршрутизации приложений использует заметки в объектах входящего трафика Kubernetes для создания соответствующих ресурсов.

  1. Создайте пространство имен приложения, вызываемое aks-store для запуска примеров модулей pod с помощью kubectl create namespace команды.

    kubectl create namespace aks-store
    
  2. Разверните приложение хранилища 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 с этим классом он активирует надстройку.

  1. Скопируйте следующий манифест 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
    
  2. Создайте ресурс входящего трафика, используя команду kubectl apply.

    kubectl apply -f ingress.yaml -n aks-store
    

    В следующем примере выходных данных показан созданный ресурс:

    ingress.networking.k8s.io/store-front created
    

Проверка создания управляемого входящего трафика

Вы можете проверить, создан ли управляемый входящий трафик с помощью kubectl get ingress команды.

kubectl get ingress -n aks-store

В следующем примере выходных данных показан созданный управляемый входящий трафик:

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

Вы можете убедиться, что хранилище AKS работает, указывая браузер на общедоступный IP-адрес контроллера входящего трафика. Найдите 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

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