Snabbstart: Distribuera Application Gateway för containers ALB-kontrollant med AKS-tillägg

ALB-kontrollanten ansvarar för att översätta gateway-API och ingress-API-konfiguration i Kubernetes till belastningsutjämningsregler i Application Gateway för containrar. Följande guide går igenom de steg som krävs för att aktivera både AKS-hanterade gateway-API:et och Application Gateway for Containers ALB Controller-tillägg i ett nytt eller befintligt AKS-kluster (Azure Kubernetes Service).

Diagram som visar trafik från Internet som strömmar in i Application Gateway för containrar och skickas till backend-poddar i AKS; installeras med hjälp av ett AKS-tillägg.

Förutsättningar

Du måste utföra följande uppgifter innan du aktiverar ALB-kontrollanttillägget i klustret:

  1. Förbered din Azure-prenumeration och din az-cli klient.

    # Sign in to your Azure subscription.
    SUBSCRIPTION_ID='<your subscription id>'
    az login
    az account set --subscription $SUBSCRIPTION_ID
    
    # Register required resource providers on Azure.
    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.Network
    az provider register --namespace Microsoft.NetworkFunction
    az provider register --namespace Microsoft.ServiceNetworking
    
    # Install Azure CLI extensions.
    az extension add --name alb
    az extension add --name aks-preview 
    
  2. Registrera tilläggsfunktionen

    Använd Azure CLI för att registrera tilläggsfunktionen.

    # Register required preview features
    az feature register --namespace "Microsoft.ContainerService" --name "ManagedGatewayAPIPreview"
    az feature register --namespace "Microsoft.ContainerService" --name "ApplicationLoadBalancerPreview"
    

    Important

    Application Gateway for Containers AKS-tillägget är för närvarande i förhandsvisning.
    Se Tilläggsvillkor för användning av Microsoft Azure-förhandsversioner för juridiska villkor som gäller för Azure-funktioner som är i beta, förhandsvisning eller på annat sätt ännu inte släppta för allmän tillgänglighet.

Konfigurera ett AKS-kluster med AKS-tillägget

AKS-tillägget kan aktiveras i nya eller befintliga kluster.

Följande KRAV för AKS-kluster krävs för lyckad etablering av tillägget:

Nytt kluster

Använd följande kommandon för att skapa ett nytt AKS-kluster med Azure CNI, arbetsbelastningsidentitet aktiverad, gateway-API-tillägg och tillägget Application Gateway for Containers aktiverat.

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'
LOCATION='northeurope'
VM_SIZE='<the size of the vm in AKS>' # The size needs to be available in your location

az group create --name $RESOURCE_GROUP --location $LOCATION
az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $AKS_NAME \
    --location $LOCATION \
    --node-vm-size $VM_SIZE \
    --network-plugin azure \
    --enable-oidc-issuer \
    --enable-workload-identity \
    --enable-gateway-api \
    --enable-application-load-balancer \
    --generate-ssh-key

Anmärkning

Anmärkning

Befintligt kluster

Lägga till krav i ett befintligt kluster

Om du använder ett befintligt kluster ska du aktivera stöd för arbetsbelastningsidentitet i ditt AKS-kluster. Arbetsbelastningsidentiteter kan aktiveras via följande kommandon:

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'
az aks update -g $RESOURCE_GROUP -n $AKS_NAME --enable-oidc-issuer --enable-workload-identity --no-wait

Installera ALB Controller-tillägg

Med ett befintligt kluster kan du aktivera tilläggen Gateway API och Application Gateway for Containers med följande kommandon:

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'

# Update the AKS cluster
az aks update --name ${AKS_NAME} --resource-group ${RESOURCE_GROUP} --enable-gateway-api --enable-application-load-balancer

Verifiera installationen av ALB Controller

Både det nya klustret och befintliga klustervägar använder samma verifieringskontroller. Efter att tillägget är aktiverat, gör följande kontroller oavsett vilken väg du använde.

Verifiera ALB-kontrollerpoddar

Kontrollera att ALB Controller-poddarna körs i kube-system namnområdet:

kubectl get pods -n kube-system | grep alb-controller

Du bör se två alb-controller poddar i Running tillståndet:

