Snabbstart: Skapa Application Gateway för containrar som hanteras av ALB-styrenheten

Den här guiden förutsätter att du följer distributionsstrategin för ALB-styrenheten, där alla Application Gateway for Containers-resurser hanteras av ALB-kontrollanten. Livscykeln bestäms av de resurser som definierats i Kubernetes. ALB-styrenheten skapar resursen Application Gateway for Containers när en anpassad ApplicationLoadBalancer-resurs definieras i klustret. Livscykeln för Application Gateway för containrar baseras på livscykeln för den anpassade resursen.

Förutsättningar

Se till att du först har distribuerat ALB-styrenheten till ditt Kubernetes-kluster. Se Snabbstart: Distribuera Application Gateway för containrar ALB-styrenhet om du inte redan har distribuerat ALB-styrenheten.

Förbereda ditt virtuella nätverk/undernät för Application Gateway för containrar

Om du inte har ett undernät tillgängligt med minst 250 tillgängliga IP-adresser och delegerats till resursen Application Gateway för containrar använder du följande steg för att skapa ett nytt undernät och aktivera delegering av undernät. Det nya undernätets adressutrymme kan inte överlappa några befintliga undernät i det virtuella nätverket.

Om du vill distribuera Application Gateway för containrar till det virtuella nätverket som innehåller AKS-klustret kör du följande kommando för att hitta och tilldela klustrets virtuella nätverk. Den här informationen används i nästa steg.

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

MC_RESOURCE_GROUP=$(az aks show --name $AKS_NAME --resource-group $RESOURCE_GROUP --query "nodeResourceGroup" -o tsv)
CLUSTER_SUBNET_ID=$(az vmss list --resource-group $MC_RESOURCE_GROUP --query '[0].virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].subnet.id' -o tsv)
read -d '' VNET_NAME VNET_RESOURCE_GROUP VNET_ID <<< $(az network vnet show --ids $CLUSTER_SUBNET_ID --query '[name, resourceGroup, id]' -o tsv)

Kör följande kommando för att skapa ett nytt undernät som innehåller minst 250 tillgängliga IP-adresser och aktivera delegering av undernät för application gateway för containrar-associationsresursen:

SUBNET_ADDRESS_PREFIX='<network address and prefix for an address space under the vnet that has at least 250 available addresses (/24 or larger subnet)>'
ALB_SUBNET_NAME='subnet-alb' # subnet name can be any non-reserved subnet name (i.e. GatewaySubnet, AzureFirewallSubnet, AzureBastionSubnet would all be invalid)
az network vnet subnet create \
  --resource-group $VNET_RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name $ALB_SUBNET_NAME \
  --address-prefixes $SUBNET_ADDRESS_PREFIX \
  --delegations 'Microsoft.ServiceNetworking/trafficControllers'
ALB_SUBNET_ID=$(az network vnet subnet show --name $ALB_SUBNET_NAME --resource-group $VNET_RESOURCE_GROUP --vnet-name $VNET_NAME --query '[id]' --output tsv)

Delegera behörigheter till hanterad identitet

ALB-styrenheten behöver kunna etablera nya Application Gateway for Containers-resurser och ansluta till det undernät som är avsett för application gateway för containrar-associationsresursen.

I det här exemplet delegerar vi rollen AppGW for Containers Configuration Manager till den resursgrupp som innehåller det hanterade klustret och delegerar rollen Nätverksdeltagare till det undernät som används av associationen Application Gateway for Containers, som innehåller behörigheten Microsoft.Network/virtualNetworks/subnets/join/action .

Om du vill kan du skapa och tilldela en anpassad roll med behörigheten Microsoft.Network/virtualNetworks/subnets/join/action för att eliminera andra behörigheter som ingår i rollen Nätverksdeltagare . Läs mer om att hantera undernätsbehörigheter.

IDENTITY_RESOURCE_NAME='azure-alb-identity'

MC_RESOURCE_GROUP=$(az aks show --name $AKS_NAME --resource-group $RESOURCE_GROUP --query "nodeResourceGroup" -otsv | tr -d '\r')

mcResourceGroupId=$(az group show --name $MC_RESOURCE_GROUP --query id -otsv)
principalId=$(az identity show -g $RESOURCE_GROUP -n $IDENTITY_RESOURCE_NAME --query principalId -otsv)

# Delegate AppGw for Containers Configuration Manager role to AKS Managed Cluster RG
az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $mcResourceGroupId --role "fbc52c3f-28ad-4303-a892-8a056630b8f1" 

# Delegate Network Contributor permission for join to association subnet
az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $ALB_SUBNET_ID --role "4d97b98b-1d4f-4787-a291-c67834d212e7" 

Skapa ApplicationLoadBalancer Kubernetes-resurs

  1. Definiera Kubernetes-namnområdet för ApplicationLoadBalancer-resursen
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
  name: alb-test-infra
EOF
  1. Definiera applicationloadbalancer-resursen och ange det undernäts-ID som application gatewayen för containrars associationsresurs ska distribueras till. Associationen upprättar anslutning från Application Gateway för containrar till det definierade undernätet (och anslutna nätverk i förekommande fall) för att kunna proxytrafik till en definierad serverdel.

Kommentar

När ALB-kontrollanten skapar Application Gateway för containrar-resurser i ARM använder den följande namngivningskonventioner för sina resurser:

  • alb-8 slumpmässigt genererade tecken> för att definiera Application Gateway for Containers-resursen<
  • as-8< slumpmässigt genererade tecken> för att definiera associationsresursen

Om du vill ändra namnet på de resurser som skapats i Azure kan du överväga att följa distributionsstrategin Bring Your Own.

Kör följande kommando för att skapa resursen och associationen för Application Gateway for Containers.

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: ApplicationLoadBalancer
metadata:
  name: alb-test
  namespace: alb-test-infra
spec:
  associations:
  - $ALB_SUBNET_ID
EOF

Verifiera skapandet av Resurser för Application Gateway för containrar

När ApplicationLoadBalancer-resursen har skapats kan du spåra distributionsförloppet för Application Gateway for Containers-resurserna. Distributionen övergår från InProgress till programmerat tillstånd när etableringen har slutförts. Det kan ta 5–6 minuter innan resurserna för Application Gateway för containrar skapas.

Du kan kontrollera statusen för ApplicationLoadBalancer-resursen genom att köra följande kommando:

kubectl get applicationloadbalancer alb-test -n alb-test-infra -o yaml -w

Exempel på utdata från en lyckad etablering av Application Gateway for Containers-resursen från Kubernetes.

status:
  conditions:
  - lastTransitionTime: "2023-06-19T21:03:29Z"
    message: Valid Application Gateway for Containers resource
    observedGeneration: 1
    reason: Accepted
    status: "True"
    type: Accepted
  - lastTransitionTime: "2023-06-19T21:03:29Z"
    message: alb-id=/subscriptions/xxx/resourceGroups/yyy/providers/Microsoft.ServiceNetworking/trafficControllers/alb-zzz
    observedGeneration: 1
    reason: Ready
    status: "True"
    type: Deployment

Nästa steg

Grattis, du har installerat ALB Controller i klustret och distribuerat Application Gateway for Containers-resurser i Azure!

Prova några av guiderna för att distribuera ett exempelprogram, som visar några av Application Gateway för containerns lastbalanseringskoncept.