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
- Uygulama yönlendirme eklentisine sahip bir AKS kümesi.
- Azure özel DNS Bölgesi eklemek için Azure aboneliğinizde Sahip, Azure hesap yöneticisi veya Azure ortak yönetici rolüne sahip olmanız gerekir.
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.
komutunu kullanarak
az network dns zone show
DNS bölgesinin kaynak kimliğini alın ve çıktıyı adlıZONEID
bir 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)
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.
NginxIngressController
CRD, 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.
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"
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
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.
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
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)"
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
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
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ğinizinginx-internal
ingressClassName
doğ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
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.
Azure Kubernetes Service