Szybki start: wdrażanie Application Gateway dla kontenerów pod kontrolą kontrolera ALB za pomocą dodatku AKS

Kontroler ALB jest odpowiedzialny za tłumaczenie konfiguracji API bramy (Gateway API) i API wejściowego (Ingress API) w Kubernetes na reguły równoważenia obciążenia w Application Gateway for Containers. W poniższym przewodniku przedstawiono kroki wymagane do włączenia zarówno interfejsu API bramy zarządzanej usługi AKS, jak i dodatku Application Gateway for Containers ALB Controller w nowym lub istniejącym klastrze usługi Azure Kubernetes Service (AKS).

Diagram przedstawiający ruch przychodzący z Internetu do usługi Application Gateway dla kontenerów i wysyłany do zasobników zaplecza w usłudze AKS; zainstalowany przez dodatek usługi AKS.

Wymagania wstępne

Przed włączeniem dodatku ALB Controller w klastrze należy wykonać następujące zadania:

  1. Przygotuj subskrypcję platformy Azure i klienta az-cli .

    # 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. Zarejestruj funkcję dodatku

    Użyj Azure CLI, aby zarejestrować funkcję dodatku.

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

    Ważna

    Dodatek Application Gateway for Containers AKS jest obecnie dostępny w wersji zapoznawczej.
    Zobacz dodatkowe warunki użytkowania dla wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta, wersji zapoznawczej lub w inny sposób nie zostały jeszcze wydane w wersji ogólnodostępnej.

Skonfiguruj klaster AKS z dodatkiem AKS

Dodatek AKS można włączyć w nowych lub istniejących klastrach.

Aby pomyślnie skonfigurować dodatek, potrzebne są następujące wymagania dotyczące klastra AKS:

Nowy klaster

Użyj następujących poleceń, aby utworzyć nowy klaster usługi AKS z usługą Azure CNI, włączoną tożsamością obciążenia, dodatkiem interfejsu API bramy i dodatkiem Application Gateway for Containers.

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

Uwaga / Notatka

Uwaga / Notatka

Istniejący klaster

Dodawanie wymagań wstępnych do istniejącego klastra

Jeśli korzystasz z istniejącego klastra, upewnij się, że włączyłeś obsługę Workload Identity w klastrze AKS. Tożsamości obciążeń można włączyć za pomocą następujących poleceń:

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

Zainstaluj dodatek kontrolera ALB

Za pomocą istniejącego klastra można włączyć dodatki Gateway API oraz Application Gateway for Containers, używając następujących poleceń:

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

Weryfikowanie instalacji kontrolera ALB

Zarówno nowy klaster, jak i istniejące ścieżki klastra korzystają z tych samych kontrol weryfikacji. Po włączeniu dodatku wykonaj następujące kontrole, niezależnie od wybranej ścieżki.

Weryfikowanie zasobników kontrolera ALB

Sprawdź, czy zasobniki kontrolera ALB są uruchomione w przestrzeni nazw kube-system.

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

Powinny zostać wyświetlone dwa alb-controller zasobniki w Running stanie:

NAZWA GOTOWE STATUS Ponowne uruchomienia AGE
alb-controller-6648c5d5c-sdd9t 1/1 Bieganie 0 4 dni 6 godzin
alb-controller-6648c5d5c-au234 1/1 Bieganie 0 4 dni 6 godzin

Weryfikowanie klasy GatewayClass

Sprawdź, czy klasa GatewayClass azure-alb-external jest zainstalowana w klastrze:

kubectl get gatewayclass azure-alb-external -o yaml

Powinno być widoczne, że GatewayClass ma warunek, który brzmi Valid GatewayClass. Ten warunek wskazuje, że skonfigurowana jest domyślna GatewayClass i że wszystkie zasoby bramy odwołujące się do tej GatewayClass są zarządzane przez kontroler ALB.

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

Weryfikowanie zasobów dodatków w witrynie Azure Portal

Przejdź do grupy zasobów MC_ (węzeł) dla klastra usługi AKS. Powinny zostać wyświetlone następujące zasoby utworzone przez dodatek:

Zarządzana Tożsamość

Tożsamość o nazwie applicationloadbalancer-<cluster-name> jest tworzona przy użyciu następujących przypisań ról:

Role Scope
Współautor sieci Grupa zasobów MC
AppGw dla Kontenerów Menedżer Konfiguracji Grupa zasobów MC
Czytelnik Grupa zasobów MC

Tożsamość applicationloadbalancer-<cluster-name> ma skonfigurowane poświadczenie tożsamości federacyjnej z następującymi właściwościami:

  • Nazwa: aksfic
  • Przestrzeń nazw: kube-system
  • Konto usługi: alb-controller-sa

Ostrzeżenie

Nie jest obsługiwane modyfikowanie tożsamości lub przestrzeni nazw podczas konfigurowania integracji z dodatkiem. Jeśli chcesz dostosować wdrożenie, rozważ wdrożenie za pomocą narzędzia Helm.

Subnet

Po włączeniu dodatku w klastrze usługi AKS przy użyciu opcji sieci wirtualnej zarządzanej przez usługę AKS podsieć o nazwie aks-appgateway jest automatycznie tworzona z włączonym delegowaniem dla Microsoft.ServiceNetworking/TrafficController.

Dalsze kroki

Teraz, gdy pomyślnie zainstalowałeś kontroler ALB w swoim klastrze, możesz wdrożyć zasoby usługi Application Gateway for Containers na platformie Azure.

Kolejnym krokiem jest połączenie kontrolera ALB z Application Gateway for Containers. Sposób tworzenia tego linku zależy od strategii wdrażania.

Istnieją dwie strategie wdrożenia zarządzania dla usługi Application Gateway for Containers:

  • Wdrożenie "Przynieś własne" (BYO): W tej strategii wdrażania zakłada się, że wdrożenie i cykl życia zasobu Application Gateway for Containers, zasobu powiązań oraz zasobu warstwy frontendowej będzie realizowane za pośrednictwem portalu Azure, CLI, PowerShell, Terraform itp., i będą odniesione w konfiguracji w ramach Kubernetes.
  • Zarządzane przez kontroler usługi ALB: W tej strategii wdrażania kontroler usługi ALB wdrożony na platformie Kubernetes jest odpowiedzialny za cykl życia zasobu usługi Application Gateway for Containers i jego zasobów podrzędnych. Kontroler ALB tworzy zasób Application Gateway dla kontenerów, gdy w klastrze zdefiniowany jest niestandardowy zasób ApplicationLoadBalancer. Cykl życia usługi opiera się na cyklu życia zasobu niestandardowego.

Przykładowe scenariusze do wypróbowania

Odinstaluj Application Gateway dla kontenerów i kontrolera ALB

Jeśli chcesz odinstalować dodatek ALB Controller, wykonaj następujące kroki.

Wyłącz dodatek ALB Controller

Wyłącz dodatek ALB Controller na klastrze:

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

Usuwanie grupy zasobów

Aby w pełni wyczyścić wszystkie zasoby, w tym usługę Application Gateway for Containers, usuń grupę zasobów:

az group delete --resource-group $RESOURCE_GROUP