Condividi tramite


Esercitazione: abilitare il componente aggiuntivo Controller in ingresso del gateway applicazione per un cluster del servizio Azure Kubernetes esistente con un gateway applicazione esistente

È possibile usare l'interfaccia della riga di comando di Azure o il portale per abilitare il componente aggiuntivo Controller in ingresso del gateway applicazione (AGIC) per un cluster del servizio Azure Kubernetes (AKS) esistente. Questa esercitazione illustra come usare il componente aggiuntivo Controller in ingresso del gateway applicazione per esporre l'applicazione Kubernetes in un cluster del servizio Azure Kubernetes esistente tramite un gateway applicazione esistente distribuito in reti virtuali separate. Per iniziare, si creerà un cluster del servizio Azure Kubernetes in una rete virtuale e un gateway applicazione in una rete virtuale separata per simulare le risorse esistenti. Sarà quindi possibile abilitare il componente aggiuntivo Controller in ingresso del gateway applicazione, eseguire il peering combinato delle due reti virtuali e distribuire un'applicazione di esempio che verrà esposta tramite il gateway applicazione usando il componente aggiuntivo Controller in ingresso del gateway applicazione. Se si abilita il componente aggiuntivo Controller in ingresso del gateway applicazione per un gateway applicazione esistente e un cluster del servizio Azure Kubernetes esistente nella stessa rete virtuale, è possibile ignorare il passaggio relativo al peering illustrato di seguito. Il componente aggiuntivo costituisce una soluzione di gran lunga più rapida per distribuire Controller in ingresso del gateway applicazione per il cluster del servizio Azure Kubernetes rispetto a quella basata su Helm e offre anche un'esperienza completamente gestita.

In questa esercitazione apprenderai a:

  • Creare un gruppo di risorse
  • Creare un nuovo cluster del servizio Azure Kubernetes
  • Creare un nuovo gateway applicazione
  • Abilitare il componente aggiuntivo AGIC nel cluster del servizio Azure Kubernetes esistente tramite l'interfaccia della riga di comando di Azure
  • Abilitare il componente aggiuntivo AGIC nel cluster del servizio Azure Kubernetes esistente tramite il portale di Azure
  • Eseguire il peering della rete virtuale del gateway applicazione con la rete virtuale del cluster del servizio Azure Kubernetes
  • Distribuire un'applicazione di esempio usando Controller in ingresso del gateway applicazione per il traffico in ingresso nel cluster del servizio Azure Kubernetes
  • Verificare che l'applicazione sia raggiungibile tramite il gateway applicazione

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Prerequisiti

Creare un gruppo di risorse

In Azure, si allocano le risorse correlate a un gruppo di risorse. Creare un gruppo di risorse usando az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località (area) Stati Uniti orientali:

az group create --name myResourceGroup --location eastus

Distribuire un nuovo cluster del servizio Azure Kubernetes

Verrà ora distribuito un nuovo cluster del servizio Azure Kubernetes per simulare la presenza di un cluster del servizio Azure Kubernetes esistente per il quale si vuole abilitare il componente aggiuntivo Controller in ingresso del gateway applicazione.

Nell'esempio seguente verrà distribuito un nuovo cluster del servizio Azure Kubernetes denominato myCluster usando Azure CNI e Identità gestite nel gruppo di risorse creato, ovvero myResourceGroup.

az aks create --name myCluster --resource-group myResourceGroup --network-plugin azure --enable-managed-identity --generate-ssh-keys

Per configurare altri parametri per il comando precedente, vedere az aks create.

Nota

Verrà creato un gruppo di risorse del nodo con il nome MC_resource-group-name_cluster-name_location.

Distribuire un nuovo gateway applicazione

Verrà ora distribuito un nuovo gateway applicazione per simulare la presenza di un gateway applicazione esistente da usare per bilanciare il carico del traffico indirizzato al cluster del servizio Azure Kubernetes, ovvero myCluster. Il nome del gateway applicazione sarà myApplicationGateway, ma è prima necessario creare una risorsa IP pubblico denominata myPublicIp e una nuova rete virtuale denominata myVnet con spazio indirizzi 10.0.0.0/16, nonché una subnet con spazio indirizzi 10.0.0.0/24 denominata mySubnet e quindi distribuire il gateway applicazione in mySubnet usando myPublicIp.

Attenzione

Quando si usa un cluster del servizio Azure Kubernetes e un gateway applicazione in reti virtuali separate, gli spazi indirizzi delle due reti virtuali non devono sovrapporsi. Lo spazio indirizzi predefinito distribuito da un cluster del servizio Azure Kubernetes è 10.224.0.0/12.

az network public-ip create --name myPublicIp --resource-group myResourceGroup --allocation-method Static --sku Standard
az network vnet create --name myVnet --resource-group myResourceGroup --address-prefix 10.0.0.0/16 --subnet-name mySubnet --subnet-prefix 10.0.0.0/24 
az network application-gateway create --name myApplicationGateway --resource-group myResourceGroup --sku Standard_v2 --public-ip-address myPublicIp --vnet-name myVnet --subnet mySubnet --priority 100

Nota

Il componente aggiuntivo Controller in ingresso del gateway applicazione (AGIC) supporta solo SKU V2 del gateway applicazione (Standard e WAF) e non SKU V1 del gateway applicazione.

