Управляемые входящий трафик 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.
Ограничения
- Надстройка маршрутизации приложений поддерживает до пяти зон Azure DNS.
- Надстройка маршрутизации приложений может быть включена только в кластерах AKS с управляемым удостоверением.
- Все глобальные зоны 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 \
--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 для создания соответствующих ресурсов.
Создайте пространство имен приложения, вызываемое
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
Проверка создания управляемого входящего трафика
Вы можете проверить, создан ли управляемый входящий трафик с помощью 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
Следующие шаги
Настройка настраиваемых конфигураций входящего трафика показывает, как создать расширенную конфигурацию входящего трафика и настроить личный домен с помощью Azure DNS для управления зонами DNS и настройки безопасного входящего трафика.
Сведения о интеграции с внутренней подсистемой балансировки нагрузки Azure и настройке частной зоны Azure DNS для разрешения частных конечных точек для разрешения определенных доменов см. в статье Настройка внутреннего контроллера входящего трафика NGINX для частной зоны DNS Azure.
Узнайте о мониторинге метрик контроллера ingress-nginx, включенных в надстройку маршрутизации приложений с помощью Prometheus в Grafana (предварительная версия) в рамках анализа производительности и использования приложения.
Azure Kubernetes Service