Delen via


NGINX-ingangscontroller configureren ter ondersteuning van de privé-DNS-zone van Azure met de invoegtoepassing voor toepassingsroutering

Waarschuwing

Het Kubernetes SIG Network en de Security Response Committee kondigde de aanstaande buitengebruikstelling van het NGINX-project voor inkomend verkeer aan, met een einde aan onderhoud in maart 2026. Er is momenteel geen onmiddellijke actie vereist voor AKS-clusters met behulp van de invoegtoepassing voor toepassingsroutering met NGINX. Microsoft biedt officiële ondersteuning tot en met november 2026 voor kritieke beveiligingspatches voor de application routing-add-on NGINX Ingress-resources.

AKS is afgestemd op upstream Kubernetes door over te stappen op gateway-API als de langetermijnstandaard voor inkomend verkeer en L7-verkeerbeheer. U wordt aangeraden uw migratiepad te plannen op basis van uw huidige installatie:

In dit artikel leest u hoe u een NGINX-ingangscontroller configureert voor gebruik met een interne Load Balancer van Azure. Ook wordt uitgelegd hoe u een privé-Azure DNS-zone configureert om DNS-omzetting voor de privé-eindpunten in te schakelen om specifieke domeinen op te lossen.

Voordat u begint

Verbinding maken met uw AKS-cluster

Als u vanaf uw lokale computer verbinding wilt maken met het Kubernetes-cluster, gebruikt kubectlu de Kubernetes-opdrachtregelclient. U kunt deze lokaal installeren met behulp van de opdracht az aks install-cli . Als u Azure Cloud Shell gebruikt, is kubectl al geïnstalleerd.

In het volgende voorbeeld wordt het maken van verbinding met uw cluster met de naam aks-cluster in de test-rg geconfigureerd met behulp van de az aks get-credentials opdracht.

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

Een virtueel netwerk maken

Als u een privé-DNS-zone naar uw virtuele netwerk wilt publiceren, geeft u een lijst op met virtuele netwerken die records in de zone mogen omzetten met virtuele netwerkkoppelingen.

In het volgende voorbeeld wordt een virtueel netwerk met de naam vnet-1 gemaakt in de test-rg-resourcegroep en één subnet met de naam subnet-1 dat u binnen het virtuele netwerk wilt maken met een specifiek adresvoorvoegsel.

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

Een privé-DNS-zone van Azure maken

Notitie

U kunt de add-on voor application routing configureren om automatisch records te maken in een of meer globale en privé-DNS-zones van Azure voor hosts die zijn gedefinieerd in ingress resources. Alle globale Azure DNS-zones en alle privé-Azure DNS-zones moeten zich in dezelfde resourcegroep bevinden.

Maak een DNS-zone met behulp van de opdracht az network private-dns zone create , waarbij u de naam van de zone en de resourcegroep opgeeft waarin u deze wilt maken. In het volgende voorbeeld wordt een DNS-zone met de naam private.contoso.com gemaakt in de resourcegroep test-rg .

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

U maakt een virtuele netwerkkoppeling naar de DNS-zone die u eerder hebt gemaakt met behulp van de opdracht az network private-dns link vnet create . In het volgende voorbeeld wordt een koppeling met de naam dns-link gemaakt naar de zone private.contoso.com voor het virtuele netwerk vnet-1. Neem de --registration-enabled parameter op om aan te geven dat de koppeling niet geschikt is voor registratie.

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

De functie voor automatische registratie van azure DNS-privézones beheert DNS-records voor virtuele machines die zijn geïmplementeerd in een virtueel netwerk. Wanneer u een virtueel netwerk koppelt aan een privé-DNS-zone waarvoor deze instelling is ingeschakeld, wordt er een DNS-record gemaakt voor elke virtuele Azure-machine voor uw AKS-knooppunt dat in het virtuele netwerk is geïmplementeerd.

Een privé-DNS-zone van Azure koppelen aan de invoegtoepassing voor toepassingsroutering

Notitie

De az aks approuting zone add opdracht gebruikt de machtigingen van de gebruiker die de opdracht uitvoert om de azure DNS-zoneroltoewijzing te maken. De rol Privé-DNS zonebijdrager is een ingebouwde rol voor het beheren van privé-DNS-resources en wordt toegewezen aan de beheerde identiteit van de invoegtoepassing. Zie Samenvatting van beheerde identiteiten in AKS voor meer informatie over beheerde AKS-identiteiten.

  1. Haal de resource-id voor de DNS-zone op met behulp van de az network dns zone show opdracht en stel de uitvoer in op een variabele met de naam ZONEID. In het volgende voorbeeld wordt een query uitgevoerd op de zone private.contoso.com in de test-rg van de resourcegroep.

    ZONEID=$(az network private-dns zone show \
    --resource-group test-rg \
    --name private.contoso.com \
    --query "id" \
    --output tsv)
    
  2. Werk de invoegtoepassing bij om integratie met Azure DNS in te schakelen met behulp van de az aks approuting zone opdracht. U kunt een door komma's gescheiden lijst met resource-id's voor DNS-zone doorgeven. In het volgende voorbeeld wordt het AKS-cluster aks-cluster in de resourcegroep test-rg bijgewerkt.

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

