Hızlı Başlangıç: ALB Denetleyicisi tarafından yönetilen Kapsayıcılar için Application Gateway oluşturma

Bu kılavuz, tüm Kapsayıcılar için Application Gateway kaynaklarının ALB denetleyicisi tarafından yönetildiği ALB denetleyicidağıtım stratejisini takip ettiğinizi varsayar. Yaşam döngüsü, Kubernetes'te tanımlanan kaynaklar tarafından belirlenir. ALB Denetleyicisi, kümede bir ApplicationLoadBalancer özel kaynağı tanımlandığında Kapsayıcılar için Application Gateway kaynağını oluşturur. Kapsayıcılar için Application Gateway yaşam döngüsü, özel kaynağın yaşam döngüsünü temel alır.

Prerequisites

İlk olarak Kubernetes kümenize ALB Denetleyicisi dağıttığınızdan emin olun. ALB Denetleyicisini henüz dağıtmadıysanız Eklenti veya Helm için ALB Denetleyicisi hızlı başlangıç kılavuzuna bakın.

Sanal ağınızı ve alt ağınızı Kapsayıcılar İçin Application Gateway'e hazırlama

En az 250 kullanılabilir IP adresi içeren bir alt ağınız yoksa ve Kapsayıcılar için Application Gateway kaynağına temsilci olarak atandıysanız, yeni bir alt ağ oluşturmak ve alt ağ temsilcisini etkinleştirmek için aşağıdaki adımları kullanın. Yeni alt ağ adres alanı, VNet'teki mevcut alt ağlarla çakışamaz.

Kapsayıcılar için Application Gateway'i AKS kümenizi içeren sanal ağa dağıtmak istiyorsanız, kümenin sanal ağını bulmak ve atamak için aşağıdaki komutu çalıştırın. Bu bilgiler sonraki adımda kullanılır.

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)

En az 250 kullanılabilir IP adresi içeren yeni bir alt ağ oluşturmak ve Kapsayıcılar için Application Gateway ilişkilendirme kaynağı için alt ağ temsilcisini etkinleştirmek için aşağıdaki komutu çalıştırın:

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)

Yönetilen kimliğe yetkileri devretmek

ALB Denetleyicisi'nin Kapsayıcılar için yeni Application Gateway kaynakları sağlama ve Kapsayıcılar için Application Gateway ilişkilendirme kaynağına yönelik alt ağa katılma özelliğine sahip olması gerekir.

Bu örnekte, Kapsayıcılar için AppGW Yapılandırma Yöneticisi rolünü yönetilen kümeyi içeren kaynak grubuna ve Ağ Katkıda Bulunanı rolünü Microsoft.Network/virtualNetworks/subnets/join/action iznini içeren Kapsayıcılar için Application Gateway ilişkilendirme alt ağı tarafından kullanılan alt ağa devredeceğiz.

İsterseniz, Ağ Katkıda Bulunanı rolünde yer alan diğer izinleri ortadan kaldırmak için Microsoft.Network/virtualNetworks/subnets/join/action izniyle özel bir rol oluşturabilir ve atayabilirsiniz. Alt ağ izinlerini yönetme hakkında daha fazla bilgi edinin.

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" 

Note

Kimlik Eklenti aracılığıyla oluşturulduğunda, kimliğin adı aslında applicationloadbalancer-<cluster-name>'dir. Ayrıca AppGW for Containers Yapılandırma Yöneticisi rolü zaten atanmış.

ApplicationLoadBalancer Kubernetes kaynağı oluşturma

  1. ApplicationLoadBalancer kaynağı için Kubernetes ad alanını tanımlama
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
  name: alb-test-infra
EOF
  1. ApplicationLoadBalancer kaynağını, Kapsayıcılar için Application Gateway ilişkilendirme kaynağının hangi alt ağa dağıtılacağını belirleyecek olan alt ağ kimliğini belirtmek suretiyle tanımlayın. Kapsayıcılar için Application Gateway'den tanımlanan alt ağa (ve uygun olduğunda bağlı ağlara) bağlantı kurma, trafiği tanımlı bir arka uca yönlendirmek için ara sunucu olarak kullanılmasını mümkün kılar.

Note

ALB Denetleyicisi ARM'de Kapsayıcılar için Application Gateway kaynaklarını oluşturduğunda kaynakları için aşağıdaki adlandırma kurallarını kullanır:

  • Kapsayıcılar için Application Gateway kaynağını tanımlamak için rastgele oluşturulan alb-8< karakterleri>
  • <ilişkilendirme kaynağını tanımlamak için rastgele oluşturulan 8 karakter> olarak

Azure'da oluşturulan kaynakların adını değiştirmek isterseniz Kendi dağıtım stratejinizi getirin'i izleyin.

Kapsayıcılar için Application Gateway kaynağını ve ilişkilendirmesini oluşturmak için aşağıdaki komutu çalıştırın.

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

Kapsayıcılar için Application Gateway kaynaklarının oluşturulmasını doğrulama

ApplicationLoadBalancer kaynağı oluşturulduktan sonra Kapsayıcılar için Application Gateway kaynaklarının dağıtım ilerleme durumunu izleyebilirsiniz. Dağıtım, sağlama tamamlandığında InProgress durumundan Programlanmış durumuna geçer. Kapsayıcılar için Application Gateway kaynaklarının oluşturulması 5-6 dakika sürebilir.

Aşağıdaki komutu çalıştırarak ApplicationLoadBalancer kaynağının durumunu de kontrol edebilirsiniz:

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

Kubernetes'ten Kapsayıcılar için Application Gateway kaynağının başarıyla sağlanmasının örnek çıktısı.

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

Sonraki Adımlar

Tebrikler, kümenize ALB Denetleyicisi yüklediniz ve Azure'da Kapsayıcılar için Application Gateway kaynaklarını dağıttınız!

Application Gateway for Container’ın yük dengeleme kavramlarını gösteren bazı örnek uygulamaları dağıtarak, birkaç nasıl yapılır kılavuzu deneyin.