NGINX bejövőforgalom-vezérlő konfigurálása az Azure privát DNS-zónájának támogatásához alkalmazás-útválasztási bővítmény használatával

Figyelmeztetés

A Kubernetes SIG Network és a Biztonsági Válaszbizottság bejelentette az Ingress NGINX projekt közelgő leállását, a karbantartás 2026 márciusában fejeződik be. Az NGINX-et használó alkalmazás-útválasztási bővítményt használó AKS-fürtökhöz jelenleg nincs szükség azonnali műveletre. A Microsoft 2026 novemberében hivatalos támogatást nyújt az alkalmazás-útválasztási bővítmény NGINX bejövő erőforrásaihoz szükséges kritikus biztonsági javításokhoz.

Az AKS igazodik a felsőbb rétegbeli Kuberneteshez azáltal, hogy áttér a Gateway API-ra a bejövő forgalom és az L7 forgalomkezelés hosszú távú szabványaként. Javasoljuk, hogy az aktuális beállítás alapján kezdje el megtervezni a migrálási útvonalat:

Ez a cikk bemutatja, hogyan konfigurálhat NGINX bejövőforgalom-vezérlőt az Azure belső terheléselosztójával való együttműködésre. Azt is ismerteti, hogyan konfigurálhat egy privát Azure DNS-zónát úgy, hogy a privát végpontok DNS-feloldása lehetővé tegye adott tartományok feloldását.

Mielőtt elkezdené

Csatlakozás az AKS-klaszterhez

Ha a helyi számítógépről szeretne csatlakozni a Kubernetes-fürthöz, használja a Kubernetes parancssori klienst, kubectl. A helyi telepítést az az aks install-cli parancs használatával végezheti el. Ha az Azure Cloud Shellt használja, a kubectl már telepítve van.

Az alábbi példa az aks-cluster nevű fürthöz való csatlakozást konfigurálja a test-rg fájlban a az aks get-credentials parancs használatával.

az aks get-credentials \
    --resource-group test-rg \
    --name aks-cluster

Virtuális hálózat létrehozása

Ha privát DNS-zónát szeretne közzétenni a virtuális hálózaton, adja meg azoknak a virtuális hálózatoknak a listáját, amelyek lehetővé teszik a zónán belüli rekordok virtuális hálózati kapcsolatokkal való feloldását.

Az alábbi példa egy vnet-1 nevű virtuális hálózatot hoz létre a test-rg erőforráscsoportban, és egy subnet-1 nevű alhálózatot hoz létre a virtuális hálózaton belül egy adott címelőtaggal.

az network vnet create \
  --name vnet-1 \
  --resource-group test-rg \
  --location eastus \
  --address-prefix 10.2.0.0/16 \
  --subnet-name subnet-1 \
  --subnet-prefixes 10.2.0.0/24

Azure-beli privát DNS-zóna létrehozása

Megjegyzés

Az alkalmazás-útválasztási bővítmény úgy konfigurálható, hogy automatikusan rekordokat hozzon létre egy vagy több Azure globális és privát DNS-zónában az ingress erőforrásokon meghatározott hosztokhoz. Minden globális Azure DNS-zónának és minden privát Azure DNS-zónának ugyanabban az erőforráscsoportban kell lennie.

Hozzon létre egy DNS-zónát az az network private-dns zone create paranccsal, megadva a zóna nevét és az erőforráscsoportot, amelyben létre szeretné hozni. Az alábbi példa létrehoz egy private.contoso.com nevű DNS-zónát a test-rg erőforráscsoportban.

az network private-dns zone create \
    --resource-group test-rg \
    --name private.contoso.com

Az az network private-dns link vnet create paranccsal hozzon létre egy virtuális hálózati kapcsolatot a korábban létrehozott DNS-zónához. Az alábbi példa létrehoz egy dns-link nevű hivatkozást a virtuális hálózat vnet-1 zónájának private.contoso.com. Adja meg a --registration-enabled paramétert, hogy a hivatkozás ne legyen engedélyezve a regisztrációban.

