Aracılığıyla paylaş


NGINX giriş denetleyicisini uygulama yönlendirme eklentisiyle Azure özel DNS bölgesini destekleyecek şekilde yapılandırma

Bu makalede, NGINX giriş denetleyicisinin Azure iç yük dengeleyicisi ile çalışacak şekilde nasıl yapılandırılması ve özel etki alanlarını çözümlemek üzere özel uç noktalar için DNS çözümlemesini etkinleştirmek üzere özel bir Azure DNS bölgesi yapılandırması gösterilmektedir.

Başlamadan önce

AKS kümenize bağlanma

Yerel bilgisayarınızdan Kubernetes kümesine bağlanmak için Kubernetes komut satırı istemcisini kullanırsınız kubectl. az aks install-cli komutunu kullanarak yerel olarak yükleyebilirsiniz. Azure Cloud Shell'i kullanıyorsanız kubectl zaten yüklüdür.

Aşağıdaki örnek, komutunu kullanarak myResourceGroup içinde myAKSCluster adlı kümenize bağlanmayı az aks get-credentials yapılandırır.

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

Sanal ağ oluşturma

Sanal ağınızda özel bir DNS bölgesi yayımlamak için, bölge içindeki kayıtları çözümlemesine izin verilen sanal ağların listesini belirtmeniz gerekir. Bunlara sanal ağ bağlantıları denir.

Aşağıdaki örnek, myResourceGroup kaynak grubunda myAzureVNet adlı bir sanal ağ ve belirli bir adres ön ekine sahip sanal ağ içinde oluşturmak için mySubnet adlı bir alt ağ oluşturur.

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 özel DNS bölgesi oluşturma

Not

Giriş kaynaklarında tanımlanan konaklar için bir veya daha fazla Azure genel ve özel DNS bölgesinde otomatik olarak kayıt oluşturmak üzere uygulama yönlendirme eklentisini yapılandırabilirsiniz. Tüm genel Azure DNS bölgeleri ve tüm özel Azure DNS bölgeleri aynı kaynak grubunda olmalıdır.

az network private-dns zone create komutunu kullanarak, oluşturulacak bölgenin ve kaynak grubunun adını belirterek bir DNS bölgesi oluşturursunuz. Aşağıdaki örnek, myResourceGroup kaynak grubunda private.contoso.com adlı bir DNS bölgesi oluşturur.

az network private-dns zone create --resource-group myResourceGroup --name private.contoso.com

Az network private-dns link vnet create komutunu kullanarak daha önce oluşturulan DNS bölgesine bir sanal ağ bağlantısı oluşturursunuz . Aşağıdaki örnek, myAzureVNet sanal ağı için bölge private.contoso.com myDNSLink adlı bir bağlantı oluşturur. Bağlantının --registration-enabled kayıt etkin olmadığını belirtmek için parametresini ekleyin.

az network private-dns link vnet create --resource-group myResourceGroup \
  --name myDNSLink \
  --zone-name private.contoso.com \
  --virtual-network myAzureVNet \
  --registration-enabled false

Azure DNS özel bölge otomatik kayıt özelliği, bir sanal ağa dağıtılan sanal makineler için DNS kayıtlarını yönetir. Bu ayar etkinken bir sanal ağı özel bir DNS bölgesiyle bağladığınızda, sanal ağda dağıtılan AKS düğümünüzün her Azure sanal makinesi için bir DNS kaydı oluşturulur.

Uygulama yönlendirme eklentisine Azure özel DNS bölgesi ekleme

Not

komutu, az aks approuting zone add Azure DNS Bölgesi rol atamasını oluşturmak için komutunu çalıştıran kullanıcının izinlerini kullanır. Özel DNS Bölgesi Katkıda Bulunanı rolü, özel DNS kaynaklarını yönetmeye yönelik yerleşik bir roldür ve eklentinin yönetilen kimliğine atanır. AKS yönetilen kimlikleri hakkında daha fazla bilgi için bkz . Yönetilen kimliklerin özeti.

  1. komutunu kullanarak az network dns zone show DNS bölgesinin kaynak kimliğini alın ve çıktıyı adlı ZONEIDbir değişken olarak ayarlayın. Aşağıdaki örnek, myResourceGroup kaynak grubundaki bölge private.contoso.com sorgular.

    ZONEID=$(az network private-dns zone show --resource-group myResourceGroup --name private.contoso.com --query "id" --output tsv)
    
  2. komutunu kullanarak Azure DNS ile tümleştirmeyi etkinleştirmek için eklentiyi güncelleştirin az aks approuting zone . DNS bölgesi kaynak kimliklerinin virgülle ayrılmış listesini geçirebilirsiniz. Aşağıdaki örnek, myResourceGroup kaynak grubundaki myAKSCluster AKS kümesini güncelleştirir.

    az aks approuting zone add --resource-group myResourceGroup --name myAKSCluster --ids=${ZONEID} --attach-zones
    

