Configurare il controller di ingresso NGINX per supportare la zona DNS privata di Azure con il componente aggiuntivo Instradamento dell'applicazione
Articolo
Questo articolo illustra come configurare un controller di ingresso NGINX per lavorare con il servizio di bilanciamento del carico interno di Azure e configurare una zona DNS di Azure privata per abilitare la risoluzione DNS per gli endpoint privati in modo da risolvere domini specifici.
Connettersi al cluster del servizio Azure Kubernetes
Per connettersi al cluster Kubernetes dal computer locale, si usa kubectl, ovvero il client da riga di comando di Kubernetes. È possibile installarlo in locale con il comando az aks install-cli. Se si usa Azure Cloud Shell, kubectl è già installato.
L'esempio seguente configura la connessione al cluster denominato myAKSCluster in myResourceGroup usando il comando az aks get-credentials.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Creare una rete virtuale
Per pubblicare una zona DNS privata nella rete virtuale, è necessario specificare un elenco di reti virtuali autorizzate a risolvere i record nella zona. Questi collegamenti sono denominati collegamenti di rete virtuale.
L'esempio seguente crea una rete virtuale denominata myAzureVNet nel gruppo di risorse myResourceGroup e una subnet denominata mySubnet da creare all'interno della rete virtuale con un prefisso di indirizzo specifico.
È possibile configurare il componente aggiuntivo Instradamento dell'applicazione per creare automaticamente record in una o più zone DNS globali e private di Azure per gli host definiti nelle risorse in ingresso. Tutte le zone DNS di Azure globali e tutte le zone DNS di Azure private devono trovarsi nello stesso gruppo di risorse.
Creare una zona DNS usando il comando az network private-dns zone create, specificando il nome della zona e il gruppo di risorse in cui crearla. L'esempio seguente crea una zona DNS denominata private.contoso.com nel gruppo di risorse myResourceGroup.
az network private-dns zone create --resource-group myResourceGroup --name private.contoso.com
Creare un collegamento di rete virtuale alla zona DNS creata in precedenza usando il comando az network private-dns link vnet create. L'esempio seguente crea un collegamento denominato myDNSLink alla zona private.contoso.com per la rete virtuale myAzureVNet. Includere il parametro --registration-enabled per specificare che il collegamento non è abilitato per la registrazione.
az network private-dns link vnet create --resource-group myResourceGroup \
--name myDNSLink \
--zone-name private.contoso.com \
--virtual-network myAzureVNet \
--registration-enabled false
La funzionalità di registrazione automatica delle zona DNS privato di Azure consente di gestire i record DNS per le macchine virtuali distribuite in una rete virtuale. Quando si collega una rete virtuale a una zona DNS privata con questa impostazione abilitata, viene creato un record DNS per ogni macchina virtuale di Azure per il nodo del servizio Azure Kubernetes distribuito nella rete virtuale.
Collegare una zona DNS privato di Azure al componente aggiuntivo Instradamento dell'applicazione
Nota
Il comando az aks approuting zone add usa le autorizzazioni dell'utente che esegue il comando per creare l'assegnazione di ruolo della zona DNS di Azure. Il ruolo Collaboratore per la zona DNS privato è un ruolo predefinito per la gestione delle risorse DNS privato. Per altre informazioni sulle identità gestite del servizio Azure Kubernetes, vedere Riepilogo delle identità gestite.
Recuperare l'ID risorsa per la zona DNS usando il comando az network dns zone show e impostare l'output su una variabile denominata ZONEID. L'esempio seguente esegue una query sulla zona private.contoso.com nel gruppo di risorse myResourceGroup.
ZONEID=$(az network private-dns zone show --resource-group myResourceGroup --name private.contoso.com --query "id" --output tsv)
Aggiornare il componente aggiuntivo per abilitare l'integrazione con DNS di Azure usando il comando az aks approuting zone. È possibile passare un elenco delimitato da virgole di ID risorse della zona DNS. L'esempio seguente aggiorna il cluster del servizio Azure Kubernetes myAKSCluster nel gruppo di risorse myResourceGroup.
az aks approuting zone add --resource-group myResourceGroup --name myAKSCluster --ids=${ZONEID} --attach-zones
Creare un controller di ingresso NGINX con un indirizzo IP privato e un servizio di bilanciamento del carico interno
La CRD NginxIngressController include un campo loadBalancerAnnotations che consente di controllare il comportamento del servizio del controller in ingresso NGINX impostando annotazioni del servizio di bilanciamento del carico.
Seguire questa procedura per creare un controller di ingresso NGINX con Azure Load Balancer interno con un indirizzo IP privato.
Copiare il manifesto YAML seguente in un nuovo file denominato nginx-internal-controller.yaml e salvare il file nel computer locale.
L'output di esempio seguente mostra la risorsa creata:
service/aks-helloworld created created
Creare la risorsa in ingresso che usa un nome host nella zona DNS privato di Azure e un indirizzo IP privato
Copiare il manifesto YAML seguente in un nuovo file denominato ingress.yaml e salvare il file nel computer locale.
Aggiornare <Hostname> con il nome dell'host DNS, ad esempio helloworld.private.contoso.com. Verificare di aver specificato nginx-internal per ingressClassName.
L'output di esempio seguente mostra la risorsa creata:
ingress.networking.k8s.io/aks-helloworld created
Verificare che l'oggetto in ingresso gestito sia stato creato
È possibile verificare che l'ingresso gestito sia stato creato usando il comando kubectl get ingress.
kubectl get ingress -n hello-web-app-routing
L'output di esempio seguente mostra l'ingresso gestito creato:
NAME CLASS HOSTS ADDRESS PORTS AGE
aks-helloworld nginx-internal helloworld.private.contoso.com 10.224.0.7 80 98s
Verificare che la zona DNS privato di Azure sia stata aggiornata
Tra qualche minuto, eseguire il comando az network private-dns record-set a list per visualizzare i record A per la zona DNS privato di Azure. Specificare il nome del gruppo di risorse e della zona DNS. In questo esempio, il gruppo di risorse è myResourceGroup e la zona DNS è private.contoso.com.
az network private-dns record-set a list --resource-group myResourceGroup --zone-name private.contoso.com
L'output di esempio seguente mostra il record creato:
L'origine di questo contenuto è disponibile in GitHub, in cui è anche possibile creare ed esaminare i problemi e le richieste pull. Per ulteriori informazioni, vedere la guida per i collaboratori.
Feedback su Azure Kubernetes Service
Azure Kubernetes Service è un progetto di open source. Selezionare un collegamento per fornire feedback:
Illustrare la progettazione, l'implementazione e la manutenzione dell'infrastruttura di rete di Azure, il bilanciamento del carico del traffico, il routing di rete e altro ancora.