Spravovaný NGINX Ingress s doplňkem pro směrování aplikací

Upozornění

Kubernetes SIG Network a Výbor pro reakci na zabezpečení oznámily ukončeníprojektu Ingress NGINX, jehož údržba skončila v březnu 2026. Microsoft poskytne oficiální podporu pro zásadní opravy zabezpečení pro prostředky NGINX Ingress směrování aplikací včetně listopadu 2026.

AKS je v souladu s upstream Kubernetes a používá Gateway API jako dlouhodobý standard pro správu ingress a provozu na úrovni L7. Migrujte před ukončením podpory v listopadu 2026 na základě vašich požadavků:

Jedním ze způsobů, jak směrovat provoz protokolu HTTP a zabezpečeného protokolu (HTTPS) do aplikací spuštěných v clusteru Azure Kubernetes Service (AKS), je použití objektu Kubernetes Ingress. Když povolíte doplněk směrování aplikací s využitím NGINX, vytvoří, nakonfiguruje a spravuje kontroler Ingress v clusteru AKS.

V tomto článku se dozvíte, jak povolit spravovaný kontroler příchozího přenosu dat NGINX a nakonfigurovat objekt příchozího přenosu dat pro směrování provozu do aplikace v clusteru AKS.

Doplněk směrování aplikací s funkcemi NGINX

Doplněk směrování aplikací s NGINX poskytuje následující:

  • Snadná konfigurace spravovaných NGINX Ingress kontrolerů založených na Kubernetes NGINX Ingress kontroleru.
  • Integrace s Azure DNS pro správu veřejných a privátních zón
  • Ukončení protokolu SSL s certifikáty uloženými ve službě Azure Key Vault

Další konfigurace najdete tady:

Důležité

Od 30. září 2027 už Azure Kubernetes Service (AKS) nepodporuje doplněk Open Service Mesh (OSM). Nadřazený projekt Open Service Mesh byl vyřazen.

Pokud váš cluster používá doplněk OSM, proveďte migraci na doplněk Istio před datem ukončení podpory. Toto oznámení o ukončení podpory se vztahuje pouze na spravovaný doplněk OSM a netýká se instalací service meshe s otevřeným zdrojovým kódem ani samostatně spravovaných instalací. Postup migrace najdete v pokynech k migraci z doplňku OSM na doplněk Istio. Pokud chcete mít přehled o oznámeních a aktualizacích AKS, postupujte podle poznámek k verzi AKS.

Požadavky

  • Předplatné Azure. Pokud ještě nemáte předplatné Azure, můžete si vytvořit bezplatný účet.
  • Azure CLI verze 2.54.0 nebo novější je nainstalovaná a nakonfigurovaná. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Omezení

  • Doplněk pro směrování aplikací podporuje až pět zón Azure DNS.

  • Doplněk pro směrování aplikací je možné povolit jenom v clusterech AKS se spravovanou identitou.

  • Všechny globální zóny Azure DNS integrované s doplňkem musí být ve stejné skupině prostředků.

  • Veškeré privátní DNS zóny Azure integrované s doplňkem musí být ve stejné skupině prostředků.

  • Úpravy ingress-nginx ConfigMap ve app-routing-system jmenném prostoru se nepodporují.

  • Pokud hodnota anotace úryvku odpovídá některé z následujících blokovaných hodnot, Ingress není nakonfigurován:

    Blokovaná hodnota Účinek
    load_module Ingress není nakonfigurován.
    lua_package Ingress není nakonfigurován.
    _by_lua Ingress není nakonfigurován.
    location Ingress není nakonfigurován.
    root Ingress není nakonfigurován.
    proxy_pass Ingress není nakonfigurován.
    serviceaccount Ingress není nakonfigurován.
    { Ingress není nakonfigurován.
    } Ingress není nakonfigurován.
    ' Ingress není nakonfigurován.
  • Doplněk oficiálně nepodporuje injektování kontejnerů sidecar, které nespravuje Microsoft (například vlastních agentů pro telemetrii, protokolování nebo zabezpečení), do podů proxy ingress-nginx, které spravuje. Pokud se rozhodnete vložit vlastní sidecar do spravovaného proxy podu, Microsoft v případě jakýchkoli problémů, na které narazíte, poskytuje pouze omezenou podporu.

Clustery pro více tenantů

Důležité

Spravovaný řadič Ingressu NGINX neizoluje tenanty na úrovni prostoru názvů. Nepoužívejte ho jako hranici zabezpečení mezi tenanty, kteří sdílejí cluster.

Spravovaný kontroler NGINX Ingress je založený na upstreamovém projektu ingress-nginx. Projekt ingress-nginx předpokládá, že uživatelé, kteří mohou vytvářet objekty Ingress, jsou správci clusteru. Projekt říká, že se nemá používat ingress-nginx v produkčních clusterech s více tenanty. Další informace najdete v tématu Kubernetes s více tenanty v nejčastějších dotazech k ingress-nginx.

