Hızlı Başlangıç: AKS Eklentisini kullanarak Kapsayıcılar için Uygulama Ağ Geçidi ALB Denetleyicisini dağıtma

ALB Denetleyicisi, Kubernetes içindeki Ağ Geçidi API'sini ve Giriş API'sini yapılandırmayı Kapsayıcılar için Application Gateway'de yük dengeleme kurallarına çevirmekle sorumludur. Aşağıdaki kılavuzda hem AKS tarafından yönetilen Ağ Geçidi API'sini hem de Kapsayıcılar için Application Gateway ALB Denetleyicisi eklentilerini yeni veya mevcut bir Azure Kubernetes Service (AKS) kümesinde etkinleştirmek için gereken adımlar gösterilmektedir.

Kapsayıcılar için Application Gateway'e İnternet girişinden gelen ve AKS'deki arka uç podlarına gönderilen trafiği gösteren diyagram; bir AKS eklentisi tarafından yüklenir.

Önkoşullar

Kümenizde ALB Denetleyicisi eklentisini etkinleştirmeden önce aşağıdaki görevleri tamamlamanız gerekir:

  1. Azure aboneliğinizi ve istemcinizi az-cli hazırlayın.

    # Sign in to your Azure subscription.
    SUBSCRIPTION_ID='<your subscription id>'
    az login
    az account set --subscription $SUBSCRIPTION_ID
    
    # Register required resource providers on Azure.
    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.Network
    az provider register --namespace Microsoft.NetworkFunction
    az provider register --namespace Microsoft.ServiceNetworking
    
    # Install Azure CLI extensions.
    az extension add --name alb
    az extension add --name aks-preview 
    
  2. Eklenti özelliğini kaydetme

    # Register required preview features
    az feature register --namespace "Microsoft.ContainerService" --name "ManagedGatewayAPIPreview"
    az feature register --namespace "Microsoft.ContainerService" --name "ApplicationLoadBalancerPreview"
    

AKS eklentisiyle AKS kümesi ayarlama

AKS eklentisi yeni veya mevcut kümelerde etkinleştirilebilir.

Eklentinin başarıyla sağlanması için aşağıdaki AKS kümesi gereksinimleri gereklidir:

Uyarı

Eklentinin etkinleştirilmesi ALB denetleyicisini tüm bölgelere kaydeder ve dağıtırken, Kapsayıcılar için Application Gateway kaynaklarının sağlanması, Kapsayıcılar için Application Gateway'in kullanılabilir olduğu bir bölgede dağıtılmaması durumunda başarısız olur.

Yeni Küme

Azure CNI, iş yükü kimliği etkinleştirilmiş, ağ geçidi API'si eklentisi ve Kapsayıcılar için Application Gateway eklentisi etkinleştirilmiş yeni bir AKS kümesi oluşturmak için aşağıdaki komutları kullanın.

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'
LOCATION='northeurope'
VM_SIZE='<the size of the vm in AKS>' # The size needs to be available in your location

az group create --name $RESOURCE_GROUP --location $LOCATION
az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $AKS_NAME \
    --location $LOCATION \
    --node-vm-size $VM_SIZE \
    --network-plugin azure \
    --enable-oidc-issuer \
    --enable-workload-identity \
    --enable-gateway-api \
    --enable-application-load-balancer \
    --generate-ssh-key

Uyarı

Ağ Geçidi API'sini kullanan diğer hizmetlerle çakışmayı önlemek için Kapsayıcılar için Application Gateawy eklentisi AKS Gateway API eklentisinin kullanılmasını gerektirir.

Mevcut Küme

Var olan bir kümeye önkoşul ekleme

Mevcut bir küme kullanıyorsanız AKS kümenizde İş Yükü Kimliği desteğini etkinleştirdiğinizden emin olun. İş yükü kimlikleri aşağıdaki komutlar aracılığıyla etkinleştirilebilir:

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'
az aks update -g $RESOURCE_GROUP -n $AKS_NAME --enable-oidc-issuer --enable-workload-identity --no-wait

ALB Denetleyicisi eklentisini yükleme

Mevcut bir kümeyle, Aşağıdaki komutlarla Kapsayıcılar için Ağ Geçidi API'sini ve Application Gateway eklentilerini etkinleştirebilirsiniz:

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'

# Update the AKS cluster
az aks update --name ${AKS_NAME} --resource-group ${RESOURCE_GROUP} --enable-gateway-api --enable-application-load-balancer

ALB Denetleyicisi kurulumunu doğrula

ALB Denetleyicisi Podlarını Doğrulayın

ALB Controller pod'larının kube-system namespace'inde çalıştığını doğrulayın.

kubectl get pods -n kube-system | grep alb-controller

İki alb-controller podun Running durumunda olduğunu görmelisiniz.

İSİM HAZIR STATUS YENİDEN BAŞLATMALAR AGE (YAŞ)
alb-controller-6648c5d5c-sdd9t 1/1 Koşmak 0 4 gün 6 saat
alb-controller-6648c5d5c-au234 1/1 Koşmak 0 4 gün 6 saat
GatewayClass Doğrulaması