Özel IP adresi ve iç yük dengeleyici ile NGINX giriş denetleyicisi oluşturma

Uygulama yönlendirme eklentisi, NGINX giriş denetleyicilerini yapılandırmak için adlı NginxIngressController bir Kubernetes özel kaynak tanımı (CRD) kullanır. Daha fazla giriş denetleyicisi oluşturabilir veya var olan bir yapılandırmayı değiştirebilirsiniz.

NginxIngressControllerCRD, yük dengeleyici ek açıklamalarını ayarlayarak NGINX giriş denetleyicisinin hizmetinin davranışını denetlemeye yönelik bir loadBalancerAnnotations alana sahiptir.

Özel IP adresine sahip iç kullanıma yönelik Azure Load Balancer ile NGINX giriş denetleyicisi oluşturmak için aşağıdaki adımları gerçekleştirin.

  1. Aşağıdaki YAML bildirimini nginx-internal-controller.yaml adlı yeni bir dosyaya kopyalayın ve dosyayı yerel bilgisayarınıza kaydedin.

    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. komutunu kullanarak kubectl apply NGINX giriş denetleyicisi kaynaklarını oluşturun.

    kubectl apply -f nginx-internal-controller.yaml
    

    Aşağıdaki örnek çıktı, oluşturulan kaynağı gösterir:

    nginxingresscontroller.approuting.kubernetes.azure.com/nginx-internal created
    
  3. Giriş denetleyicisinin oluşturulduğunu doğrulayın

    komutunu kullanarak kubectl get nginxingresscontroller NGINX giriş denetleyicisinin durumunu doğrulayabilirsiniz.

    kubectl get nginxingresscontroller
    

    Aşağıdaki örnek çıktı, oluşturulan kaynağı gösterir. Denetleyicinin kullanılabilir olması birkaç dakika sürebilir:

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

Uygulama dağıtma

Uygulama yönlendirme eklentisi, uygun kaynakları oluşturmak için Kubernetes Giriş nesnelerindeki ek açıklamaları kullanır.

  1. komutunu kullanarak kubectl create namespace örnek podları çalıştırmak için adlı hello-web-app-routing bir uygulama ad alanı oluşturun.

    kubectl create namespace hello-web-app-routing
    
  2. Aşağıdaki YAML bildirimini deployment.yaml adlı yeni bir dosyaya kopyalayıp dosyayı yerel bilgisayarınıza kaydederek dağıtımı oluşturun.

    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şağıdaki YAML bildirimini service.yaml adlı yeni bir dosyaya kopyalayıp dosyayı yerel bilgisayarınıza kaydederek hizmeti oluşturun.

    apiVersion: v1
    kind: Service
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      type: ClusterIP
      ports:
      - port: 80
      selector:
        app: aks-helloworld
    
  4. komutunu kullanarak kubectl apply küme kaynaklarını oluşturun.

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

    Aşağıdaki örnek çıktı, oluşturulan kaynağı gösterir:

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

    Aşağıdaki örnek çıktı, oluşturulan kaynağı gösterir:

    service/aks-helloworld created created
    

Azure özel DNS bölgesinde konak adı ve özel IP adresi kullanan Giriş kaynağını oluşturma

  1. Aşağıdaki YAML bildirimini ingress.yaml adlı yeni bir dosyaya kopyalayın ve dosyayı yerel bilgisayarınıza kaydedin.

    DNS ana bilgisayarınızın adıyla (örneğin, helloworld.private.contoso.com) güncelleştirin<Hostname>. için belirttiğinizi nginx-internal ingressClassNamedoğrulayın.

    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. komutunu kullanarak kubectl apply küme kaynaklarını oluşturun.

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

    Aşağıdaki örnek çıktı, oluşturulan kaynağı gösterir:

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

Yönetilen Girişin oluşturulduğunu doğrulama

komutunu kullanarak yönetilen Girişin oluşturulduğunu kubectl get ingress doğrulayabilirsiniz.

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

Aşağıdaki örnek çıktıda, oluşturulan yönetilen Giriş gösterilmektedir:

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

Azure özel DNS bölgesinin güncelleştirildiğinden emin olun

Birkaç dakika içinde az network private-dns record-set a list komutunu çalıştırarak Azure özel DNS bölgenizin A kayıtlarını görüntüleyin. Kaynak grubunun adını ve DNS bölgesinin adını belirtin. Bu örnekte kaynak grubu myResourceGroup, DNS bölgesi ise private.contoso.com.

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

Aşağıdaki örnek çıktı, oluşturulan kaydı gösterir:

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

Sonraki adımlar

SSL şifrelemesi ile ilgili diğer gelişmiş NGINX giriş denetleyicisi ve giriş kaynağı yapılandırmasıyla ilgili diğer yapılandırma bilgileri için DNS ve SSL yapılandırması ile uygulama yönlendirme eklentisi yapılandırmasını gözden geçirin.