Een NGINX-ingangscontroller maken met een privé-IP-adres en een interne load balancer

De invoegtoepassing voor toepassingsroutering maakt gebruik van een aangepaste Kubernetes-resourcedefinitie (CRD) die wordt aangeroepen NginxIngressController om NGINX-ingangscontrollers te configureren. U kunt meer ingangscontrollers maken of een bestaande configuratie wijzigen.

NginxIngressController CRD heeft een loadBalancerAnnotations veld om het gedrag van de service van de NGINX-ingangscontroller te beheren door load balancer-aantekeningen in te stellen. Zie Aanpassingen via Kubernetes-aantekeningen voor meer informatie over load balancer-aantekeningen.

Voer de volgende stappen uit om een NGINX-ingangscontroller te maken met een interne Azure Load Balancer met een privé-IP-adres.

  1. Kopieer het volgende YAML-manifest naar een nieuw bestand met de naam nginx-internal-controller.yaml en sla het bestand op uw lokale computer op.

    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. Maak de NGINX-controllerbronnen voor inkomend verkeer met behulp van de kubectl apply opdracht.

    kubectl apply -f nginx-internal-controller.yaml
    

    In de volgende voorbeelduitvoer ziet u de gemaakte resource:

    nginxingresscontroller.approuting.kubernetes.azure.com/nginx-internal created
    
  3. Controleren of de ingangscontroller is gemaakt

    U kunt de status van de NGINX-ingangscontroller controleren met behulp van de kubectl get nginxingresscontroller opdracht.

    kubectl get nginxingresscontroller
    

    In de volgende voorbeelduitvoer ziet u de gemaakte resource. Het kan enkele minuten duren voordat de controller beschikbaar is:

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

Een app implementeren

De invoegtoepassing voor toepassingsroutering maakt gebruik van aantekeningen op Kubernetes Ingress-objecten om de juiste resources te maken.

  1. Maak de toepassingsnaamruimte genaamd aks-store om de voorbeeldpods uit te voeren met de opdracht kubectl create namespace.

    kubectl create namespace aks-store
    
  2. Implementeer de AKS-archieftoepassing met behulp van het volgende YAML-manifestbestand:

    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
    

Met dit manifest worden de benodigde implementaties en services voor de AKS-archieftoepassing gemaakt.

Maak de Ingress-resource die gebruikmaakt van een hostnaam op de Azure privé DNS-zone en een privé-IP-adres

Werk host bij met de naam van uw DNS-host, bijvoorbeeld store-front.private.contoso.com. Controleer of u de waarde nginx-internal hebt opgegeven voor de ingressClassName.

  1. Kopieer het volgende YAML-manifest naar een nieuw bestand met de naam ingress.yaml en sla het bestand op uw lokale computer op.

    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. Maak de ingress-resource met behulp van de kubectl apply commando.

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

    In de volgende voorbeelduitvoer ziet u de gemaakte resource:

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

Controleren of de beheerde Ingress is aangemaakt

U kunt controleren of de Managed Ingress is aangemaakt met behulp van de kubectl get ingress opdracht.

kubectl get ingress -n aks-store

In de volgende voorbeelduitvoer ziet u het gemaakte managed Ingress:

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

Controleren of de privé-DNS-zone van Azure is bijgewerkt

Voer in een paar minuten de az network private-dns-record-set een lijstopdracht uit om de A-records voor uw privé-DNS-zone van Azure weer te geven. Geef de naam van de resourcegroep en de naam van de DNS-zone op. In dit voorbeeld is de resourcegroep test-rg en is de DNS-zone private.contoso.com.

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

In de volgende voorbeelduitvoer ziet u de gemaakte record:

[
  {
    "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"
  }
]

Volgende stappen

Voor andere configuratie-informatie met betrekking tot SSL-versleuteling en andere geavanceerde configuraties van de NGINX-ingangscontroller en de configuratie van ingangsresources, bekijkt u de configuratie van DNS en SSL en de add-on configuratie voor toepassingsroutering.