Управляемые входящий трафик 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.
  • aks-preview Расширение Azure CLI версии 0.5.171 или более поздней версии

Ограничения

  • Надстройка маршрутизации приложений поддерживает до пяти зон Azure DNS.
  • Все глобальные зоны 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 -g <ResourceGroupName> -n <ClusterName> -l <Location> --enable-app-routing

Включение в существующем кластере

Чтобы включить маршрутизацию приложений в существующем кластере az aks approuting enable , используйте команду.

az aks approuting enable -g <ResourceGroupName> -n <ClusterName>

Подключение к кластеру AKS

Для подключения к кластеру Kubernetes с локального компьютера используйте средство kubectl (клиент командной строки Kubernetes). Ее можно установить локально с помощью az aks install-cli команды. Если вы используете Azure Cloud Shell, kubectl уже установлен.

Настройте в kubectl подключение к кластеру Kubernetes, выполнив команду az aks get-credentials.

az aks get-credentials -g <ResourceGroupName> -n <ClusterName>

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

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

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

    kubectl create namespace hello-web-app-routing
    
  2. Создайте развертывание, скопируйте следующий манифест YAML в новый файл с именем deployment.yaml и сохраните файл на локальном компьютере.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aks-helloworld  
      namespace: hello-web-app-routing
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aks-helloworld
      template:
        metadata:
          labels:
            app: aks-helloworld
        spec:
          containers:
          - name: aks-helloworld
            image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
            ports:
            - containerPort: 80
            env:
            - name: TITLE
              value: "Welcome to Azure Kubernetes Service (AKS)"
    
  3. Создайте службу, скопируйте следующий манифест YAML в новый файл с именем service.yaml и сохраните файл на локальном компьютере.

    apiVersion: v1
    kind: Service
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      type: ClusterIP
      ports:
      - port: 80
      selector:
        app: aks-helloworld
    

Создание объекта Ingress

Надстройка маршрутизации приложений создает класс входящего трафика в кластере с именем webapprouting.kubernetes.azure.com. При создании объекта Ingress с этим классом он активирует надстройку.

  1. Скопируйте следующий манифест YAML в новый файл с именем ingress.yaml и сохраните его на локальном компьютере.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - host: <Hostname>
        http:
          paths:
          - backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Создайте ресурсы кластера с помощью kubectl apply команды.

    kubectl apply -f deployment.yaml -n hello-web-app-routing
    

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

    deployment.apps/aks-helloworld created
    
    kubectl apply -f service.yaml -n hello-web-app-routing
    

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

    service/aks-helloworld created
    
    kubectl apply -f ingress.yaml -n hello-web-app-routing
    

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

    ingress.networking.k8s.io/aks-helloworld created
    

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

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

kubectl get ingress -n hello-web-app-routing

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

NAME             CLASS                                HOSTS               ADDRESS       PORTS     AGE
aks-helloworld   webapprouting.kubernetes.azure.com   myapp.contoso.com   20.51.92.19   80, 443   4m

Удаление надстройки маршрутизации приложений

Чтобы удалить связанное пространство имен, используйте kubectl delete namespace команду.

kubectl delete namespace hello-web-app-routing

Чтобы удалить надстройку маршрутизации приложений из кластера, используйте az aks approuting disable команду.

az aks approuting disable --name myAKSCluster --resource-group myResourceGroup 

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

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