Inicio rápido: Implementación de Application Gateway for Containers ALB Controller mediante el complemento de AKS

El controlador ALB se encarga de traducir la configuración de la API de puerta de enlace y de la API de entrada dentro de Kubernetes en reglas de equilibrio de carga dentro de la puerta de enlace de aplicaciones para contenedores. En la siguiente guía se describen los pasos necesarios para habilitar tanto la API de puerta de enlace administrada de AKS como los complementos de Application Gateway for Containers ALB Controller en un clúster de Azure Kubernetes Service (AKS) nuevo o existente.

Diagrama en el que se muestra el tráfico que ingresa desde Internet en Application Gateway para contenedores y se envía a los pods de back-end en AKS; instalado por un complemento de AKS.

Prerrequisitos

Debe completar las siguientes tareas antes de habilitar el complemento controlador ALB en el clúster:

  1. Prepare la suscripción de Azure y el cliente 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. Registro de la característica de complemento

    Utiliza la CLI de Azure para registrar la función complementada.

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

    Importante

    El complemento Application Gateway for Containers AKS está actualmente en vista previa.
    Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

Configuración de un clúster de AKS con el complemento de AKS

El complemento de AKS se puede habilitar en clústeres nuevos o existentes.

Se necesitan los siguientes requisitos del clúster de AKS para el aprovisionamiento correcto del complemento:

Nuevo clúster

Utilice los siguientes comandos para crear un nuevo clúster de AKS con Azure CNI, la identidad de carga de trabajo habilitada, el complemento de la API de puerta de enlace y el complemento de Application Gateway para contenedores habilitado.

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

Nota:

Nota:

Clúster existente

Adición de requisitos previos a un clúster existente

Si usa un clúster existente, asegúrese de habilitar la compatibilidad con la identidad de carga de trabajo en el clúster de AKS. Las identidades de carga de trabajo se pueden habilitar mediante los siguientes comandos:

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

Instala el complemento ALB Controller

Con un clúster existente, puede habilitar la API de puerta de enlace y los complementos de Application Gateway para contenedores con los siguientes comandos:

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

Compruebe la instalación del controlador ALB

Tanto el nuevo clúster como las rutas existentes utilizan las mismas comprobaciones de verificación. Después de activar el complemento, realiza las siguientes comprobaciones independientemente de la ruta que hayas usado.

Verificar los pods del controlador ALB

Compruebe que los pods del controlador ALB se ejecutan en el espacio de nombres kube-system:

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

Debería ver dos pods alb-controller con estado Running:

NAME LISTO STATUS REINICIA Edad
alb-controller-6648c5d5c-sdd9t 1/1 Correr 0 4 días 6 horas
alb-controller-6648c5d5c-au234 1/1 Correr 0 4 días 6 horas

Comprobación de GatewayClass

Compruebe que GatewayClass azure-alb-external está instalado en el clúster:

kubectl get gatewayclass azure-alb-external -o yaml

Debería ver que GatewayClass tiene una condición que lee Valid GatewayClass. Esta condición indica que se configura una clase GatewayClass predeterminada y que los recursos de puerta de enlace que hacen referencia a esta clase GatewayClass se administran mediante el controlador 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

Validar recursos adicionales en el portal de Azure

Vaya al grupo de recursos de MC_ (nodo) del clúster de AKS. Debería ver los siguientes recursos creados por el complemento:

Identidad administrada

Se crea una identidad denominada applicationloadbalancer-<cluster-name> con las siguientes asignaciones de roles:

Rol Ámbito
Colaborador de la red Grupo de recursos de MC
AppGw for Containers Administrador de Configuración Grupo de recursos de MC
Lector Grupo de recursos de MC

La applicationloadbalancer-<cluster-name> identidad tiene configurada una credencial de identidad federada con las siguientes propiedades:

  • Nombre: aksfic
  • Espacio de nombres: kube-system
  • Cuenta de servicio: alb-controller-sa

Advertencia

No se admite modificar la identidad o el espacio de nombres al aprovisionar la integración con el complemento. Si desea personalizar la implementación, considere la posibilidad de realizar la implementación con Helm.

Subnet

Cuando el complemento está habilitado en un clúster de AKS mediante la opción de red virtual administrada por AKS, se crea automáticamente una subred denominada aks-appgateway con la delegación habilitada para Microsoft.ServiceNetworking/TrafficController.

Pasos siguientes

Ahora que has instalado con éxito un controlador ALB en tu clúster, puedes provisionar la Pasarela de Aplicaciones para recursos de contenedores en Azure.

El siguiente paso es vincular tu controlador ALB con la Pasarela de Aplicaciones para Contenedores. La forma de crear este vínculo depende de la estrategia de implementación.

Hay dos estrategias de implementación para la administración de Application Gateway para contenedores:

  • Traiga su propia (BYO) implementación: en esta estrategia de implementación, la implementación y el ciclo de vida del recurso de puerta de enlace de aplicaciones para contenedores, el recurso de asociación y de front-end se asumen a través de Azure Portal, la CLI, PowerShell, Terraform, etc., y se hace referencia a ellos en la configuración en Kubernetes.
  • Administrado por el controlador ALB: en esta estrategia de implementación, el controlador ALB implementado en Kubernetes es responsable del ciclo de vida del recurso de puerta de enlace de aplicaciones para contenedores y sus subrecursos. El controlador ALB crea un recurso de Application Gateway para contenedores cuando se define un recurso personalizado ApplicationLoadBalancer en el clúster. El ciclo de vida del servicio se basa en el ciclo de vida del recurso personalizado.

Escenarios de ejemplo para probar

Desinstalación de Application Gateway para contenedores y del controlador ALB

Si desea desinstalar el complemento controlador ALB, complete los pasos siguientes.

Desactivar el complemento ALB Controller

Desactive el complemento del controlador ALB en el clúster:

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

Eliminar el grupo de recursos

Para limpiar completamente todos los recursos, incluido Application Gateway for Containers, elimine el grupo de recursos:

az group delete --resource-group $RESOURCE_GROUP