Abilitare il componente aggiuntivo AGIC nel cluster del servizio Azure Kubernetes esistente tramite l'interfaccia della riga di comando di Azure

Se si desidera continuare a usare l'interfaccia della riga di comando di Azure, è possibile continuare ad abilitare il componente aggiuntivo Controller in ingresso del gateway applicazione nel cluster del servizio Azure Kubernetes creato, ovvero myCluster, e specificare il componente aggiuntivo Controller in ingresso del gateway applicazione per usare il gateway applicazione esistente creato, ovvero myApplicationGateway.

appgwId=$(az network application-gateway show --name myApplicationGateway --resource-group myResourceGroup -o tsv --query "id") 
az aks enable-addons --name myCluster --resource-group myResourceGroup --addon ingress-appgw --appgw-id $appgwId

Importante

Quando si usa un gateway applicazione in un gruppo di risorse diverso rispetto al gruppo di risorse del cluster del servizio Azure Kubernetes, l'identità gestita ingressapplicationgateway-{AKSNAME} creata deve avere ruoli Collaboratore rete e Lettore impostati nel gruppo di risorse del gateway applicazione.

Eseguire il peering combinato delle due reti virtuali

Dal momento che il cluster del servizio Azure Kubernetes è stato distribuito nella propria rete virtuale e il gateway applicazione è stato distribuito in un'altra rete virtuale, sarà necessario eseguire il peering delle due reti virtuali per consentire il flusso del traffico dal gateway applicazione ai pod nel cluster. Per eseguire il peering delle due reti virtuali, è necessario eseguire per due volte il comando dell'interfaccia della riga di comando di Azure per garantire che la connessione sia bidirezionale. Il primo comando creerà una connessione di peering dalla rete virtuale del gateway applicazione alla rete virtuale del servizio Azure Kubernetes; il secondo comando creerà una connessione di peering nell'altra direzione.

nodeResourceGroup=$(az aks show --name myCluster --resource-group myResourceGroup -o tsv --query "nodeResourceGroup")
aksVnetName=$(az network vnet list --resource-group $nodeResourceGroup -o tsv --query "[0].name")

aksVnetId=$(az network vnet show --name $aksVnetName --resource-group $nodeResourceGroup -o tsv --query "id")
az network vnet peering create --name AppGWtoAKSVnetPeering --resource-group myResourceGroup --vnet-name myVnet --remote-vnet $aksVnetId --allow-vnet-access

appGWVnetId=$(az network vnet show --name myVnet --resource-group myResourceGroup -o tsv --query "id")
az network vnet peering create --name AKStoAppGWVnetPeering --resource-group $nodeResourceGroup --vnet-name $aksVnetName --remote-vnet $appGWVnetId --allow-vnet-access

Nota

Nel passaggio precedente "Distribuire un nuovo cluster del servizio Azure Kubernetes" è stato creato il servizio Azure Kubernetes con Azure CNI; nel caso in cui si disponga di un cluster del servizio Azure Kubenet esistente usando la modalità Kubenet, è necessario aggiornare la tabella di routing per aiutare i pacchetti destinati a un IP POD a raggiungere il nodo che ospita il pod. Un modo semplice per ottenere questo risultato consiste nell'associare la stessa tabella di routing creata dal servizio Azure Kubernetes alla subnet del gateway applicazione.

Distribuire un'applicazione di esempio con Controller in ingresso del gateway applicazione

Verrà ora distribuita un'applicazione di esempio nel cluster del servizio Azure Kubernetes creato che userà il componente aggiuntivo Controller in ingresso del gateway applicazione per il traffico in ingresso e connetterà il gateway applicazione al cluster del servizio Azure Kubernetes. Per prima cosa, ottenere le credenziali per il cluster del servizio Azure Kubernetes distribuito eseguendo il comando az aks get-credentials.

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

Ora che le credenziali per il cluster creato sono disponibili, eseguire il comando seguente per configurare un'applicazione di esempio che usa Controller in ingresso del gateway applicazione per il traffico in ingresso nel cluster. Controller in ingresso del gateway applicazione aggiornerà il gateway applicazione, configurato in precedenza con le regole di gestione corrispondenti, alla nuova applicazione di esempio distribuita.

kubectl apply -f https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml 

Verificare che l'applicazione sia raggiungibile

Ora che il gateway applicazione è configurato in modo da gestire il traffico indirizzato al cluster del servizio Azure Kubernetes, verificare che l'applicazione sia raggiungibile. Ottenere innanzitutto l'indirizzo IP dell'ingresso.

kubectl get ingress

Verificare che l'applicazione di esempio creata sia in esecuzione, visitando l'indirizzo IP del gateway applicazione ottenuto eseguendo il comando precedente o verificandolo con curl. Il recupero dell'aggiornamento del gateway applicazione può richiedere un minuto. Se il gateway applicazione si trova ancora nello stato "Aggiornamento" nel portale di Azure, attendere il completamento dell'operazione prima di provare a raggiungere l'indirizzo IP.

Pulire le risorse

Quando non sono più necessarie, eliminare tutte le risorse create in questa esercitazione eliminando i gruppi di risorse myResourceGroup e MC_myResourceGroup_myCluster_eastus:

az group delete --name myResourceGroup 
az group delete --name MC_myResourceGroup_myCluster_eastus

Passaggi successivi