Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le contrôleur ALB est responsable de la traduction de la configuration de l’API de passerelle et de l’API d’entrée au sein de Kubernetes vers les règles d’équilibrage de charge dans Passerelle d’application pour conteneurs. Le guide suivant décrit les étapes nécessaires pour provisionner un contrôleur ALB dans un cluster Azure Kubernetes Service (AKS) nouveau ou existant.
Prérequis
Vous devez effectuer les tâches suivantes avant de déployer la Passerelle d'application pour conteneurs sur Azure et d’installer le contrôleur ALB sur votre cluster :
Préparez votre abonnement Azure et votre client
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 albDéfinissez un cluster AKS pour votre charge de travail.
Remarque
Le cluster AKS doit se trouver dans une région où Application Gateway pour conteneurs est disponible , le cluster AKS doit utiliser Azure CNI ou Azure CNI Overlay. La fonctionnalité d’identité de charge de travail doit être activée pour le cluster AKS. Découvrez comment activer l’identité de charge de travail sur un cluster AKS existant.
Si vous utilisez un cluster existant, assurez-vous d’activer le support de l’identité de charge de travail sur votre cluster AKS. Les identités de charge de travail peuvent être activées via les commandes suivantes :
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-waitSi vous n’avez pas de cluster existant, utilisez les commandes suivantes pour créer un cluster AKS avec Azure CNI et l’identité de charge de travail activée.
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-keyInstaller Helm
Helm est un outil d’empaquetage open source utilisé pour installer le contrôleur ALB.
Remarque
Helm est déjà disponible dans Azure Cloud Shell. Si vous utilisez Azure Cloud Shell, aucune installation Helm supplémentaire n’est nécessaire.
Vous pouvez également utiliser les étapes suivantes pour installer Helm sur un appareil local exécutant Windows ou Linux. Vérifiez que la dernière version de Helm est installée.
Consultez les instructions d’installationpour connaître les différentes options d’installation. De même, si le Gestionnaire de package Windows winget est installé dans votre version de Windows, vous pouvez exécuter la commande suivante :
winget install helm.helm
Installer le contrôleur ALB
Créez une identité managée par l’utilisateur pour le contrôleur ALB, puis fédérez l’identité en tant qu’identité Charge de travail à utiliser dans le 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"Le contrôleur ALB nécessite des informations d’identification fédérées portant le nom
azure-alb-identity. Tout autre nom d’informations d’identification fédérées n’est pas pris en charge.Remarque
L’attribution de l’identité managée immédiatement après sa création peut entraîner une erreur indiquant que le principalId n’existe pas. Laissez environ une minute de temps s’écouler pour que l’identité soit répliquée dans Microsoft Entra ID avant de déléguer l’identité.
Installer le Contrôleur ALB avec Helm
Pour les nouveaux déploiements
Pour installer le contrôleur ALB, utilisez la commande
helm install.Lorsque la commande
helm installest exécutée, elle déploie le graphique helm dans l’espace de noms par défaut. Lorsque alb-controller est déployé, il l’est dans l’espace de nomsazure-alb-system. Ces deux espaces de noms peuvent être remplacés indépendamment comme vous le souhaitez. Pour remplacer l’espace de noms sur lequel le graphique Helm est déployé, vous pouvez spécifier le paramètre --namespace (ou -n). Pour remplacer l’espace de nomsazure-alb-systemutilisé par alb-controller, vous pouvez définir la propriété albController.namespace pendant l’installation (--set albController.namespace). Si aucun des paramètres--namespaceou--set albController.namespacen’est défini, l’espace de noms par défaut est utilisé pour le graphique helm et l’espace de nomsazure-alb-systemest utilisé pour les composants du contrôleur ALB. Enfin, si l’espace de noms de la ressource helm chart n’est pas encore défini, vérifiez que le--create-namespaceparamètre est également spécifié avec les--namespaceparamètres ou-n.Vous pouvez installer le contrôleur ALB en exécutant les commandes suivantes :
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)Pour les déploiements existants
ALB peut être mis à jour en exécutant les commandes suivantes :
Remarque
Pendant la mise à niveau, veillez à spécifier les
--namespaceparamètres ou--set albController.namespacesi les espaces de noms ont été remplacés dans l’installation précédemment installée. Pour déterminer les espaces de noms précédents utilisés, vous pouvez exécuter la commandehelm listpour l’espace de noms helm etkubectl get pod -A -l app=alb-controllerpour le contrôleur 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)
Vérifier l’installation du contrôleur ALB
Vérifiez que les pods du contrôleur ALB sont prêts :
kubectl get pods -n azure-alb-systemLa sortie suivante doit s’afficher :
NAME PRÊT STATUT REDÉMARRE ÂGE alb-controller-6648c5d5c-sdd9t 1/1 Exécution en cours 0 4 j 6 h alb-controller-6648c5d5c-au234 1/1 Exécution en cours 0 4 j 6 h Vérifiez que GatewayClass
azure-alb-externalest installé sur votre cluster :kubectl get gatewayclass azure-alb-external -o yamlVous devez voir que GatewayClass a une condition Valid GatewayClass. Cette condition indique qu’une classe de passerelle par défaut est configurée et que toutes les ressources de passerelle qui référencent cette gatewayClass sont gérées automatiquement par le contrôleur 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
Étapes suivantes
Maintenant que vous avez correctement installé un contrôleur ALB sur votre cluster, vous pouvez approvisionner les ressources pour Passerelle d’application pour conteneurs dans Azure.
L’étape suivante consiste à lier votre contrôleur ALB à Passerelle d’application pour conteneurs. La façon dont vous créez ce lien dépend de votre stratégie de déploiement.
Il existe deux stratégies de déploiement pour la gestion de Passerelle d’application pour conteneurs :
-
Apportez votre propre déploiement (BYO) : dans cette stratégie de déploiement, le déploiement et le cycle de vie de la ressource pour la Passerelle d’application pour conteneurs, la ressource d’association et la ressource frontale, sont implémentés via le Portail Microsoft Azure, CLI, PowerShell, Terraform, etc., et sont référencés dans la configuration dans Kubernetes.
- Pour utiliser un déploiement BYO, consultez Créer Application Gateway pour conteneurs : apportez votre propre déploiement.
-
Managé par le contrôleur ALB : dans cette stratégie de déploiement, le contrôleur ALB déployé dans Kubernetes est responsable du cycle de vie de la ressource pour Passerelle d’application pour conteneurs et de ses sous-ressources. Le contrôleur ALB crée une ressource pour Passerelle d’application pour conteneurs lorsqu’une ressource personnalisée ApplicationLoadBalancer est définie sur le cluster. Le cycle de vie du service est basé sur le cycle de vie de la ressource personnalisée.
- Pour utiliser un déploiement managé ALB, consultez Créer Application Gateway pour conteneurs géré par ALB Controller.
Désinstaller Passerelle d’application pour conteneurs et le contrôleur ALB
Si vous souhaitez désinstaller le contrôleur ALB, effectuez les étapes suivantes.
Supprimez Passerelle d’application pour conteneurs. Vous pouvez supprimer le groupe de ressources contenant les ressources pour Passerelle d’application pour conteneurs :
az group delete --resource-group $RESOURCE_GROUPDésinstallez le contrôleur ALB et ses ressources de votre cluster en exécutant les commandes suivantes :
helm uninstall alb-controller kubectl delete ns azure-alb-system kubectl delete gatewayclass azure-alb-external
Remarque
Si un autre espace de noms a été utilisé pour l’installation d’alb-controller, veillez à spécifier le paramètre -n dans la commande de désinstallation helm pour définir l’espace de noms approprié à utiliser. Par exemple : helm uninstall alb-controller -n unique-namespace