Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment configurer un contrôleur d’entrée NGINX pour qu’il fonctionne avec un équilibreur de charge interne Azure. Il explique également comment configurer une zone Azure DNS privée afin d’activer la résolution DNS pour les points de terminaison privés afin de résoudre des domaines spécifiques.
Avant de commencer
Un cluster AKS avec le module complémentaire de routage d’application.
Pour attacher une zone DNS privée Azure, vous avez besoin du rôle Propriétaire, Administrateur de compte Azure ou Coadministrateur Azure sur votre abonnement Azure.
Se connecter à votre cluster AKS
Pour vous connecter au cluster Kubernetes à partir de votre ordinateur local, vous utilisez kubectl, le client de ligne de commande Kubernetes. Vous pouvez l’installer localement avec la commande az aks install-cli. Si vous utilisez Azure Cloud Shell, kubectl est déjà installé.
L’exemple suivant configure la connexion à votre cluster nommé aks-cluster dans le test-rg à l’aide de la az aks get-credentials commande.
az aks get-credentials \
--resource-group test-rg \
--name aks-cluster
Créez un réseau virtuel
Pour publier une zone DNS privée sur votre réseau virtuel, spécifiez une liste de réseaux virtuels autorisés à résoudre les enregistrements dans la zone avec des liens de réseau virtuel.
L’exemple suivant crée un réseau virtuel nommé vnet-1 dans le groupe de ressources test-rg , et un sous-réseau nommé sous-réseau-1 pour créer dans le réseau virtuel avec un préfixe d’adresse spécifique.
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
Créer une zone DNS privée Azure
Remarque
Vous pouvez configurer le module complémentaire de routage des applications pour créer automatiquement des enregistrements sur une ou plusieurs zones DNS globales et privées Azure pour les hôtes définis sur les ressources d’entrée. Toutes les zones Azure DNS globales et toutes les zones Azure DNS privées doivent se trouver dans le même groupe de ressources.
Créez une zone DNS à l’aide de la commande az network private-dns zone create , en spécifiant le nom de la zone et le groupe de ressources dans lequel la créer. L’exemple suivant crée une zone DNS nommée private.contoso.com dans le groupe de ressources test-rg .
az network private-dns zone create \
--resource-group test-rg \
--name private.contoso.com
Vous créez un lien de réseau virtuel vers la zone DNS créée précédemment à l’aide de la commande az network private-dns link vnet create. L’exemple suivant crée un lien nommé dns-link vers la zone private.contoso.com pour le réseau virtuel vnet-1. Incluez le paramètre --registration-enabled pour spécifier que le lien n’est pas enregistré.
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
La fonctionnalité d’inscription automatique de zone privée Azure DNS gère les enregistrements DNS pour les machines virtuelles déployées dans un réseau virtuel. Lorsque vous liez un réseau virtuel avec une zone DNS privée avec ce paramètre activé, un enregistrement DNS est créé pour chaque machine virtuelle Azure pour votre nœud AKS déployé dans le réseau virtuel.
Attacher une zone DNS privée Azure au module complémentaire de routage d’application
Remarque
La commande az aks approuting zone add utilise les autorisations de l’utilisateur exécutant la commande pour créer l’attribution de rôle Zone Azure DNS. Le rôle contributeur de zone DNS privée est un rôle intégré pour la gestion des ressources DNS privées et est affecté à l’identité managée du module complémentaire. Pour plus d’informations sur les identités managées AKS, consultez Résumé des identités managées.
Récupérez l’ID de ressource de la zone DNS à l’aide de la commande
az network dns zone showet définissez la sortie sur une variable nomméeZONEID. L’exemple suivant interroge la zone private.contoso.com dans le test-rg du groupe de ressources.ZONEID=$(az network private-dns zone show \ --resource-group test-rg \ --name private.contoso.com \ --query "id" \ --output tsv)Mettez à jour le module complémentaire pour activer l’intégration à Azure DNS à l’aide de la commande
az aks approuting zone. Vous pouvez passer une liste séparée par des virgules de plusieurs ID de ressource de zone DNS. L’exemple suivant met à jour le cluster AKS aks-cluster dans le groupe de ressources test-rg.az aks approuting zone add \ --resource-group test-rg \ --name aks-cluster \ --ids=${ZONEID} \ --attach-zones
Créer un contrôleur d’entrée NGINX avec une adresse IP privée et un équilibreur de charge interne
Le module complémentaire de routage d’applications utilise une définition de ressource personnalisée (CRD) Kubernetes appelée NginxIngressController pour configurer des contrôleurs d’entrée NGINX. Vous pouvez créer d’autres contrôleurs d’entrée ou modifier une configuration existante.
NginxIngressController CRD a un loadBalancerAnnotations champ pour contrôler le comportement du service du contrôleur d’entrée NGINX en définissant les annotations de l’équilibreur de charge. Pour plus d’informations sur les annotations de l’équilibreur de charge, consultez Personnalisations via des annotations Kubernetes.
Procédez comme suit pour créer un contrôleur d’entrée NGINX avec un équilibreur de charge Azure interne avec une adresse IP privée.
Copiez le manifeste YAML suivant dans un nouveau fichier nommé nginx-internal-controller.yaml et enregistrez le fichier sur votre ordinateur local.
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"Créez les ressources du contrôleur d’entrée NGINX à l’aide de la commande
kubectl apply.kubectl apply -f nginx-internal-controller.yamlL’exemple de sortie suivant présente la ressource créée :
nginxingresscontroller.approuting.kubernetes.azure.com/nginx-internal createdVérifier que le contrôleur d’entrée a été créé
Vous pouvez vérifier l’état du contrôleur d’entrée NGINX à l’aide de la commande
kubectl get nginxingresscontroller.kubectl get nginxingresscontrollerL’exemple de sortie suivant montre la ressource créée. La disponibilité du contrôleur peut prendre quelques minutes :
NAME INGRESSCLASS CONTROLLERNAMEPREFIX AVAILABLE default webapprouting.kubernetes.azure.com nginx True nginx-internal nginx-internal nginx-internal True
Déployer une application
Le module complémentaire de routage d’applications utilise des annotations sur des objets d’entrée Kubernetes pour créer les ressources appropriées.
Créez l’espace de noms d’application appelé
aks-storepour exécuter les exemples de pods à l’aide de lakubectl create namespacecommande.kubectl create namespace aks-storeDéployez l’application de magasin AKS à l’aide du fichier manifeste YAML suivant :
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
Ce manifeste crée les déploiements et services nécessaires pour l’application de magasin AKS.
Créer la ressource d’entrée qui utilise un nom d’hôte sur la zone DNS privée Azure et une adresse IP privée
Mettez à jour host avec le nom de votre hôte DNS, par exemple , store-front.private.contoso.com. Vérifiez que vous spécifiez nginx-internal pour ingressClassName.
Copiez le manifeste YAML suivant dans un nouveau fichier nommé ingress.yaml et enregistrez le fichier sur votre ordinateur local.
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: PrefixCréez la ressource d’entrée à l’aide de la
kubectl applycommande.kubectl apply -f ingress.yaml -n aks-storeL’exemple de sortie suivant présente la ressource créée :
ingress.networking.k8s.io/store-front created
Vérifier que l’entrée managée a été créée
Vous pouvez vérifier que l’entrée managée a été créée avec la commande kubectl get ingress.
kubectl get ingress -n aks-store
L’exemple de sortie suivant présente l’entrée managée créée :
NAME CLASS HOSTS ADDRESS PORTS AGE
store-front nginx-internal store-front.private.contoso.com 80 10s
Vérifier que la zone DNS privée Azure a été mise à jour
En quelques minutes, exécutez la commande az network private-dns record-set a list pour afficher les enregistrements A pour votre zone DNS privée Azure. Spécifiez le nom du groupe de ressources et le nom de la zone DNS. Dans cet exemple, le groupe de ressources est test-rg et la zone DNS est private.contoso.com.
az network private-dns record-set a list \
--resource-group test-rg \
--zone-name private.contoso.com
L’exemple de sortie suivant montre l’enregistrement créé :
[
{
"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"
}
]
Étapes suivantes
Pour obtenir d’autres informations de configuration relatives au chiffrement SSL, autres contrôleurs d’entrée NGINX avancés et configuration des ressources d’entrée, passez en revue configuration DNS et SSL et configuration du module complémentaire de routage des applications.