Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 a seguir percorre as etapas necessárias para provisionar um Controlador ALB em um cluster novo ou existente do Serviço Kubernetes do Azure (AKS).
Pré-requisitos
Você precisa concluir as seguintes tarefas antes de implantar o Gateway de Aplicativo para Contêineres no Azure e instalar o Controlador ALB em seu cluster:
Prepare sua assinatura do Azure e seu
az-clicliente.# 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 albDefina um cluster AKS para a sua carga de trabalho.
Nota
O cluster AKS precisa estar em uma região onde o Application Gateway for Containers esteja disponível O cluster AKS deve usar o Azure CNI ou o Azure CNI Overlay. O cluster AKS deve ter o recurso de identidade de carga de trabalho habilitado. Saiba como habilitar a identidade da carga de trabalho em um cluster AKS 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-waitSe você não tiver um cluster existente, use os comandos a seguir para criar um novo cluster AKS com a CNI do Azure e a identidade da carga de trabalho habilitada.
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 \ --generate-ssh-keyInstalar o Helm
Helm é uma ferramenta de empacotamento de código aberto que é usada para instalar o controlador ALB.
Nota
O Helm já está disponível no Azure Cloud Shell. Se você estiver usando o Azure Cloud Shell, nenhuma instalação adicional do Helm será necessária.
Você também pode usar as etapas a seguir para instalar o Helm em um dispositivo local que executa Windows ou Linux. Certifique-se de ter a versão mais recente do helm instalada.
Consulte as instruções de instalação para várias opções de instalação. Da mesma forma, se a sua versão do Windows tiver o Windows Package Manager winget instalado, você pode executar o seguinte comando:
winget install helm.helm
Instale o controlador ALB
Crie uma identidade gerenciada pelo usuário para o controlador ALB e federar a identidade como Identidade de Carga de Trabalho para usar no cluster AKS.
RESOURCE_GROUP='<your resource group name>' AKS_NAME='<your aks cluster name>' IDENTITY_RESOURCE_NAME='azure-alb-identity' mcResourceGroup=$(az aks show --resource-group $RESOURCE_GROUP --name $AKS_NAME --query "nodeResourceGroup" -o tsv) mcResourceGroupId=$(az group show --name $mcResourceGroup --query id -otsv) echo "Creating identity $IDENTITY_RESOURCE_NAME in resource group $RESOURCE_GROUP" az identity create --resource-group $RESOURCE_GROUP --name $IDENTITY_RESOURCE_NAME principalId="$(az identity show -g $RESOURCE_GROUP -n $IDENTITY_RESOURCE_NAME --query principalId -otsv)" echo "Waiting 60 seconds to allow for replication of the identity..." sleep 60 echo "Apply Reader role to the AKS managed cluster resource group for the newly provisioned identity" az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal --scope $mcResourceGroupId --role "acdd72a7-3385-48ef-bd42-f606fba81ae7" # Reader role echo "Set up federation with AKS OIDC issuer" AKS_OIDC_ISSUER="$(az aks show -n "$AKS_NAME" -g "$RESOURCE_GROUP" --query "oidcIssuerProfile.issuerUrl" -o tsv)" az identity federated-credential create --name "azure-alb-identity" \ --identity-name "$IDENTITY_RESOURCE_NAME" \ --resource-group $RESOURCE_GROUP \ --issuer "$AKS_OIDC_ISSUER" \ --subject "system:serviceaccount:azure-alb-system:alb-controller-sa"ALB Controller requer uma credencial federada com o nome de
azure-alb-identity. Qualquer outro nome de credencial federada não é suportado.Nota
A atribuição da identidade gerida imediatamente após a criação pode resultar num erro indicando que o principalId não existe. Aguarde cerca de um minuto para que a identidade seja replicada no Microsoft Entra ID antes de delegar a identidade.
Instale o ALB Controller usando Helm
Para novas implantações
Para instalar o ALB Controller, use o
helm installcomando.Quando o comando
helm installé executado, ele implanta o Helm chart no namespace default. Quando alb-controller é implantado, ele é implantado noazure-alb-systemnamespace. Ambos os namespaces podem ser substituídos independentemente conforme desejado. Para alterar o namespace a que o Helm chart é implantado, pode-se especificar o parâmetro --namespace (ou -n). Para substituir o namespace usado pelo alb-controller, você pode definir a propriedade albController.namespace durante aazure-alb-systeminstalação (--set albController.namespace). Se nem os parâmetros nem os--namespace--set albController.namespaceparâmetros forem definidos, o namespace padrão será usado para o gráfico de leme e oazure-alb-systemnamespace será usado para os componentes do controlador ALB. Por fim, se o namespace para o recurso do helm chart ainda não estiver definido, certifique-se de que o parâmetro--create-namespacetambém seja especificado junto com o parâmetro--namespaceou-n.ALB Controller pode ser instalado executando os seguintes comandos:
HELM_NAMESPACE='<namespace for deployment>' CONTROLLER_NAMESPACE='azure-alb-system' az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME helm install alb-controller oci://mcr.microsoft.com/application-lb/charts/alb-controller \ --namespace $HELM_NAMESPACE \ --version 1.8.12 \ --set albController.namespace=$CONTROLLER_NAMESPACE \ --set albController.podIdentity.clientID=$(az identity show -g $RESOURCE_GROUP -n azure-alb-identity --query clientId -o tsv)Para implantações existentes
ALB pode ser atualizado executando os seguintes comandos:
Nota
Durante a atualização, certifique-se de especificar os parâmetros
--namespaceou--set albController.namespacese os namespaces tiverem sido substituídos na instalação anterior. Para determinar os namespaces anteriores usados, você pode executar ohelm listcomando para o namespace helm ekubectl get pod -A -l app=alb-controllerpara o controlador ALB.HELM_NAMESPACE='<your cluster name>' CONTROLLER_NAMESPACE='azure-alb-system' az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME helm upgrade alb-controller oci://mcr.microsoft.com/application-lb/charts/alb-controller \ --namespace $HELM_NAMESPACE \ --version 1.8.12 \ --set albController.namespace=$CONTROLLER_NAMESPACE \ --set albController.podIdentity.clientID=$(az identity show -g $RESOURCE_GROUP -n azure-alb-identity --query clientId -o tsv)
Verifique a instalação do controlador ALB
Verifique se os pods do ALB Controller estão prontos:
kubectl get pods -n azure-alb-systemDeverá ver o seguinte resultado:
NOME PRONTO SITUAÇÃO REINÍCIOS IDADE controlador alb-6648c5d5c-sdd9t 1/1 Correr 0 4 dias e 6 horas controlador-alb-6648c5d5c-au234 1/1 Correr 0 4 dias e 6 horas Verifique se GatewayClass
azure-alb-externalestá instalado no cluster:kubectl get gatewayclass azure-alb-external -o yamlVocê deve ver que o GatewayClass tem uma condição que lê Valid GatewayClass. Essa condição indica que um GatewayClass padrão está configurado e que todos os recursos de gateway que fazem referência a esse GatewayClass são gerenciados pelo controlador ALB automaticamente.
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
Passos Seguintes
Agora que você instalou com êxito um Controlador ALB em seu cluster, pode provisionar os recursos do Gateway de Aplicativo para Contêineres no Azure.
A próxima etapa é vincular seu controlador ALB ao Application Gateway for 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.
- Para usar uma implantação BYO, consulte Configurar Gateway de Aplicações para Contêineres - Traga sua Própria Implantação.
-
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.
- Para utilizar uma implementação gerida por ALB, veja Criar gateway de aplicações para contêineres geridos pelo controlador ALB.
Desinstale o Application Gateway para contêineres e o controlador ALB
Se você deseja desinstalar o controlador ALB, conclua as etapas a seguir.
Exclua o Gateway de Aplicativo para Contêineres, você pode excluir o Grupo de Recursos que contém os recursos do Gateway de Aplicativo para Contêineres:
az group delete --resource-group $RESOURCE_GROUPDesinstale o ALB Controller e seus recursos do cluster execute os seguintes comandos:
helm uninstall alb-controller kubectl delete ns azure-alb-system kubectl delete gatewayclass azure-alb-external
Nota
Se um namespace diferente foi usado para a instalação do alb-controller, certifique-se de especificar o parâmetro -n no comando helm uninstall para definir o namespace adequado a ser usado. Por exemplo: helm uninstall alb-controller -n unique-namespace