Rychlý start: Vytvoření služby Application Gateway pro kontejnery spravované kontrolerem ALB

Tato příručka předpokládá, že sledujete strategii nasazení kontroleru ALB, kde všechny prostředky Application Gateway pro kontejnery spravuje kontroler ALB. Životní cyklus se určuje prostředky definované v Kubernetes. Kontroler ALB vytvoří prostředek Application Gateway for Containers při definování vlastního prostředku ApplicationLoadBalancer v clusteru. Životní cyklus služby Application Gateway pro kontejnery vychází z životního cyklu vlastního prostředku.

Požadavky

Ujistěte se, že jste nejprve nasadili kontroler ALB do clusteru Kubernetes. Viz Rychlý start: Nasazení služby Application Gateway pro kontejnery ALB Controller , pokud jste ještě nenasadili kontroler ALB.

Příprava virtuální sítě nebo podsítě pro službu Application Gateway pro kontejnery

Pokud nemáte k dispozici podsíť s alespoň 250 dostupnými IP adresami a delegujete ji do prostředku služby Application Gateway for Containers, pomocí následujícího postupu vytvořte novou podsíť a povolte delegování podsítě. Nový adresní prostor podsítě nemůže překrývat žádné existující podsítě ve virtuální síti.

Pokud chcete nasadit službu Application Gateway pro kontejnery do virtuální sítě obsahující váš cluster AKS, spusťte následující příkaz a vyhledejte a přiřaďte virtuální síť clusteru. Tyto informace se používají v dalším kroku.

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)

Spuštěním následujícího příkazu vytvořte novou podsíť obsahující alespoň 250 dostupných IP adres a povolte delegování podsítě pro prostředek přidružení služby Application Gateway for Containers:

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)

Delegování oprávnění na spravovanou identitu

Kontroler ALB potřebuje možnost zřídit novou službu Application Gateway pro prostředky kontejnerů a připojit se k podsíti určené pro prostředek přidružení služby Application Gateway for Containers.

V tomto příkladu delegujeme roli AppGW for Containers Configuration Manager na skupinu prostředků obsahující spravovaný cluster a delegujeme roli Přispěvatel sítě do podsítě používané podsítí přidružením služby Application Gateway pro kontejnery, která obsahuje oprávnění Microsoft.Network/virtualNetworks/subnets/join/action .

V případě potřeby můžete vytvořit a přiřadit vlastní roli s oprávněním Microsoft.Network/virtualNetworks/subnets/join/action k odstranění dalších oprávnění obsažených v roli Přispěvatel sítě. Přečtěte si další informace o správě oprávnění podsítě.

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" 

Vytvoření prostředku Kubernetes ApplicationLoadBalancer

  1. Definování oboru názvů Kubernetes pro prostředek ApplicationLoadBalancer
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
  name: alb-test-infra
EOF
  1. Definujte prostředek ApplicationLoadBalancer a zadejte ID podsítě, do které by se měl nasadit prostředek přidružení služby Application Gateway for Containers. Přidružení vytvoří připojení ze služby Application Gateway pro kontejnery k definované podsíti (a případně připojeným sítím), aby bylo možné provoz proxy do definovaného back-endu.

Poznámka:

Když kontroler ALB vytvoří prostředky Application Gateway pro kontejnery v ARM, použije pro své prostředky následující zásady vytváření názvů:

  • alb-8< náhodně vygenerované znaky> pro definování prostředku služby Application Gateway for Containers
  • náhodně vygenerované znaky> as-8< pro definování prostředku přidružení

Pokud chcete změnit název prostředků vytvořených v Azure, zvažte použití vlastní strategie nasazení.

Spuštěním následujícího příkazu vytvořte prostředek a přidružení služby 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

Ověření vytvoření prostředků služby Application Gateway pro kontejnery

Po vytvoření prostředku ApplicationLoadBalancer můžete sledovat průběh nasazení prostředků služby Application Gateway for Containers. Nasazení se po dokončení zřizování přepočítá z InProgress na programovaný stav. Vytvoření prostředků služby Application Gateway pro kontejnery může trvat 5 až 6 minut.

Stav prostředku ApplicationLoadBalancer můžete zkontrolovat spuštěním následujícího příkazu:

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

Příklad výstupu úspěšného zřízení prostředku Služby Application Gateway pro kontejnery z 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

Další kroky

Blahopřejeme, nainstalovali jste do clusteru kontroler ALB a nasadili jste prostředky služby Application Gateway for Containers v Azure.

Vyzkoušejte několik návodů k nasazení ukázkové aplikace, která předvádí některé koncepty vyrovnávání zatížení služby Application Gateway pro kontejnery.