Konfigurace vstupu pomocí Kubernetes Gateway API s využitím doplňku pro směrování aplikací (náhled)

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

Upozornění

Kubernetes SIG Network a Výbor pro bezpečnostní reakce oznámily, že projekt Ingress NGINX bude vyřazen, přičemž údržba končí v březnu 2026. Pro clustery AKS, které používaní doplněk NGINX pro směrování aplikací, dnes není vyžadována žádná okamžitá akce. 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 se přizpůsobuje upstream Kubernetes přechodem na Gateway API jako dlouhodobý standard pro ingress a správu provozu L7. Doporučujeme začít plánovat cestu migrace na základě aktuálního nastavení:

Doplněk pro směrování aplikací podporuje rozhraní API brány Kubernetes pro správu příchozího přenosu dat. Rozhraní API brány Kubernetes je sada prostředků, které poskytují standardizovaný, na role orientovaný a rozšiřitelný rámec pro správu provozu, navržený jako následník a vývoj rozhraní Ingress API. Implementace rozhraní API služby Application Routing Gateway proto slouží jako nástupce spravovaného doplňku NGINX, který je založený na starším rozhraní Ingress API a po listopadu 2026 přestane být podporován Azure. Pokud používáte spravované rozhraní NGINX, musíte do listopadu 2026 migrovat na implementaci rozhraní API služby Application Routing Gateway nebo jinou podporovanou implementaci.

Implementace rozhraní Kubernetes Gateway API pro aplikační směrování nasadí řídicí rovinu Istio ke správě infrastruktury pro prostředky Kubernetes Gateway API. Ale liší se od doplňku Istio Service Mesh pro AKS následujícími způsoby:

funkce API brána pro směrování aplikací Doplněk Istio Service Mesh
Název třídy brány approuting-istio istio
Podpora injektáže sidecaru a Istio CRD Nepodporováno. Spravuje pouze infrastrukturu pro prostředky rozhraní API brány Kubernetes. Podporováno
Přepracování a aktualizace Není revidováno. Aktualizováno přímo pro menší a opravné aktualizace verze Revidováno. Upgrade prostřednictvím kanárských upgradů pro aktualizace podverze a přímo pro opravy verze.

Omezení

  • Současně nelze povolit implementaci rozhraní API služby Application Routing Gateway a doplněk Istio Service Mesh . Nejprve je nutné jednu zakázat a povolit druhou v samostatné operaci. Při přechodu z doplňku Istio Service Mesh na implementaci rozhraní API směrování aplikací Gateway musíte po zakázání doplňku Istio odstranit Istio GatewayClass a Istio CRDs. Doplněk Istio nainstaluje CRD (například virtualservices.networking.istio.io, destinationrules.networking.istio.io, a další ve skupinách API networking.istio.io, security.istio.io, telemetry.istio.io a extensions.istio.io), které se neodeberou, když je doplněk zakázán. Pokud tyto CRD zůstanou v clusteru, řídicí rovina Istio v Application Routing Gateway API se nespustí. Spuštěním následujícího příkazu je odstraňte:

    kubectl delete crd $(kubectl get crd -o name | grep -E 'istio\.io')
    kubectl delete gatewayclass istio
    

Poznámka:

Pokud máte existující vlastní prostředky Istio (například VirtualServices nebo DestinationRules), odstraněním identifikátorů CRD odstraníte také tyto prostředky. Než budete pokračovat, ujistěte se, že je už nepotřebujete.

  • Implementace rozhraní API služby Application Routing Gateway používá stejný seznam povolených přizpůsobení prostředků jako doplněk Istio pro ověřování přizpůsobení objektů ConfigMap pro Gateway prostředky. Vlastní nastavení, která nejsou v seznamu povolených, jsou blokovaná prostřednictvím webhooků spravovaných doplňkem.
  • Správa certifikátů Azure DNS a TLS prostřednictvím doplňku pro směrování aplikací se v současné době nepodporuje pro rozhraní API brány Kubernetes. Můžete postupovat podle kroků v průvodci implementace API brány Application Routing Gateway pro zabezpečený příchozí přenos a nakonfigurovat Gateway pro ukončení protokolu TLS.
  • Konfigurace příchozího přístupu HTTPS ke službám HTTPS – tj. průchod SNI prostřednictvím TLSRoute prostředku není aktuálně podporováno.
  • Správa odchozího provozu prostřednictvím implementace rozhraní API služby Application Routing Gateway není podporována.

