Démarrage rapide : Déployer l’application Gateway pour le contrôleur ALB de conteneurs
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 Application Gateway pour les conteneurs. Le guide suivant décrit les étapes nécessaires pour approvisionner un contrôleur ALB dans un cluster 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
az-cli
client.# 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
Définissez un cluster AKS pour votre charge de travail.
Notes
Le cluster AKS doit se trouver dans une région où Application Gateway pour les conteneurs est disponible. Le cluster AKS doit utiliser Azure CNI. 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 éléments suivants :
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
Si 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-key
Installer Helm
Helm est un outil d’empaquetage open source utilisé pour installer le contrôleur ALB.
Notes
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 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é géré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 d’azure-alb-identity. Tout autre nom d’informations d’identification fédérées n’est pas pris en charge.
Notes
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
helm install
commande est exécutée, elle déploie le graphique helm dans l’espace de noms par défaut. Lorsque alb-controller est déployé, il est déployé dans l’espace de noms azure-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 noms azure-alb-system utilisé par alb-controller, vous pouvez définir la propriété albController.namespace pendant l’installation (--set albController.namespace
). Si aucun des--namespace
paramètres ou--set albController.namespace
n’est défini, l’espace de noms par défaut est utilisé pour le graphique helm et l’espace de noms azure-alb-system est 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-namespace
paramètre est également spécifié avec les--namespace
paramè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.3.7 \ --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
--namespace
paramètres ou--set albController.namespace
si 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 lahelm list
commande pour l’espace de noms helm etkubectl get pod -A -l app=alb-controller
pour 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.3.7 \ --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-system
Les éléments suivants doivent s’afficher :
NOM PRÊT STATUT REDÉMARRAGES AGE alb-controller-bootstrap-6648c5d5c-hrmpc 1/1 Exécution en cours 0 4d6h alb-controller-6648c5d5c-sdd9t 1/1 Exécution en cours 0 4d6h alb-controller-6648c5d5c-au234 1/1 Exécution en cours 0 4d6h Vérifiez que GatewayClass
azure-application-lb
est installé sur votre cluster :kubectl get gatewayclass azure-alb-external -o yaml
Vous devez voir que GatewayClass a une condition qui lit Valid GatewayClass. Cela indique que un GatewayClass par défaut est configurée et que toutes les ressources de passerelle qui font référence à ce 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 Application Gateway pour les conteneurs dans Azure.
L’étape suivante consiste à lier votre contrôleur ALB à Application Gateway pour les 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 l’application Gateway pour les 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 les 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 Application Gateway pour les conteneurs et de ses sous-ressources. Le contrôleur ALB crée une ressource pour Application Gateway pour les 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 géré par ALB, consultez Créer un Application Gateway pour les conteneurs géré par le contrôleur ALB
Désinstaller Application Gateway pour les conteneurs et le contrôleur ALB
Si vous souhaitez désinstaller le contrôleur ALB, effectuez les étapes suivantes.
- Supprimez l’Application Gateway pour les conteneurs. Vous pouvez supprimer le groupe de ressources contenant les ressources pour Application Gateway pour les conteneurs :
az group delete --resource-group $RESOURCE_GROUP
- Dé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
Notes
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