GatewayClass'ın azure-alb-external kümenizde yüklü olduğunu doğrulayın:

kubectl get gatewayclass azure-alb-external -o yaml

GatewayClass'ın Valid GatewayClass değerini okuyan bir koşula sahip olduğunu görmeniz gerekir. Bu koşul, varsayılan bir GatewayClass'ın ayarlandığını ve bu GatewayClass'a başvuran tüm ağ geçidi kaynaklarının ALB Denetleyicisi tarafından yönetildiğini gösterir.

apiVersion: gateway.networking.k8s.io/v1beta1
kind: GatewayClass
metadata:
  creationTimestamp: "2023-07-31T13:07:00Z"
  generation: 1
  name: azure-alb-external
  resourceVersion: "64270"
  uid: 6c1443af-63e6-4b79-952f-6c3af1f1c41e
spec:
  controllerName: alb.networking.azure.io/alb-controller
status:
  conditions:
    - lastTransitionTime: "2023-07-31T13:07:23Z"
    message: Valid GatewayClass
    observedGeneration: 1
    reason: Accepted
    status: "True"
    type: Accepted
Azure portalında Eklenti Kaynaklarını Doğrulama

MC_ AKS kümenizin (düğüm) kaynak grubuna gidin. Eklenti tarafından oluşturulan aşağıdaki kaynakları görmeniz gerekir:

Yönetimli Kimlik

adlı applicationloadbalancer-<cluster-name> bir kimlik aşağıdaki rol atamalarıyla oluşturulur:

Rol Scope
Ağ Katılımcısı MC kaynak grubu
Kapsayıcılar için AppGw Yapılandırma Yöneticisi MC kaynak grubu
Okuyucu MC kaynak grubu

applicationloadbalancer-<cluster-name> kimliği, aşağıdaki özelliklerle yapılandırılmış federasyon kimliği kimlik bilgisine sahiptir:

  • Ad: aksfic
  • Ad alanı: kube-system
  • Hizmet Hesabı: alb-controller-sa

Uyarı

Eklentiyle tümleştirme sağlanırken kimliği veya ad alanını değiştirmek desteklenmez. Dağıtımınızı özelleştirmek istiyorsanız helm ile dağıtımı göz önünde bulundurun.

Alt ağ (subnet)

Aks tarafından yönetilen sanal ağ seçeneği kullanılarak bir AKS kümesinde eklenti etkinleştirildiğinde, aks-appgateway için temsilci etkinleştirilmiş Microsoft.ServiceNetworking/TrafficController adlı bir alt ağ otomatik olarak oluşturulur.

Sonraki Adımlar

Kümenize başarıyla bir ALB Denetleyicisi yüklediğinize göre, Azure'da Kapsayıcılar için Application Gateway kaynaklarını sağlayabilirsiniz.

Sonraki adım, ALB denetleyicinizi Kapsayıcılar için Application Gateway'e bağlamaktır. Bu bağlantıyı nasıl oluşturacağınız dağıtım stratejinize bağlıdır.

Kapsayıcılar için Application Gateway yönetiminde iki dağıtım stratejisi vardır:

  • Kendi dağıtımınızı yapın (BYO): Bu dağıtım stratejisinde, Kapsayıcılar için Application Gateway kaynağının, İlişkilendirme kaynağının ve Ön uç kaynağının dağıtımı ve yaşam döngüsü Azure portalı, CLI, PowerShell, Terraform gibi araçlar kullanılarak gerçekleştirilir ve Kubernetes üzerindeki yapılandırmada referans alınır.
  • ALB denetleyicisi tarafından yönetilir: Bu dağıtım stratejisinde Kubernetes'te dağıtılan ALB Denetleyicisi, Kapsayıcılar için Application Gateway kaynağının ve alt kaynaklarının yaşam döngüsünden sorumludur. ALB Denetleyicisi, kümede bir ApplicationLoadBalancer özel kaynağı tanımlandığında, Kapsayıcılar için bir Application Gateway kaynağı oluşturur. Hizmet yaşam döngüsü, özel kaynağın yaşam döngüsünü temel alır.

Deneyebileceğiniz Örnek Senaryolar

Kapsayıcılar ve ALB Denetleyicisi için Application Gateway'i kaldırma

ALB Denetleyicisi eklentisini kaldırmak istiyorsanız aşağıdaki adımları tamamlayın.

ALB Denetleyicisi Eklentisini Devre Dışı Bırakma

Kümenizde ALB Denetleyicisi eklentisini devre dışı bırakın:

AKS_NAME='<your cluster name>'
RESOURCE_GROUP='<your resource group name>'

# Update the AKS cluster
az aks update --name ${AKS_NAME} --resource-group ${RESOURCE_GROUP} --disable-gateway-api --disable-application-load-balancer

Kaynak Grubunu Silme

Kapsayıcılar için Application Gateway de dahil olmak üzere tüm kaynakları tam olarak temizlemek için kaynak grubunu silin:

az group delete --resource-group $RESOURCE_GROUP