Início Rápido: Implementar o Gateway de Aplicações para o Controlador ALB de Containers usando o Add-on AKS

O controlador ALB é responsável por traduzir a configuração da API de gateway e da API de entrada no Kubernetes para regras de balanceamento de carga no Application Gateway for Containers. O guia seguinte percorre os passos necessários para ativar tanto a API de Gateway gerida pelo AKS como os complementos de Controlador ALB do Gateway de Aplicações para Containers num cluster novo ou existente do Azure Kubernetes Service (AKS).

Diagrama que mostra o tráfego proveniente da Internet, ingressando no Application Gateway for Containers, e sendo enviado para os pods de backend no AKS; instalado por um add-on AKS.

Pré-requisitos

Precisa de completar as seguintes tarefas antes de ativar o add-on ALB Controller no seu cluster:

  1. Prepare sua assinatura do Azure e seu az-cli cliente.

    # 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. Funcionalidade adicional de registo

    Use a CLI do Azure para registar a funcionalidade adicional.

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

    Importante

    O complemento Application Gateway for Containers AKS está atualmente em pré-visualização.
    Consulte os Termos de Utilização Complementares das Visualizações Prévias do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão em beta, em pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Configurar um cluster AKS com o complemento AKS

O complemento AKS pode ser ativado em clusters novos ou existentes.

Os seguintes requisitos do cluster AKS são necessários para a provisão bem-sucedida do complemento:

Novo Aglomerado

Use os seguintes comandos para criar um novo cluster AKS com Azure CNI, identidade de carga de trabalho ativada, add-on API de gateway e o addon Application Gateway for Containers ativado.

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

Observação

Observação

Agrupamento Existente

Adicionar pré-requisitos a um cluster existente

Se estiver usando um cluster existente, certifique-se de habilitar o suporte de Identidade de Carga de Trabalho no cluster AKS. As identidades de carga de trabalho podem ser ativadas através dos seguintes 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

Instalar o complemento Controlador ALB

Com um cluster existente, pode ativar os add-ons Gateway API e Application Gateway for Containers com os seguintes 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

Verifique a instalação do controlador ALB

Tanto o novo cluster como os percursos do cluster existente utilizam as mesmas verificações. Depois de ativar o complemento, complete as verificações seguintes independentemente do caminho que utilizou.

Verificar os Pods Controladores do ALB

Verifique se os pods do controlador ALB estão a ser executados no kube-system namespace.

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

Deves ver dois alb-controller pods em Running estado:

NAME PRONTO STATUS REINÍCIOS IDADE
controlador alb-6648c5d5c-sdd9t 1/1 Running 0 4 dias e 6 horas
controlador-alb-6648c5d5c-au234 1/1 Running 0 4 dias e 6 horas

Verify GatewayClass

Verifique se GatewayClass azure-alb-external está instalado no cluster:

kubectl get gatewayclass azure-alb-external -o yaml

Você deve ver que o GatewayClass tem uma condição que lê Valid GatewayClass. Esta condição indica que uma GatewayClass por defeito está configurada e que quaisquer recursos de gateway que referenciam esta GatewayClass são geridos pelo 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 Adicionais no portal Azure

Navega até ao MC_ grupo de recursos (nó) do teu cluster AKS. Deverá ver os seguintes recursos criados pelo add-on:

Identidade gerenciada

Uma identidade nomeada applicationloadbalancer-<cluster-name> é criada com as seguintes atribuições de funções:

Funções Scope
Contribuidor de Rede Grupo de recursos do MC
AppGw for Containers Gestor de Configuração Grupo de recursos do MC
Leitor Grupo de recursos do MC

A applicationloadbalancer-<cluster-name> identidade tem uma credencial de identidade federada configurada com as seguintes propriedades:

  • Nome: aksfic
  • Namespace: kube-system
  • Conta de Serviço: alb-controller-sa

Advertência

Não é suportado modificar a identidade ou o namespace ao provisionar a integração com o complemento. Se quiser personalizar a sua implementação, considere a implementação com Helm.

Subnet

Quando o complemento é ativado num cluster AKS usando a opção de rede virtual gerida pelo AKS, uma sub-rede chamada aks-appgateway é criada automaticamente com a delegação ativada para Microsoft.ServiceNetworking/TrafficController.

Próximas Etapas

Agora que instalou com sucesso um controlador ALB no seu cluster, pode provisionar os recursos Application Gateway for Containers no Azure.

O passo seguinte é ligar o seu controlador ALB ao Gateway de Aplicações para Containers. A forma como você cria esse link depende da sua estratégia de implantação.

Existem duas estratégias de implementação para o gerenciamento do Gateway de Aplicação para Contentores.

  • Traga sua própria implantação (BYO): nesta estratégia de implantação, a implantação e o ciclo de vida do recurso Application Gateway for Containers, recurso de associação e recurso Frontend são assumidos via portal do Azure, CLI, PowerShell, Terraform, etc. e referenciados na configuração no Kubernetes.
  • Gerenciado pelo Controlador ALB: Nesta estratégia de implantação, o Controlador ALB implantado no Kubernetes é responsável pelo ciclo de vida do recurso Application Gateway for Containers e seus subrecursos. O Controlador ALB cria um recurso do Application Gateway for Containers quando um recurso personalizado ApplicationLoadBalancer é definido no cluster. O ciclo de vida do serviço é baseado no ciclo de vida do recurso personalizado.

Exemplos de Cenários para Experimentar

Desinstale o Application Gateway para contêineres e o controlador ALB

Se desejar desinstalar o add-on ALB Controller, complete os seguintes passos.

Desativar o Add-on do Controlador ALB

Desative o add-on ALB Controller no seu cluster:

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 o Grupo de Recursos

Para limpar completamente todos os recursos, incluindo o Application Gateway for Containers, elimine o grupo de recursos:

az group delete --resource-group $RESOURCE_GROUP