NAMN KLAR STATUS OMSTARTER ÅLDER
alb-controller-6648c5d5c-sdd9t 1/1 Springa 0 4 dagar 6 timmar
alb-controller-6648c5d5c-au234 1/1 Springa 0 4 dagar 6 timmar

Verifiera GatewayClass

Kontrollera att GatewayClass azure-alb-external är installerat i klustret:

kubectl get gatewayclass azure-alb-external -o yaml

Du bör se att GatewayClass har ett villkor som läser Valid GatewayClass. Det här villkoret anger att en standard-GatewayClass har konfigurerats och att alla gatewayresurser som refererar till denna GatewayClass hanteras av ALB-styrenheten.

apiVersion: gateway.networking.k8s.io/v1beta1
kind: GatewayClass
metadata:
  creationTimestamp: "2023-07-31T13:07:00Z"
  generation: 1
  name: azure-alb-external
  resourceVersion: "64270"
  uid: 6c1443af-63e6-4b79-952f-6c3af1f1c41e
spec:
  controllerName: alb.networking.azure.io/alb-controller
status:
  conditions:
    - lastTransitionTime: "2023-07-31T13:07:23Z"
    message: Valid GatewayClass
    observedGeneration: 1
    reason: Accepted
    status: "True"
    type: Accepted

Verifiera tilläggsresurser i Azure-portalen

Gå till MC_ resursgruppen (nod) för ditt AKS-kluster. Du bör se följande resurser som skapats av tillägget:

Hanterad identitet

En identitet med namnet applicationloadbalancer-<cluster-name> skapas med följande rolltilldelningar:

Role Omfång
Nätverksdeltagare MC-resursgrupp
Konfigurationshanteraren för AppGw for Containers MC-resursgrupp
Läsare MC-resursgrupp

Identiteten applicationloadbalancer-<cluster-name> har en federerad identitetsautentiseringsuppgift konfigurerad med följande egenskaper:

  • Namn: aksfic
  • Namnrymd: kube-system
  • Tjänstkonto: alb-controller-sa

Varning

Det går inte att ändra identiteten eller namnområdet när integrering med tillägget etableras. Om du vill anpassa distributionen kan du överväga att distribuera med helm.

Subnet

När tillägget är aktiverat i ett AKS-kluster med hjälp av alternativet AKS-hanterat virtuellt nätverk skapas automatiskt ett undernät med namnet aks-appgateway med delegering aktiverat för Microsoft.ServiceNetworking/TrafficController.

Nästa steg

Nu när du framgångsrikt installerat en ALB-kontroller på ditt kluster kan du provisionera Application Gateway för containerresurser i Azure.

Nästa steg är att koppla din ALB-kontroller till Application Gateway för containrar. Hur du skapar den här länken beror på distributionsstrategin.

Det finns två distributionsstrategier för hantering av Application Gateway for Containers:

  • Byo-distribution (Bring Your Own): I den här distributionsstrategin förutsätts distribution och livscykel för Application Gateway for Containers-resursen, associationsresursen och klientdelsresursen via Azure Portal, CLI, PowerShell, Terraform osv. och refereras till i konfigurationen i Kubernetes.
  • Hanteras av ALB-styrenhet: I den här distributionsstrategin ansvarar ALB-styrenheten som distribueras i Kubernetes för livscykeln för Application Gateway for Containers-resursen och dess underresurser. ALB-styrenheten skapar en Application Gateway for Containers-resurs när en anpassad ApplicationLoadBalancer-resurs definieras i klustret. Tjänstens livscykel baseras på livscykeln för den anpassade resursen.

Exempelscenarier att prova

Avinstallera Application Gateway för containrar och ALB-styrenhet

Om du vill avinstallera ALB-kontrollanttillägget utför du följande steg.

Inaktivera ALB-kontrollertillägget

Inaktivera ALB-kontrollanttillägget i klustret:

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'

# Update the AKS cluster
az aks update --name ${AKS_NAME} --resource-group ${RESOURCE_GROUP} --disable-gateway-api --disable-application-load-balancer

Ta bort resursgruppen

Om du vill rensa alla resurser helt, inklusive Application Gateway för containrar, tar du bort resursgruppen:

az group delete --resource-group $RESOURCE_GROUP