Megosztás a következőn keresztül:


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

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

Mielőtt elkezdené

Csatlakozás az AKS-fürthöz

Ha a helyi számítógépről szeretne csatlakozni a Kubernetes-fürthöz, használja kubectla Kubernetes parancssori ügyfelet. Telepítheti helyileg az az aks install-cli paranccsal. Ha az Azure Cloud Shellt használja, a kubectl már telepítve van.

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

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

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, meg kell adnia azoknak a virtuális hálózatoknak a listáját, amelyek a zónán belüli rekordok feloldására jogosultak. Ezeket virtuális hálózati kapcsolatoknak nevezzük.

Az alábbi példa létrehoz egy myAzureVNet nevű virtuális hálózatot a myResourceGroup erőforráscsoportban, és egy mySubnet nevű alhálózatot a virtuális hálózaton belül egy adott címelőtaggal.

az network vnet create \
  --name myAzureVNet \
  --resource-group myResourceGroup \
  --location eastus \
  --address-prefix 10.2.0.0/16 \
  --subnet-name mysubnet \
  --subnet-prefixes 10.2.0.0/24

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

Feljegyzés

Az alkalmazás-útválasztási bővítmény konfigurálható úgy, hogy automatikusan rekordokat hozzon létre egy vagy több Azure-beli globális és privát DNS-zónában a bejövő erőforrásokon definiált gazdagépek számára. Minden globális Azure DNS-zónának és minden privát Azure DNS-zónának ugyanabban az erőforráscsoportban kell lennie.

Dns-zónát az az network private-dns zone create paranccsal hozhat létre, amelyben megadhatja a zóna nevét és az erőforráscsoportot. Az alábbi példa létrehoz egy private.contoso.com nevű DNS-zónát a myResourceGroup erőforráscsoportban.

az network private-dns zone create --resource-group myResourceGroup --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 myDNSLink nevű hivatkozást a myAzureVNet virtuális hálózat zóna private.contoso.com. Adja meg a --registration-enabled paramétert annak megadásához, hogy a hivatkozás nincs engedélyezve a regisztrációban.

az network private-dns link vnet create --resource-group myResourceGroup \
  --name myDNSLink \
  --zone-name private.contoso.com \
  --virtual-network myAzureVNet \
  --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

Feljegyzé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 myResourceGroup erőforráscsoportban private.contoso.com zónát.

    ZONEID=$(az network private-dns zone show --resource-group myResourceGroup --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 myAKSCluster-ét a myResourceGroup erőforráscsoportban.

    az aks approuting zone add --resource-group myResourceGroup --name myAKSCluster --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.

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

Az alábbi lépéseket követve hozzon létre egy NGINX bejövőforgalom-vezérlőt egy belső azure Load Balancerrel privát IP-címmel.

  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. Hozzon létre egy alkalmazásnévteret hello-web-app-routing , amely a parancs használatával futtatja a kubectl create namespace példa podokat.

    kubectl create namespace hello-web-app-routing
    
  2. Hozza létre az üzembe helyezést úgy, hogy a következő YAML-jegyzékfájlt egy új, deployment.yaml nevű fájlba másolja, és mentse a fájlt a helyi számítógépre.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aks-helloworld  
      namespace: hello-web-app-routing
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aks-helloworld
      template:
        metadata:
          labels:
            app: aks-helloworld
        spec:
          containers:
          - name: aks-helloworld
            image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
            ports:
            - containerPort: 80
            env:
            - name: TITLE
              value: "Welcome to Azure Kubernetes Service (AKS)"
    
  3. A szolgáltatás létrehozásához másolja a következő YAML-jegyzékfájlt egy service.yaml nevű új fájlba, és mentse a fájlt a helyi számítógépre.

    apiVersion: v1
    kind: Service
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      type: ClusterIP
      ports:
      - port: 80
      selector:
        app: aks-helloworld
    
  4. Hozza létre a fürterőforrásokat a kubectl apply paranccsal.

    kubectl apply -f deployment.yaml -n hello-web-app-routing
    

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

    deployment.apps/aks-helloworld created created
    
    kubectl apply -f service.yaml -n hello-web-app-routing
    

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

    service/aks-helloworld created created
    

Hozza létre azt a bejövő erőforrást, amely az Azure privát DNS-zónában lévő gazdagépnevet és egy privát IP-címet használ

  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.

    Frissítsen <Hostname> például a DNS-gazdagép helloworld.private.contoso.comnevével. Ellenőrizze, hogy megadja-e nginx-internal a ingressClassName.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      ingressClassName: nginx-internal
      rules:
      - host: <Hostname>
        http:
          paths:
          - backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Hozza létre a fürterőforrásokat a kubectl apply paranccsal.

    kubectl apply -f ingress.yaml -n hello-web-app-routing
    

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

    ingress.networking.k8s.io/aks-helloworld created
    

A felügyelt bejövő forgalom létrehozásának ellenőrzése

A parancs használatával ellenőrizheti, hogy a felügyelt bejövő forgalom létrejött-e kubectl get ingress .

kubectl get ingress -n hello-web-app-routing

A következő példakimenet a létrehozott felügyelt bejövő forgalmat mutatja be:

NAME             CLASS            HOSTS                            ADDRESS      PORTS   AGE
aks-helloworld   nginx-internal   helloworld.private.contoso.com   10.224.0.7   80      98s

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

Néhány perc múlva futtassa az az network private-dns record -set 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 a myResourceGroup , a DNS-zóna pedig private.contoso.com.

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

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

[
  {
    "aRecords": [
      {
        "ipv4Address": "10.224.0.7"
      }
    ],
    "etag": "188f0ce5-90e3-49e6-a479-9e4053f21965",
    "fqdn": "helloworld.private.contoso.com.",
    "id": "/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx/resourceGroups/foo/providers/Microsoft.Network/privateDnsZones/private.contoso.com/A/helloworld",
    "isAutoRegistered": false,
    "name": "helloworld",
    "resourceGroup": "foo",
    "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.