Předpoklady

  • aks-preview Nainstalujte rozšíření nebo aktualizujte na nejnovější verzi rozšíření pomocí příkazů [az extension add][az-extension-add] a [az extension update][az-extension-update]. pokud používáte Azure CLI. Musíte použít aks-preview verzi 19.0.0b24 a novější.

    # Install the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension to the latest version
    az extension update --name aks-preview
    
  • Povolte instalaci rozhraní API Spravované brány. Použití CRD rozhraní API samostatně řízené brány s doplňkem pro směrování aplikací není podporováno.

  • Zaregistrujte příznak funkce API App Routing Gateway v předběžné verzi.

  • Příznak funkce AppRoutingIstioGatewayAPIPreview zaregistrujte pomocí příkazu az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "AppRoutingIstioGatewayAPIPreview"
    

Povolení implementace rozhraní API služby Application Routing Gateway

Nastavení proměnných prostředí

export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>

Povolení při vytváření clusteru

Spuštěním následujícího příkazu povolte implementaci rozhraní API služby Application Routing Gateway během vytváření clusteru:

az aks create --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio

Povolení pro existující cluster

Spuštěním následujícího příkazu povolte implementaci rozhraní API služby Application Routing Gateway pro existující cluster:

az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio

Měli byste vidět istiod pody v oboru názvů aks-istio-system.

kubectl get pods -n aks-istio-system
NAME                      READY   STATUS    RESTARTS   AGE
istiod-54b4ff45cf-htph8   1/1     Running   0          3m15s
istiod-54b4ff45cf-wlvgd   1/1     Running   0          3m

Měli byste také vidět nasazení ValidatingWebhookConfiguration.

kubectl get validatingwebhookconfiguration
NAME                                        WEBHOOKS   AGE
aks-node-validating-webhook                 1          117m
azure-service-mesh-ccp-validating-webhook   1          4m2s

Pokud máte povolenou instalaci API spravované brány, měli byste také vidět vytvoření objektu ConfigMap pro přizpůsobení brány Istio:

kubectl get cm -n aks-istio-system
NAME                                  DATA   AGE
...
istio-gateway-class-defaults          2      43s
...

Konfigurace vstupu pomocí brány Kubernetes

Nasazení ukázkové aplikace

Nejprve nasaďte tu ukázkovou httpbin aplikaci v default jmenném prostoru:

export ISTIO_RELEASE="release-1.27"
kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_RELEASE/samples/httpbin/httpbin.yaml

Vytvořit Kubernetes Gateway a HTTPRoute

Dále nasaďte konfiguraci rozhraní API brány v oboru názvů default s nastavením na hodnotu gatewayClassNameapprouting-istio.

kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: httpbin-gateway
spec:
  gatewayClassName: approuting-istio
  listeners:
  - name: http
    port: 80
    protocol: HTTP
    allowedRoutes:
      namespaces:
        from: Same
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: httpbin
spec:
  parentRefs:
  - name: httpbin-gateway
  hostnames: ["httpbin.example.com"]
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /get
    backendRefs:
    - name: httpbin
      port: 8000
EOF

Poznámka:

Výše uvedený příklad vytvoří externí službu vstupního vyrovnávače zatížení, která je přístupná zvenku clusteru. Přidáním poznámek můžete vytvořit interní nástroj pro vyrovnávání zatížení a přizpůsobit další nastavení nástroje pro vyrovnávání zatížení.

Poznámka:

Ve výchozím nastavení řídicí rovina Istio připojí název GatewayClass k názvu prostředků, které zřizuje pro approuting-istio. K vašemu prostředku Gateway můžete připojit poznámky gateway.istio.io/name-override, abyste přepsali název zřízených prostředků. Názvy prostředků musí být menší než 63 znaky a musí to být platný název DNS.