az network private-dns link vnet create \
    --resource-group test-rg \
    --name dns-link \
    --zone-name private.contoso.com \
    --virtual-network vnet-1 \
    --registration-enabled false

Az Azure DNS privát zóna automatikus regisztrációs funkciója kezeli a virtuális hálózaton üzembe helyezett virtuális gépek DNS-rekordjait. Ha egy virtuális hálózatot egy privát DNS-zónával kapcsol össze ezzel a beállítással, a rendszer létrehoz egy DNS-rekordot minden Egyes Azure-beli virtuális géphez a virtuális hálózaton üzembe helyezett AKS-csomóponthoz.

Azure-beli privát DNS-zóna csatolása az alkalmazás-útválasztási bővítményhez

Megjegyzés

A az aks approuting zone add parancs a parancsot futtató felhasználó engedélyeit használja az Azure DNS-zóna szerepkör-hozzárendelésének létrehozásához. A saját DNS zóna közreműködői szerepköre egy beépített szerepkör a privát DNS-erőforrások kezeléséhez, és a bővítmény felügyelt identitásához van rendelve. A felügyelt AKS-identitásokról további információt a felügyelt identitások összegzésében talál.

  1. A parancs használatával az network dns zone show kérje le a DNS-zóna erőforrás-azonosítóját, és állítsa a kimenetet egy névvel ellátott ZONEIDváltozóra. Az alábbi példa lekérdezi a private.contoso.com zónát a test-rg erőforráscsoportban.

    ZONEID=$(az network private-dns zone show \
    --resource-group test-rg \
    --name private.contoso.com \
    --query "id" \
    --output tsv)
    
  2. Frissítse a bővítményt az Azure DNS-integráció engedélyezéséhez a az aks approuting zone parancs használatával. A DNS-zóna erőforrásazonosítóinak vesszővel tagolt listáját is átadhatja. Az alábbi példa frissíti az AKS-fürtöt a test-rg erőforráscsoportban.

    az aks approuting zone add \
    --resource-group test-rg \
    --name aks-cluster \
    --ids=${ZONEID} \
    --attach-zones
    

NGINX bejövőforgalom-vezérlő létrehozása privát IP-címmel és belső terheléselosztóval

Az alkalmazás-útválasztási bővítmény egy Kubernetes egyéni erőforrásdefiníciót (CRD)NginxIngressController használ az NGINX bejövő vezérlők konfigurálásához. Létrehozhat további bejövő vezérlőket, vagy módosíthatja a meglévő konfigurációt.

NginxIngressController A CRD rendelkezik egy loadBalancerAnnotations mezővel, amely a terheléselosztó széljegyzeteinek beállításával szabályozza az NGINX bejövőforgalom-vezérlő szolgáltatásának viselkedését. A terheléselosztó széljegyzeteiről további információt a Testreszabások Kubernetes-széljegyzeteken keresztül című témakörben talál.

Az alábbi lépéseket követve hozzon létre egy NGINX forgalmi szabályozót egy belső hálózat felé néző Azure Load Balancerrel, amely privát IP-címmel rendelkezik.

  1. Másolja a következő YAML-jegyzékfájlt egy nginx-internal-controller.yaml nevű új fájlba, és mentse a fájlt a helyi számítógépre.

    apiVersion: approuting.kubernetes.azure.com/v1alpha1
    kind: NginxIngressController
    metadata:
      name: nginx-internal
    spec:
      ingressClassName: nginx-internal
      controllerNamePrefix: nginx-internal
      loadBalancerAnnotations: 
        service.beta.kubernetes.io/azure-load-balancer-internal: "true"
    
  2. Hozza létre az NGINX bejövőforgalom-vezérlő erőforrásait a kubectl apply paranccsal.

    kubectl apply -f nginx-internal-controller.yaml
    

    A következő példakimenet a létrehozott erőforrást mutatja be:

    nginxingresscontroller.approuting.kubernetes.azure.com/nginx-internal created
    
  3. Ellenőrizze, hogy a bejövőforgalom-vezérlő létrejött-e

    A parancs használatával kubectl get nginxingresscontroller ellenőrizheti az NGINX bejövőforgalom-vezérlő állapotát.

    kubectl get nginxingresscontroller
    

    Az alábbi példakimenet a létrehozott erőforrást mutatja be. Eltarthat néhány percig, amíg a vezérlő elérhetővé válik:

    NAME             INGRESSCLASS                         CONTROLLERNAMEPREFIX   AVAILABLE
    default          webapprouting.kubernetes.azure.com   nginx                  True
    nginx-internal   nginx-internal                       nginx-internal         True
    

