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 kontrolera usł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.
- Nowa podsieć w zarządzanej sieci wirtualnej usługi AKS
- Nowa podsieć w sieci wirtualnej niezarządzanej przez usługę AKS
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
- Definiowanie przestrzeni nazw Kubernetes dla zasobu ApplicationLoadBalancer
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
name: alb-test-infra
EOF
- 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.