Ověřte, že se vytvoří Deployment, Service, HorizontalPodAutoscaler a PodDisruptionBudget pro httpbin-gateway:

kubectl get deployment httpbin-gateway-approuting-istio
NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
httpbin-gateway-approuting-istio   2/2     2            2           6m41s
kubectl get service httpbin-gateway-approuting-istio
NAME                               TYPE           CLUSTER-IP   EXTERNAL-IP      PORT(S)                        AGE
httpbin-gateway-approuting-istio   LoadBalancer   10.0.54.96   <external-ip>    15021:30580/TCP,80:32693/TCP   7m13s
kubectl get hpa httpbin-gateway-approuting-istio
NAME                               REFERENCE                                     TARGETS       MINPODS   MAXPODS   REPLICAS   AGE
httpbin-gateway-approuting-istio   Deployment/httpbin-gateway-approuting-istio   cpu: 3%/80%   2         5         2          8m13s
kubectl get pdb httpbin-gateway-approuting-istio
NAME                               MIN AVAILABLE   MAX UNAVAILABLE   ALLOWED DISRUPTIONS   AGE
httpbin-gateway-approuting-istio   1               N/A               1                     9m1s

Odeslání požadavku do ukázkové aplikace

Nakonec zkuste odeslat curl žádost do httpbin aplikace. Nejprve nastavte proměnnou INGRESS_HOST prostředí:

kubectl wait --for=condition=programmed gateways.gateway.networking.k8s.io httpbin-gateway
export INGRESS_HOST=$(kubectl get gateways.gateway.networking.k8s.io httpbin-gateway -ojsonpath='{.status.addresses[0].value}')

Pak zkuste odeslat požadavek HTTP na httpbin:

curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"

Měli byste vidět HTTP 200 odpověď.

Poznámka:

Pokud chcete zabezpečit příchozí přenos dat pomocí implementace rozhraní API služby Application Routing Gateway, přečtěte si následující průvodce synchronizací tajných kódů ze služby Azure Key Vault (AKV) pro zabezpečení příchozího přenosu dat rozhraní API brány s ukončením protokolu TLS.

Správa verzí a upgrady

Implementace rozhraní API brány směrování aplikací nasadí a upgraduje řídicí rovinu Istio podle verze Kubernetes clusteru AKS pro upgrady podverze a verze opravných balíčků.

Verze Istio je maximální podporovaná podverze Istio, která je kompatibilní s verzí AKS vašeho clusteru. Pokud například používáte verzi 1.34 AKS, je maximální podporovaná podverze Istio nainstalovaná (od března 2026) 1.28. Mějte na paměti, že maximální podporovaná verze Istio pro danou verzi Kubernetes se může lišit mezi clustery s dlouhodobou podporou (LTS) a clustery bez dlouhodobé podpory (LTS).

Abyste našli maximální podporovanou menší verzi Istio pro vaši verzi AKS Kubernetes, můžete zkontrolovat kalendář doplňku Service Mesh. I když implementace rozhraní API směrování Gateway není revizí, podverze řídicí roviny Istio odpovídá dané revizi doplňku síťě služeb (např. pro doplněk síťě služebasm-1-28, podverze řídicí roviny Istio pro směrování aplikace by byla 1.28). Podverzi Istio můžete zobrazit také tak, že zkontrolujete patch verzi v istiod obrazu nasazení: kubectl get deployment istiod -n aks-istio-system -o=jsonpath="{.spec.template.spec.containers[*].image}".

Vylepšení

