Управляемые входящий трафик NGINX с надстройкой маршрутизации приложений
Один из способов маршрутизации трафика Протокола гипертекста (HTTP) и безопасного трафика (HTTPS) в приложения, работающие в кластере Служба Azure Kubernetes (AKS), — использовать объект Входящего трафика Kubernetes. При создании объекта Ingress, использующего классы Ingress для маршрутизации приложений NGINX, надстройка создает, настраивает и управляет одним или несколькими контроллерами входящего трафика в кластере AKS.
В этой статье показано, как развернуть и настроить базовый контроллер входящего трафика в кластере AKS.
Надстройка маршрутизации приложений с функциями NGINX
Надстройка маршрутизации приложений с NGINX обеспечивает следующее:
- Простая настройка управляемых контроллеров Ingress NGINX на основе контроллера входящего трафика Kubernetes NGINX.
- Интеграция с 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. aks-preview
Расширение Azure CLI версии 0.5.171 или более поздней версии
Ограничения
- Надстройка маршрутизации приложений поддерживает до пяти зон Azure DNS.
- Все глобальные зоны Azure DNS, интегрированные с надстройкой, должны находиться в одной группе ресурсов.
- Все частные зоны Azure DNS, интегрированные с надстройкой, должны находиться в одной группе ресурсов.
- Изменение ingress-nginx
ConfigMap
вapp-routing-system
пространстве имен не поддерживается. - Следующие заметки фрагмента блокируются и препятствуют настройке входящего трафика:
load_module
,lua_package
,proxy_pass
serviceaccount
{
location
root
_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 для создания соответствующих ресурсов.
Создайте пространство имен приложения, вызываемое
hello-web-app-routing
для запуска примеров модулей pod с помощьюkubectl create namespace
команды.kubectl create namespace hello-web-app-routing
Создайте развертывание, скопируйте следующий манифест 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)"
Создайте службу, скопируйте следующий манифест 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 с этим классом он активирует надстройку.
Скопируйте следующий манифест 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
Создайте ресурсы кластера с помощью
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 могут оставаться в кластере. Эти ресурсы включают конфигурацию Карты и секреты и создаются в пространстве имен системы маршрутизации приложений. Эти ресурсы можно удалить, если вы хотите.
Следующие шаги
Настройка настраиваемых конфигураций входящего трафика показывает, как создать расширенную конфигурацию входящего трафика и настроить личный домен с помощью Azure DNS для управления зонами DNS и настройки безопасного входящего трафика.
Сведения о интеграции с внутренней подсистемой балансировки нагрузки Azure и настройке частной зоны Azure DNS для разрешения частных конечных точек для разрешения определенных доменов см. в статье Настройка внутреннего контроллера входящего трафика NGINX для частной зоны DNS Azure.
Узнайте о мониторинге метрик контроллера ingress-nginx, включенных в надстройку маршрутизации приложений с помощью Prometheus в Grafana (предварительная версия) в рамках анализа производительности и использования приложения.