Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Kontroler ALB zodpovídá za překlad konfigurace Gateway API a Ingress API v rámci Kubernetes do pravidel vyrovnávání zatížení ve službě Application Gateway for Containers pro kontejnery. Následující průvodce vás provede kroky potřebnými ke zřízení kontroleru ALB do nového nebo existujícího clusteru Azure Kubernetes Service (AKS).
Požadavky
Před nasazením služby Application Gateway pro kontejnery v Azure a instalací kontroleru ALB do clusteru musíte provést následující úlohy:
Připravte si předplatné Azure a svého klienta
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 alb
Nastavte cluster AKS pro vaši úlohu.
Poznámka:
Cluster AKS musí být v oblasti, kde je k dispozici Application Gateway pro kontejnery, a měl by používat Azure CNI nebo Azure CNI Overlay. Cluster AKS by měl mít povolenou funkci identity úloh. Zjistěte, jak povolit identitu úloh v existujícím clusteru AKS.
Pokud používáte existující cluster, ujistěte se, že ve vašem clusteru AKS povolíte podporu identity úloh. Identity úloh je možné povolit pomocí následujících příkazů:
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
Pokud nemáte existující cluster, pomocí následujících příkazů vytvořte nový cluster AKS s povolenou identitou azure CNI a identitou úloh.
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
Instalace nástroje Helm
Helm je opensourcový nástroj pro balení, který se používá k instalaci kontroleru ALB.
Poznámka:
Helm je už dostupný v Azure Cloud Shellu. Pokud používáte Azure Cloud Shell, není nutná žádná další instalace Helmu.
K instalaci Helmu na místní zařízení s Windows nebo Linuxem můžete použít také následující kroky. Ujistěte se, že máte nainstalovanou nejnovější verzi nástroje Helm.
Pokyny k instalaci najdete v různých možnostech instalace. Podobně pokud má vaše verze Windows nainstalovanou Správce balíčků systému Windows winget, můžete spustit následující příkaz:
winget install helm.helm
Instalace ovladače ALB
Vytvořte identitu spravovanou uživatelem pro kontroler ALB a federujte ji jako identitu úlohy, která se použije v clusteru 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"
Kontroler ALB vyžaduje federované přihlašovací údaje s názvem
azure-alb-identity
. Jakýkoli jiný název federovaných přihlašovacích údajů není podporován.Poznámka:
Přiřazení spravované identity okamžitě po vytvoření může způsobit chybu, že principalId neexistuje. Před delegováním identity počkejte přibližně minutu, než se identita replikuje do ID Microsoft Entra.
Instalace ALB řadiče pomocí Helm
Pro nová nasazení
K instalaci ovladače ALB použijte
helm install
příkaz.Při spuštění příkazu nasadí Helm chart do
helm install
oboru názvů. Při nasazení kontroleru alb se tento nasadí do oboru názvůazure-alb-system
. Oba tyto obory názvů mohou být přepsány nezávisle podle potřeby. Pokud chcete změnit obor názvů, do kterého je Helm chart nasazen, můžete zadat parametr --namespace (nebo -n). Chcete-li přepsatazure-alb-system
obor názvů používaný alb-controller, můžete nastavit albController.namespace vlastnost během instalace (--set albController.namespace
). Pokud není definován ani--namespace
ani--set albController.namespace
, pro helm chart se použije výchozí obor názvů aazure-alb-system
obor názvů se použije pro součásti kontroleru ALB. Pokud ještě není definovaný obor názvů pro prostředek Helm chartu, ujistěte se, že parametr--create-namespace
je zadán spolu s parametrem--namespace
nebo-n
.Ovladač ALB lze nainstalovat spuštěním následujících příkazů:
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.6.7 \ --set albController.namespace=$CONTROLLER_NAMESPACE \ --set albController.podIdentity.clientID=$(az identity show -g $RESOURCE_GROUP -n azure-alb-identity --query clientId -o tsv)
Pro stávající nasazení
Alb je možné upgradovat spuštěním následujících příkazů:
Poznámka:
Během upgradu se ujistěte, že jste zadali parametry
--namespace
nebo--set albController.namespace
, pokud byly obory názvů přepsány v předchozí instalaci. Pokud chcete určit použité předchozí obory názvů, můžete spustit příkazhelm list
pro obor názvů helm a příkazkubectl get pod -A -l app=alb-controller
pro řadič pro 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.6.7 \ --set albController.namespace=$CONTROLLER_NAMESPACE \ --set albController.podIdentity.clientID=$(az identity show -g $RESOURCE_GROUP -n azure-alb-identity --query clientId -o tsv)
Ověření instalace ovladače ALB
Ověřte, že jsou pody kontroleru ALB připravené:
kubectl get pods -n azure-alb-system
Měl by se zobrazit následující výstup:
JMÉNO PŘIPRAVENO STAV RESTARTY AGE (VĚK) alb-controller-bootstrap-6648c5d5c-hrmpc 1/1 Běhání 0 4 dny 6 hodin alb-controller-6648c5d5c-sdd9t 1/1 Běhání 0 4 dny 6 hodin alb-controller-6648c5d5c-au234 1/1 Běhání 0 4 dny 6 hodin Ověřte, zda je GatewayClass
azure-application-lb
nainstalována ve vašem clusteru.kubectl get gatewayclass azure-alb-external -o yaml
Měli byste vidět, že GatewayClass má podmínku, která je platná třída GatewayClass. Tato podmínka značí, že je nastavena výchozí třída GatewayClass a že všechny prostředky brány odkazované na tuto třídu GatewayClass se spravují automaticky kontrolerem 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
Další kroky
Teď, když jste úspěšně nainstalovali kontroler ALB do clusteru, můžete zřídit prostředky služby Application Gateway for Containers v Azure.
Dalším krokem je propojení kontroleru ALB se službou Application Gateway for Containers. Způsob vytvoření tohoto odkazu závisí na vaší strategii nasazení.
Existují dvě strategie nasazení pro správu Application Gateway pro kontejnery:
-
Vlastní nasazení (BYO): V této strategii nasazení je nasazení a životní cyklus prostředků Služby Application Gateway pro kontejnery, prostředků přidružení a front-endových prostředků spravován prostřednictvím Azure Portalu, příkazového řádku, PowerShellu, Terraformu atd., a tyto prostředky jsou odkazovány v konfiguraci Kubernetes.
- Pokud chcete použít nasazení BYO, přečtěte si téma Vytvoření služby Application Gateway pro kontejnery – přineste si vlastní nasazení.
-
Spravuje kontroler ALB: V této strategii nasazení zodpovídá kontroler ALB nasazený v Kubernetes za životní cyklus prostředku služby Application Gateway for Containers a jeho dílčích prostředků. Kontroler ALB vytvoří prostředek Application Gateway for Containers, když je v clusteru definovaný vlastní prostředek ApplicationLoadBalancer . Životní cyklus služby vychází z životního cyklu uživatelského prostředku.
- Pokud chcete použít spravované nasazení ALB, přečtěte si téma Vytvoření služby Application Gateway pro kontejnery spravované kontrolerem ALB.
Odinstalace služby Application Gateway pro kontejnery a kontroler ALB
Pokud chcete odinstalovat ovladač ALB, proveďte následující kroky.
Odstraňte službu Application Gateway for Containers. Můžete odstranit skupinu prostředků obsahující prostředky služby Application Gateway for Containers:
az group delete --resource-group $RESOURCE_GROUP
Odinstalujte ovladač ALB a jeho prostředky z clusteru, spusťte následující příkazy:
helm uninstall alb-controller kubectl delete ns azure-alb-system kubectl delete gatewayclass azure-alb-external
Poznámka:
Pokud se pro instalaci alb-controlleru použil jiný obor názvů, ujistěte se, že jste v příkazu helm uninstall zadali parametr -n, abyste definovali správný obor názvů, který se má použít. Příklad: helm uninstall alb-controller -n unique-namespace