Aktualizace verze opravy a dílčí verze řídicí roviny Istio pro implementaci rozhraní API služby Application Routing Gateway probíhá na místě. Aktualizace opravy verzí řídicí roviny Istio jsou spuštěny automaticky jako součást vydání AKS. Aktualizace dílčí verze se dají aktivovat automaticky nebo ručně v závislosti na verzi AKS Kubernetes a načasování vydání dílčí verze Istio. Aktualizace drobné verze se provádí v následujících dvou scénářích.

  • Cluster AKS se upgraduje na novou verzi, která má připnutou vyšší podporovanou verzi Istio. Řídicí rovina Istio bude při upgradu clusteru AKS upgradována na vyšší dílčí verzi.
  • Pro AKS je vydána nová verze Istio a teď je maximální podporovanou verzí Istio pro verzi clusteru AKS. Řídicí rovina Istio ve vašem clusteru se po uvedení verze do vaší oblasti automaticky upgraduje na novou podverzi. Sledujte poznámky k verzi AKS a nástroj pro sledování verzí AKS a zjistěte o nových verzích Istio a kdy bude nová verze dostupná ve vaší oblasti.

Je možné, že během procesu upgradu může dojít k přerušení provozu. Aby se minimalizovalo přerušení během upgradů, nasadí doplněk pro směrování aplikací horizontální automatické škálování podů (HPA) se 2 minimálními replikami a souborem PDB (PodDisruptionBudget) s minimální dostupností 1 pro každou z nich Gateway. Tyto prostředky můžete přizpůsobit, abyste tato nastavení upravili.

Přizpůsobení prostředků

Přizpůsobení horizontálního automatického škálování podů v řídicí rovině (HPA)

Implementace rozhraní API směrování aplikací Gateway podporuje přizpůsobení řídicí roviny Istio pro horizontální automatické škálování podů (HPA). Prostředek istiod HPA má následující výchozí konfigurace:

  • Minimální repliky: 2
  • Maximální počet replik: 5
  • Využití procesoru: 80%

Poznámka:

Aby se zabránilo konfliktům s PodDisruptionBudget, rozhraní API služby Application Routing Gateway v aplikaci neumožňuje nastavení minReplicas pod počáteční výchozí hodnotou 2.

Konfiguraci HPA je možné upravit prostřednictvím oprav a přímých úprav. Příklad:

kubectl patch hpa istiod -n aks-istio-system --type merge --patch '{"spec": {"minReplicas": 3, "maxReplicas": 6}}'

Přizpůsobení prostředků síťové brány

Implementace rozhraní API služby Application Routing Gateway podporuje přizpůsobení Gateway prostředků prostřednictvím poznámek a objektů ConfigMap. Směrování aplikací používá stejný seznam povolených úprav prostředků jako doplněk Istio Service Mesh pro úpravy prostředků API brány. Podle pokynů v dokumentaci k rozhraní API pro doplňky Istio nakonfigurujte prostředky vygenerované pro dané Gateways rozhraní API a zjistěte, která pole spadají do seznamu povolených položek.

Poznámka:

Objekt istio-gateway-class-defaults ConfigMap je zřízený a odsouhlasený službou AKS, když jsou společně povoleny identifikátory CRD rozhraní API spravované brány a implementace rozhraní API služby Application Routing Gateway. Pokud jste dříve vytvořili objekt ConfigMap v oboru názvů istio-gateway-class-defaults sami, musíte před povolením identifikátorů Gateway API CRD spravovaných službou odstranit vlastní instanci ConfigMap, abyste zabránili konfliktům s vyrovnáním ConfigMap spravovaného službou AKS.

Zakázání implementace rozhraní API služby Application Routing Gateway

Spuštěním následujícího příkazu zakažte implementaci rozhraní API služby Application Routing Gateway:

az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --disable-app-routing-istio

Vyčištění zdrojů

Spuštěním následujících příkazů odstraňte příkazy Gateway a HttpRoute:

kubectl delete gateways.gateway.networking.k8s.io httpbin-gateway
kubectl delete httproute httpbin

Pokud jste vytvořili ConfigMap pro přizpůsobení Gateway, spusťte následující příkaz pro odstranění ConfigMap:

kubectl delete configmap gw-options

Pokud jste vytvořili secretProviderClass a tajný klíč pro použití pro ukončení protokolu TLS, odstraňte také následující prostředky:

kubectl delete secret httpbin-credential
kubectl delete pod secrets-store-sync-httpbin
kubectl delete secretproviderclass httpbin-credential-spc

Další kroky

Zabezpečení příchozího přenosu dat pomocí implementace rozhraní API služby Application Routing Gateway