Sdílet prostřednictvím


Konfigurace kontroleru příchozího přenosu dat NGINX pro podporu privátní zóny DNS Azure s doplňkem směrování aplikací

V tomto článku se dozvíte, jak nakonfigurovat kontroler příchozího přenosu dat NGINX tak, aby fungoval s interním nástrojem pro vyrovnávání zatížení Azure. Vysvětluje také, jak nakonfigurovat privátní zónu Azure DNS, aby umožnila rozlišení DNS pro privátní koncové body pro konkrétní domény.

Než začnete

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ý.

Následující příklad nakonfiguruje připojení ke clusteru s názvem aks-cluster v test-rg pomocí az aks get-credentials příkazu.

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

Vytvoření virtuální sítě

Pokud chcete do virtuální sítě publikovat privátní zónu DNS, zadejte seznam virtuálních sítí, které mohou překládat záznamy v rámci zóny pomocí propojení virtuální sítě.

Následující příklad vytvoří virtuální síť s názvem vnet-1 ve skupině prostředků test-rg a jednu podsíť s názvem subnet-1 , která se vytvoří v rámci virtuální sítě s konkrétní předponou adresy.

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

Vytvoření privátní zóny DNS Azure

Poznámka:

Doplněk pro směrování aplikací můžete nakonfigurovat tak, aby automaticky vytvářel záznamy v jedné nebo více globálních a privátních zónách DNS Azure pro hostitele definované v prostředcích příchozího přenosu dat. Všechny globální zóny Azure DNS a všechny privátní zóny Azure DNS musí být ve stejné skupině prostředků.

Pomocí příkazu az network private-dns zone create vytvořte zónu DNS, zadejte název zóny a skupinu prostředků, ve které ji chcete vytvořit. Následující příklad vytvoří zónu DNS s názvem private.contoso.com ve skupině prostředků test-rg .

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

Pomocí příkazu az network private-dns link vnet create vytvoříte propojení virtuální sítě s zónou DNS vytvořenou dříve. Následující příklad vytvoří odkaz s názvem dns-link na zónu private.contoso.com pro virtuální síť vnet-1. Zahrňte parametr --registration-enabled pro určení, že odkaz nemá povolenou registraci.

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

Funkce automatické registrace privátní zóny Azure DNS spravuje záznamy DNS pro virtuální počítače nasazené ve virtuální síti. Když propojíte virtuální síť s privátní zónou DNS s povoleným nastavením, vytvoří se záznam DNS pro každý virtuální počítač Azure pro váš uzel AKS nasazený ve virtuální síti.

Připojení privátní zóny DNS Azure k doplňku pro směrování aplikací

Poznámka:

Tento az aks approuting zone add příkaz používá oprávnění uživatele, který jej spouští, k vytvoření přiřazení role zóny Azure DNS. Role přispěvatele zóny Privátní DNS je předdefinovaná role pro správu privátních prostředků DNS a je přiřazená spravované identitě doplňku. Další informace o spravovaných identitách AKS najdete v souhrnu spravovaných identit.

  1. Načtěte ID prostředku zóny DNS pomocí az network dns zone show příkazu a nastavte výstup na proměnnou s názvem ZONEID. Následující příklad dotazuje zónu private.contoso.com ve skupině prostředků test-rg.

    ZONEID=$(az network private-dns zone show \
    --resource-group test-rg \
    --name private.contoso.com \
    --query "id" \
    --output tsv)
    
  2. Aktualizujte doplněk tak, aby povolte integraci s Azure DNS pomocí az aks approuting zone příkazu. Můžete předat čárkami oddělený seznam ID prostředků zóny DNS. Následující příklad aktualizuje cluster AKS aks-cluster ve skupině prostředků test-rg.

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

Vytvoření kontroleru příchozího přenosu dat NGINX s privátní IP adresou a interním nástrojem pro vyrovnávání zatížení

Doplněk směrování aplikace je používán pro konfiguraci ingresních kontrolerů NGINX prostřednictvím definice vlastního prostředku Kubernetes (CRD).NginxIngressController Můžete vytvořit další kontrolery příchozího přenosu dat nebo upravit existující konfiguraci.

NginxIngressController CRD má loadBalancerAnnotations pole pro řízení služby kontroleru příchozího přístupu NGINX nastavením poznámek vyrovnávače zatížení. Další informace o anotacích nástroje pro vyrovnávání zatížení najdete v tématu Přizpůsobení prostřednictvím anotací Kubernetes.

Provedením následujících kroků vytvořte kontroler příchozího přenosu dat NGINX s interní službou Azure Load Balancer s privátní IP adresou.

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

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

    kubectl apply -f nginx-internal-controller.yaml
    

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

    nginxingresscontroller.approuting.kubernetes.azure.com/nginx-internal created
    
  3. Ověření vytvoření kontroleru příchozího přenosu dat

    Pomocí příkazu můžete ověřit stav kontroleru kubectl get nginxingresscontroller příchozího přenosu dat NGINX.

    kubectl get nginxingresscontroller
    

    Následující příklad výstupu ukazuje vytvořený prostředek. Dostupnost kontroleru může trvat několik minut:

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

Nasazení aplikace

Doplněk pro směrování aplikace používá anotace na objektech Kubernetes Ingress k vytvoření příslušných prostředků.

  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ří potřebná nasazení a služby pro aplikaci obchodu AKS.

Vytvořte prostředek Ingress, který používá název hostitele v Azure Private DNS zóně a privátní IP adresu.

Aktualizujte host název hostitele DNS, například store-front.private.contoso.com. Ověřte, že pro ingressClassName zadáváte nginx-internal.

  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: nginx-internal
      rules:
      - host: store-front.private.contoso.com
        http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Vytvořte prostředek ingress pomocí příkazu kubectl apply.

    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, zda byl vytvořen spravovaný Ingress

Můžete ověřit, že spravovaný Ingress byl vytvořen, 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   nginx-internal   store-front.private.contoso.com             80      10s

Ověřte, že se aktualizovala privátní zóna DNS Azure.

Za několik minut spusťte příkaz az network private-dns record-set a list k zobrazení záznamů A pro vaši privátní zónu DNS Azure. Zadejte název skupiny prostředků a název zóny DNS. V tomto příkladu je skupina prostředků test-rg a zóna DNS je private.contoso.com.

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

Následující příklad výstupu ukazuje vytvořený záznam:

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

Další kroky

Pro další informace o konfiguraci související s šifrováním SSL, pokročilými kontrolery NGINX pro příchozí spojení a konfigurací prostředků pro příchozí spojení, přezkoumejte konfiguraci DNS a SSL a konfiguraci doplňku pro směrování aplikací.