Szybki start: tworzenie usługi Application Gateway dla kontenerów zarządzanych przez kontroler usługi ALB

W tym przewodniku założono, że obserwujesz strategię wdrażania kontrolerausługi ALB, w której wszystkie zasoby usługi Application Gateway for Containers są zarządzane przez kontroler usługi ALB. Cykl życia określa zasoby zdefiniowane w rozwiązaniu Kubernetes. Kontroler usługi ALB tworzy zasób usługi Application Gateway for Containers, gdy w klastrze jest zdefiniowany zasób niestandardowy ApplicationLoadBalancer . Cykl życia usługi Application Gateway for Containers jest oparty na cyklu życia zasobu niestandardowego.

Wymagania wstępne

Upewnij się, że kontroler usługi ALB został wdrożony w klastrze Kubernetes. Zobacz Szybki start: wdrażanie usługi Application Gateway dla kontenerów kontrolera ALB, jeśli kontroler usługi ALB nie został jeszcze wdrożony.

Przygotowywanie sieci wirtualnej/podsieci dla usługi Application Gateway dla kontenerów

Jeśli nie masz podsieci dostępnej z co najmniej 250 dostępnymi adresami IP i delegowanymi do zasobu usługi Application Gateway for Containers, wykonaj następujące kroki, aby utworzyć nową podsieć i włączyć delegowanie podsieci. Nowa przestrzeń adresowa podsieci nie może nakładać się na żadne istniejące podsieci w sieci wirtualnej.

Jeśli chcesz wdrożyć usługę Application Gateway for Containers w sieci wirtualnej zawierającej klaster usługi AKS, uruchom następujące polecenie, aby znaleźć i przypisać sieć wirtualną klastra. Te informacje są używane w następnym 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)

Uruchom następujące polecenie, aby utworzyć nową podsieć zawierającą co najmniej 250 dostępnych adresów IP i włączyć delegowanie podsieci dla zasobu skojarzenia usługi 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)

Delegowanie uprawnień do tożsamości zarządzanej

Kontroler usługi ALB musi mieć możliwość aprowizacji nowych zasobów usługi Application Gateway dla kontenerów i dołączenia do podsieci przeznaczonej dla zasobu skojarzenia usługi Application Gateway for Containers.

W tym przykładzie delegujemy rolę AppGW for Containers Configuration Manager do grupy zasobów zawierającej klaster zarządzany i delegujemy rolę Współautor sieci do podsieci używanej przez podsieć skojarzenia usługi Application Gateway for Containers, która zawiera uprawnienie Microsoft.Network/virtualNetworks/subnetworks/join/action .

W razie potrzeby możesz utworzyć i przypisać rolę niestandardową za pomocą uprawnienia Microsoft.Network/virtualNetworks/subnets/join/action , aby wyeliminować inne uprawnienia zawarte w roli Współautor sieci. Dowiedz się więcej o zarządzaniu uprawnieniami podsieci.

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" 

Tworzenie zasobu Platformy Kubernetes applicationLoadBalancer

  1. Definiowanie przestrzeni nazw Kubernetes dla zasobu ApplicationLoadBalancer
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
  name: alb-test-infra
EOF
  1. Zdefiniuj zasób ApplicationLoadBalancer , określając identyfikator podsieci, w ramach których ma zostać wdrożony zasób skojarzenia usługi Application Gateway for Containers. Skojarzenie ustanawia łączność z usługi Application Gateway dla kontenerów do zdefiniowanej podsieci (i połączonych sieci, jeśli ma to zastosowanie), aby umożliwić ruch serwera proxy do zdefiniowanego zaplecza.

Uwaga

Gdy kontroler usługi ALB tworzy bramę Application Gateway dla zasobów kontenerów w usłudze ARM, użyje następujących konwencji nazewnictwa dla swoich zasobów:

  • alb-8< wygenerowano losowo znaki> , aby zdefiniować zasób usługi Application Gateway dla kontenerów
  • <jako 8 losowo wygenerowanych znaków> w celu zdefiniowania zasobu skojarzenia

Jeśli chcesz zmienić nazwę zasobów utworzonych na platformie Azure, rozważ zastosowanie własnej strategii wdrażania.

Uruchom następujące polecenie, aby utworzyć zasób i skojarzenie usługi 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

Weryfikowanie tworzenia zasobów usługi Application Gateway for Containers

Po utworzeniu zasobu ApplicationLoadBalancer można śledzić postęp wdrażania zasobów usługi Application Gateway for Containers. Wdrożenie przechodzi z inProgress do stanu Zaprogramowane po zakończeniu aprowizacji. Utworzenie zasobów usługi Application Gateway for Containers może potrwać od 5 do 6 minut.

Stan zasobu ApplicationLoadBalancer można sprawdzić, uruchamiając następujące polecenie:

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

Przykładowe dane wyjściowe pomyślnej aprowizacji zasobu usługi Application Gateway for Containers z platformy 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

Następne kroki

Gratulacje, kontroler usługi ALB został zainstalowany w klastrze i wdrożono zasoby usługi Application Gateway for Containers na platformie Azure!

Wypróbuj kilka przewodników z instrukcjami, aby wdrożyć przykładową aplikację, przedstawiając niektóre pojęcia dotyczące równoważenia obciążenia w usłudze Application Gateway dla kontenera.