Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Controlador ALB é responsável por traduzir a API de Gateway e a configuração da API de Entrada no Kubernetes para regras de balanceamento de carga no Gateway de Aplicativo para Contêineres. O guia a seguir explica as etapas necessárias para provisionar um Controlador ALB em um cluster novo ou existente do AKS (Serviço de Kubernetes do Azure).
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 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 albDefina um cluster do AKS para sua carga de trabalho.
Observação
O cluster do AKS precisa estar em uma região em que o Gateway de Aplicativos para contêineres esteja disponível. O cluster do AKS deve usar a CNI do Azure ou a Sobreposição da CNI do Azure. O cluster do AKS deve ter o recurso de identidade de carga de trabalho habilitado. Saiba como habilitar a identidade de carga de trabalho em um cluster de AKS existente.
Se estiver usando um cluster existente, habilite o suporte à Identidade de Carga de Trabalho no cluster do AKS. As identidades de carga de trabalho podem ser habilitadas por meio 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 do AKS com a CNI do Azure e a identidade de carga de trabalho habilitadas.
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
O Helm é uma ferramenta de empacotamento de código aberto usada para instalar o controlador ALB.
Observação
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.
Também é possível usar as etapas a seguir para instalar o Helm em um dispositivo local que executa o Windows ou o Linux. Certifique-se de que você tem a versão mais recente do Helm instalada.
Confira as instruções de instalação para obter várias opções de instalação. Da mesma forma, se sua versão do Windows tiver o winget do Gerenciador de Pacotes do Windows instalado, você poderá executar o seguinte comando:
winget install helm.helm
Instalar o controlador ALB
Crie uma identidade gerenciada pelo usuário para o controlador ALB e federe a identidade como Identidade de Carga de Trabalho a ser usada no cluster do 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"O Controlador ALB requer uma credencial federada com o nome de
azure-alb-identity. Qualquer outro nome de credencial federada não tem suporte.Observação
A atribuição da identidade gerenciada imediatamente após a criação pode resultar em um erro de que a principalId não existe. Permita cerca de um minuto de tempo decorrido para que a identidade seja replicada no Microsoft Entra ID antes de delegar a identidade.
Instalar o Controlador ALB usando o Helm
Para novas implantações
Para instalar o controlador ALB, use o comando
helm install.Quando o comando
helm installé executado, ele implanta o Pacote do Helm no namespace padrão. Quando o controlador alb é implantado, ele é implantado noazure-alb-systemnamespace. Os dois namespaces podem ser substituídos de forma independente, conforme preferível. Para substituir o namespace no qual o projeto do Helm é implantado, você pode especificar o parâmetro --namespace (ou -n). Para substituir oazure-alb-systemnamespace usado pelo controlador alb, você pode definir a propriedade albController.namespace durante a instalação (--set albController.namespace). Se nenhum dos parâmetros--namespaceou--set albController.namespaceforem definidos, o namespace padrão será usado para o pacote do Helm e o namespaceazure-alb-systemserá usado nos componentes do controlador ALB. Por fim, se o namespace do recurso do Pacote do Helm ainda não estiver definido, verifique se o parâmetro--create-namespacetambém está especificado junto com os parâmetros--namespaceou-n.O Controlador ALB 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
O ALB pode ser atualizado ao executar os seguintes comandos:
Observação
Durante a atualização, não esqueça de especificar os parâmetros
--namespaceou--set albController.namespace, caso os namespaces tenham sido substituídos na instalação aplicada anteriormente. Para determinar os namespaces usados anteriormente, execute o comandohelm listpara o namespace do 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)
Verificar a instalação do Controlador ALB
Verifique se os pods do Controlador ALB estão prontos:
kubectl get pods -n azure-alb-systemA seguinte saída deve ser exibida:
NOME READY STATUS REINÍCIOS IDADE alb-controller-6648c5d5c-sdd9t 1/1 Execução 0 4 dias e 6 horas alb-controller-6648c5d5c-au234 1/1 Execução 0 4 dias e 6 horas Verifique se o 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ê GatewayClass Válido. 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 automaticamente 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
Próximas etapas
Agora que você instalou com êxito um Controlador ALB em seu cluster, provisione os recursos do Gateway de Aplicativo para Contêineres no Azure.
A próxima etapa é vincular seu controlador ALB ao Gateway de Aplicativo para Contêineres. A forma como você cria esse link depende de sua estratégia de implantação.
Há duas estratégias de implantação para o gerenciamento do Gateway de Aplicativos para contêineres:
-
Traga sua própria implantação (BYO): nessa estratégia de implantação, a implantação e o ciclo de vida do recurso Gateway de Aplicativos para contêineres, do recurso Association e do recurso Frontend são assumidos por meio do portal do Azure, CLI, PowerShell, Terraform etc. e referenciados na configuração dentro do Kubernetes.
- Para usar uma implantação BYO, consulte Criar Gateway de Aplicativos 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 Gateway de Aplicativos para contêineres e seus sub-recursos. O Controlador ALB cria o recurso Gateway de Aplicativo para Contêineres quando um recurso personalizado ApplicationLoadBalancer é definido no cluster. O ciclo de vida do serviço é baseado no ciclo de vida do recurso personalizado.
- Para usar uma implantação gerenciada do ALB, consulte Criar Gateway de Aplicativo para Contêineres gerenciados pelo Controlador ALB.
Desinstalar o Gateway de Aplicativo para Contêineres e o Controlador ALB
Se você quiser desinstalar o Controlador ALB, conclua as etapas a seguir.
Exclua o Gateway de Aplicativo para Contêineres, você poderá 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 Controlador ALB 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
Observação
Se um namespace diferente tiver sido usado para a instalação do controlador ALB, especifique o parâmetro -n no comando helm uninstall para definir o namespace apropriado a ser usado. Por exemplo: helm uninstall alb-controller -n unique-namespace