Následující chování překračuje hranice oboru názvů:

  • Jeden kontroler NGINX Ingress obsluhuje objekty Ingress své třídy Ingress ze všech jmenných prostorů. Kontroler slučuje pravidla těchto objektů Ingress do jedné konfigurace NGINX. Další informace najdete v tématu Jak to funguje.
  • Ingress v jednom jmenném prostoru může přidávat cesty k hostiteli, který používá Ingress v jiném jmenném prostoru. Pokud dva objekty Ingress používají stejný host, nejstarší objekt Ingress řídí nastavení protokolu TLS a anotace na úrovni serveru pro daný host. Pokud také používají stejnou cestu, na nejstarší objekt Ingress bude směrován provoz pro tuto cestu.
  • Doplněk umožňuje anotace úryvků kódu s výjimkou blokovaných hodnot v omezeních. Anotace snippetů přidávají konfiguraci NGINX do sdíleného controlleru.
  • NGINX Ingress controller může číst Secrety ve všech jmenných prostorech. Doplněk povoluje možnost allow-cross-namespace-resources. Pomocí této možnosti můžou některé anotace odkazovat na Secret nebo objekt ConfigMap v jiném jmenném prostoru.
  • Uživatel, který může vytvořit Ingress, může použít libovolnou Ingress class. Samostatný NginxIngressController pro každého klienta neizoluje klienty.

Pro snížení tohoto rizika použijte tyto postupy:

  • Udělte oprávnění vytvářet nebo aktualizovat objekty Ingress pouze uživatelům, kterým důvěřujete na stejné úrovni jako správcům clusteru.
  • Pokud si tenanti navzájem nedůvěřují, použijte pro každého tenanta samostatný cluster. Další informace naleznete v tématu Fyzicky izolované klastry.

Povolení doplňku pro směrování aplikací pomocí Azure CLI

Povolení v novém clusteru

Pokud chcete povolit směrování aplikací v novém clusteru, použijte az aks create příkaz a --enable-app-routing zadejte příznak.

az aks create \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --enable-app-routing \
    --generate-ssh-keys

Povolte na existujícím clusteru

Pokud chcete povolit směrování aplikací v existujícím clusteru, použijte az aks approuting enable příkaz.

az aks approuting enable --resource-group <resource-group-name> --name <cluster-name>

Připojení ke clusteru AKS

Pokud se chcete připojit ke clusteru Kubernetes z místního počítače, použijte kubectlklienta příkazového řádku Kubernetes. Můžete ho nainstalovat místně pomocí příkazu az aks install-cli. Pokud používáte Azure Cloud Shell, kubectl je už nainstalovaný.

Nakonfigurujte kubectl pro připojení ke svému Kubernetes clusteru pomocí příkazu az aks get-credentials.

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

Nasazení aplikace

Objekty Kubernetes Ingress definují pravidla směrování pro Ingress controller. Pomocí spravované třídy Ingress doplňku pro směrování aplikací a podporovaných anotací můžete nakonfigurovat, jak jeho kontroler zpracovává provoz.

  1. Vytvořte obor názvů aplikace s názvem aks-store pro spuštění ukázkových podů pomocí příkazu kubectl create namespace.

    kubectl create namespace aks-store
    
  2. Nasaďte aplikaci úložiště AKS pomocí následujícího souboru manifestu 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
    

Tento manifest vytvoří rabbitmq, order-service, product-service a store-front Deploymenty a odpovídající Služby. store-front Služba zpřístupňuje port 80, na který Ingress směruje v další části.

Vytvořte objekt Ingress

Když povolíte doplněk pro směrování aplikací, vytvoří se třída Ingress s názvem webapprouting.kubernetes.azure.com. Zadejte tuto třídu v objektu Ingress, chcete-li použít kontroler NGINX Ingress spravovaný doplňkem.

  1. Zkopírujte následující manifest YAML do nového souboru s názvem ingress.yaml a uložte ho do místního počítače.

    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. Pomocí příkazu vytvořte prostředek příchozího kubectl apply přenosu dat.

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

    Následující příklad výstupu ukazuje vytvořený prostředek:

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

Ověřte spravovaný prostředek Ingress

Spravovaný Ingress můžete ověřit pomocí příkazu kubectl get ingress.

kubectl get ingress -n aks-store

Následující příklad výstupu ukazuje vytvořený spravovaný Ingress:

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

Že AKS Store funguje, můžete ověřit tak, že v prohlížeči přejdete na veřejnou IP adresu Ingress controlleru. Následující příkaz načte externí IP adresu přiřazenou load balancerem službě nginx spravovaného kontroleru příchozí komunikace NGINX v oboru názvů app-routing-system:

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

Odstraňte doplněk pro směrování aplikací

Chcete-li odebrat přidružený obor názvů, použijte kubectl delete namespace příkaz.

kubectl delete namespace aks-store

Pokud chcete z clusteru odebrat doplněk pro směrování aplikací, použijte az aks approuting disable příkaz.

az aks approuting disable --name <cluster-name> --resource-group <resource-group-name>

Poznámka:

Aby při zakázání doplňku pro směrování aplikací nedošlo k možnému narušení provozu do clusteru, některé prostředky Kubernetes, včetně configMaps, secrets a deployment, který spouští řadič, zůstávají v clusteru. Tyto prostředky jsou v app-routing-system oboru názvů. Tyto prostředky můžete odebrat, pokud už je nepotřebujete, odstraněním oboru názvů pomocí kubectl delete ns app-routing-system.