Alkalmazás üzembe helyezése

Az alkalmazás-útválasztási bővítmény a Kubernetes Bejövő forgalom objektumainak megjegyzéseit használja a megfelelő erőforrások létrehozásához.

  1. Hozza létre a példa podok futtatásához hívott aks-store alkalmazásnévteret a kubectl create namespace paranccsal.

    kubectl create namespace aks-store
    
  2. Telepítse az AKS-tárolóalkalmazást a következő YAML-jegyzékfájl használatával:

    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
    

Ez a jegyzék létrehozza az AKS-tárolóalkalmazáshoz szükséges központi telepítéseket és szolgáltatásokat.

Hozza létre az Ingress erőforrást, amely az Azure privát DNS-zónájában található gazdagépnevet és egy privát IP-címet használ.

Frissítse host a DNS-gazdagép nevére, például store-front.private.contoso.com. Ellenőrizze, hogy az ingressClassName paraméterhez az nginx-internal értéket adja-e meg.

  1. Másolja a következő YAML-jegyzékfájlt egy ingress.yaml nevű új fájlba, és mentse a fájlt a helyi számítógépre.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: store-front
      namespace: aks-store
    spec:
      ingressClassName: nginx-internal
      rules:
      - host: store-front.private.contoso.com
        http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Hozza létre a bejövő erőforrást a kubectl apply paranccsal.

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

    A következő példakimenet a létrehozott erőforrást mutatja be:

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

Ellenőrizze, hogy a felügyelt Ingress létre lett-e hozva

A(z) kubectl get ingress parancs használatával ellenőrizheti, hogy a kezelt Ingress létrejött-e.

kubectl get ingress -n aks-store

A következő példakimenet a létrehozott felügyelt Ingress-t mutatja be.

NAME          CLASS            HOSTS                             ADDRESS   PORTS   AGE
store-front   nginx-internal   store-front.private.contoso.com             80      10s

Ellenőrizze, hogy az Azure privát DNS-zónája frissült-e

Néhány perc múlva futtassa a az network private-dns record-set a list parancsot az Azure privát DNS-zóna A rekordjainak megtekintéséhez. Adja meg az erőforráscsoport nevét és a DNS-zóna nevét. Ebben a példában az erőforráscsoport test-rg , a DNS-zóna pedig private.contoso.com.

az network private-dns record-set a list \
    --resource-group test-rg \
    --zone-name private.contoso.com

A következő példakimenet a létrehozott rekordot jeleníti meg:

[
  {
    "aRecords": [
      {
        "ipv4Address": "10.224.0.7"
      }
    ],
    "etag": "ecc303c5-4577-4ca2-b545-d34e160d1c2d",
    "fqdn": "store-front.private.contoso.com.",
    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/test-rg/providers/Microsoft.Network/privateDnsZones/private.contoso.com/A/store-front",
    "isAutoRegistered": false,
    "name": "store-front",
    "resourceGroup": "test-rg",
    "ttl": 300,
    "type": "Microsoft.Network/privateDnsZones/A"
  }
]

Következő lépések

Az SSL-titkosítással kapcsolatos egyéb speciális NGINX bejövőforgalom-vezérlővel és bejövő erőforrás-konfigurációval kapcsolatos egyéb konfigurációs információkért tekintse át a DNS- és SSL-konfigurációt , valamint az alkalmazás-útválasztási bővítmény konfigurációját.