Mulai Cepat: Membuat Application Gateway untuk Kontainer yang dikelola oleh Pengontrol ALB

Panduan ini mengasumsikan Anda mengikuti strategi penyebaran pengontrolALB yang dikelola oleh, di mana semua sumber daya Application Gateway for Containers dikelola oleh pengontrol ALB. Siklus hidup ditentukan sumber daya yang ditentukan dalam Kubernetes. Pengontrol ALB membuat sumber daya Application Gateway for Containers saat sumber daya kustom ApplicationLoadBalancer ditentukan pada kluster. Siklus hidup Application Gateway for Containers didasarkan pada siklus hidup sumber daya kustom.

Prasyarat

Pastikan Anda telah terlebih dahulu menyebarkan Pengontrol ALB ke kluster Kubernetes Anda. Lihat Mulai Cepat: Menyebarkan Application Gateway untuk Pengontrol ALB Kontainer jika Anda belum menyebarkan Pengontrol ALB.

Menyiapkan jaringan virtual / subnet Anda untuk Application Gateway untuk Kontainer

Jika Anda tidak memiliki subnet yang tersedia dengan setidaknya 250 alamat IP yang tersedia dan didelegasikan ke sumber daya Application Gateway for Containers, gunakan langkah-langkah berikut untuk membuat subnet baru dan mengaktifkan delegasi subnet. Ruang alamat subnet baru tidak dapat tumpang tindih dengan subnet yang ada di VNet.

Jika Anda ingin menyebarkan Application Gateway untuk Kontainer ke jaringan virtual yang berisi kluster AKS Anda, jalankan perintah berikut untuk menemukan dan menetapkan jaringan virtual kluster. Informasi ini digunakan pada langkah berikutnya.

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)

Jalankan perintah berikut untuk membuat subnet baru yang berisi setidaknya 250 alamat IP yang tersedia dan aktifkan delegasi subnet untuk sumber daya asosiasi 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)

Mendelegasikan izin ke identitas terkelola

Pengontrol ALB membutuhkan kemampuan untuk menyediakan Application Gateway baru untuk sumber daya Kontainer dan untuk bergabung dengan subnet yang ditujukan untuk sumber daya asosiasi Application Gateway for Containers.

Dalam contoh ini, kami mendelegasikan peran AppGW untuk Containers Configuration Manager ke grup sumber daya yang berisi kluster terkelola dan mendelegasikan peran Kontributor Jaringan ke subnet yang digunakan oleh subnet asosiasi Application Gateway for Containers, yang berisi izin Microsoft.Network/virtualNetworks/subnets/join/action .

Jika diinginkan, Anda dapat membuat dan menetapkan peran kustom dengan izin Microsoft.Network/virtualNetworks/subnets/join/action untuk menghilangkan izin lain yang terkandung dalam peran Kontributor Jaringan. Pelajari selengkapnya tentang mengelola izin subnet.

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" 

Membuat sumber daya ApplicationLoadBalancer Kubernetes

  1. Tentukan namespace Layanan Kubernetes untuk sumber daya ApplicationLoadBalancer
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
  name: alb-test-infra
EOF
  1. Tentukan sumber daya ApplicationLoadBalancer, menentukan ID subnet yang harus disebarkan oleh sumber daya asosiasi Application Gateway for Containers. Asosiasi menetapkan konektivitas dari Application Gateway untuk Kontainer ke subnet yang ditentukan (dan jaringan yang terhubung jika berlaku) untuk dapat mem-proksi lalu lintas ke backend yang ditentukan.

Catatan

Saat Pengontrol ALB membuat Application Gateway untuk sumber daya Kontainer di ARM, pengontrol tersebut akan menggunakan konvensi penamaan berikut untuk sumber dayanya:

  • alb-8< karakter> yang dihasilkan secara acak untuk menentukan Application Gateway untuk sumber daya Kontainer
  • as-8< karakter> yang dihasilkan secara acak untuk menentukan sumber daya asosiasi

Jika Anda ingin mengubah nama sumber daya yang dibuat di Azure, pertimbangkan untuk mengikuti strategi bawa penyebaran Anda sendiri.

Jalankan perintah berikut untuk membuat Application Gateway untuk sumber daya dan asosiasi Kontainer.

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

Memvalidasi pembuatan Application Gateway untuk sumber daya Kontainer

Setelah sumber daya ApplicationLoadBalancer dibuat, Anda dapat melacak kemajuan penyebaran Application Gateway untuk sumber daya Kontainer. Transisi penyebaran dari InProgress ke status Terprogram saat provisi telah selesai. Dibutuhkan waktu 5-6 menit agar Application Gateway untuk sumber daya Kontainer dibuat.

Anda dapat memeriksa status sumber daya ApplicationLoadBalancer dengan menjalankan perintah berikut:

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

Contoh output dari penyediaan sumber daya Application Gateway for Containers yang berhasil dari 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

Langkah berikutnya

Selamat, Anda telah menginstal Pengontrol ALB pada kluster Anda dan menyebarkan Application Gateway untuk sumber daya Kontainer di Azure!

Cobalah beberapa panduan cara untuk menyebarkan aplikasi sampel, yang menunjukkan beberapa konsep penyeimbangan beban Application Gateway for Container.