Självstudie: Aktivera tillägg för ingresskontrollant för application gateway för ett befintligt AKS-kluster med en befintlig programgateway

Du kan använda Azure CLI eller portalen för att aktivera agic-tillägget (application gateway ingress controller) för ett befintligt AkS-kluster (Azure Kubernetes Services). I den här självstudien får du lära dig hur du använder AGIC-tillägg för att exponera ditt Kubernetes-program i ett befintligt AKS-kluster via en befintlig programgateway som distribueras i separata virtuella nätverk. Du börjar med att skapa ett AKS-kluster i ett virtuellt nätverk och en programgateway i ett separat virtuellt nätverk för att simulera befintliga resurser. Sedan aktiverar du AGIC-tillägget, peerkopplar de två virtuella nätverken och distribuerar ett exempelprogram som exponeras via programgatewayen med hjälp av AGIC-tillägget. Om du aktiverar AGIC-tillägget för en befintlig programgateway och ett befintligt AKS-kluster i samma virtuella nätverk kan du hoppa över peeringsteget nedan. Tillägget ger ett mycket snabbare sätt att distribuera AGIC för ditt AKS-kluster än via Helm och erbjuder även en fullständigt hanterad upplevelse.

I den här självstudien lär du dig att:

  • Skapa en resursgrupp
  • Skapa ett nytt AKS-kluster
  • Skapa en ny programgateway
  • Aktivera AGIC-tillägget i det befintliga AKS-klustret via Azure CLI
  • Aktivera AGIC-tillägget i det befintliga AKS-klustret via Azure-portalen
  • Peer-koppla det virtuella nätverket för programgatewayen till det virtuella AKS-klustrets virtuella nätverk
  • Distribuera ett exempelprogram med AGIC för ingress i AKS-klustret
  • Kontrollera att programmet kan nås via application gateway

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Förutsättningar

Skapa en resursgrupp

I Azure allokerar du relaterade resurser till en resursgrupp. Skapa en resursgrupp med hjälp av az group create. I följande exempel skapas en resursgrupp med namnet myResourceGroup på platsen USA , östra (region):

az group create --name myResourceGroup --location eastus

Distribuera ett nytt AKS-kluster

Nu ska du distribuera ett nytt AKS-kluster för att simulera att ha ett befintligt AKS-kluster som du vill aktivera AGIC-tillägget för.

I följande exempel distribuerar du ett nytt AKS-kluster med namnet myCluster med Azure CNI och hanterade identiteter i resursgruppen som du skapade, myResourceGroup.

az aks create -n myCluster -g myResourceGroup --network-plugin azure --enable-managed-identity --generate-ssh-keys

Mer information om hur du konfigurerar fler parametrar för kommandot ovan finns i az aks create.

Kommentar

En nodresursgrupp skapas med namnet MC_resource-group-name_cluster-name_location.

Distribuera en ny programgateway

Nu ska du distribuera en ny programgateway för att simulera att ha en befintlig programgateway som du vill använda för att belastningsutjämningstrafik till DITT AKS-kluster, myCluster. Namnet på programgatewayen är myApplicationGateway, men du måste först skapa en offentlig IP-resurs med namnet myPublicIp och ett nytt virtuellt nätverk med namnet myVnet med adressutrymmet 10.0.0.0/16 och ett undernät med adressutrymmet 10.0.0.0/24 med namnet mySubnet och distribuera din programgateway i mySubnet med myPublicIp.

Varning

När du använder ett AKS-kluster och en programgateway i separata virtuella nätverk får adressutrymmena för de två virtuella nätverken inte överlappa varandra. Standardadressutrymmet som ett AKS-kluster distribuerar i är 10.224.0.0/12.

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

Kommentar

Tillägget application gateway ingress controller (AGIC) stöder endast application gateway v2 SKU:er (Standard och WAF) och inte programgatewayen v1 SKU:er.

Aktivera AGIC-tillägget i ett befintligt AKS-kluster via Azure CLI

Om du vill fortsätta använda Azure CLI kan du fortsätta att aktivera AGIC-tillägget i AKS-klustret som du skapade, myCluster, och ange AGIC-tillägget för att använda den befintliga programgatewayen som du skapade, myApplicationGateway.

appgwId=$(az network application-gateway show -n myApplicationGateway -g myResourceGroup -o tsv --query "id") 
az aks enable-addons -n myCluster -g myResourceGroup -a ingress-appgw --appgw-id $appgwId

Viktigt!

När du använder en programgateway i en annan resursgrupp än AKS-klusterresursgruppen måste den hanterade identiteten ingressapplicationgateway-{AKSNAME} som skapas ha roller som nätverksdeltagare och läsare i resursgruppen för programgatewayen.

Peer-koppla ihop de två virtuella nätverken

Eftersom du distribuerade AKS-klustret i ett eget virtuellt nätverk och Programgatewayen i ett annat virtuellt nätverk måste du peerkoppla de två virtuella nätverken för att trafiken ska kunna flöda från Programgatewayen till poddarna i klustret. Peering av de två virtuella nätverken kräver att du kör Azure CLI-kommandot två separata gånger för att säkerställa att anslutningen är dubbelriktad. Det första kommandot skapar en peering-anslutning från det virtuella nätverket application gateway till det virtuella AKS-nätverket. det andra kommandot skapar en peering-anslutning i den andra riktningen.

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

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

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

Kommentar

I steget "Distribuera ett nytt AKS-kluster" ovan skapade vi AKS med Azure CNI. Om du har ett befintligt AKS-kluster med Kubenet-läge behöver du uppdatera routningstabellen för att hjälpa paketen som är avsedda för en POD IP-adress att nå noden som är värd för podden. Ett enkelt sätt att uppnå detta är genom att associera samma routningstabell som skapats av AKS till Application Gateways undernät.

Distribuera ett exempelprogram med AGIC

Nu ska du distribuera ett exempelprogram till aks-klustret som du skapade och som ska använda AGIC-tillägget för ingress och ansluta programgatewayen till AKS-klustret. Först får du autentiseringsuppgifter till DET AKS-kluster som du distribuerade genom att az aks get-credentials köra kommandot .

az aks get-credentials -n myCluster -g myResourceGroup

När du har autentiseringsuppgifterna för klustret som du skapade kör du följande kommando för att konfigurera ett exempelprogram som använder AGIC för ingress till klustret. AGIC uppdaterar programgatewayen som du konfigurerade tidigare med motsvarande routningsregler till det nya exempelprogrammet som du distribuerade.

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

Kontrollera att programmet kan nås

Nu när programgatewayen har konfigurerats för att hantera trafik till AKS-klustret ska vi kontrollera att programmet kan nås. Du får först IP-adressen för ingressen.

kubectl get ingress

Kontrollera att exempelprogrammet som du skapade är igång genom att antingen besöka IP-adressen för programgatewayen som du fick från att köra kommandot ovan eller kontrollera med curl. Det kan ta en minut för programgatewayen att hämta uppdateringen, så om programgatewayen fortfarande är i tillståndet "Uppdatera" på Azure-portalen låter du den slutföras innan du försöker nå IP-adressen.

Rensa resurser

När de inte längre behövs tar du bort alla resurser som skapats i den här självstudien genom att ta bort myResourceGroup och MC_myResourceGroup_myCluster_eastus resursgrupper:

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

Nästa steg