Rychlý start: Nasazení aplikační brány pro kontejnery kotroleru ALB
Kontroler ALB zodpovídá za překlad rozhraní API brány a konfigurace rozhraní API příchozího přenosu dat v rámci Kubernetes do pravidel vyrovnávání zatížení ve službě Application Gateway 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 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 své předplatné Azure a 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, ve které je cluster AKS dostupný ve službě Application Gateway pro kontejnery, by měl používat Azure CNI. 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:
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 id objektu zabezpečení neexistuje. Před delegováním identity počkejte přibližně minutu, než se identita replikuje do ID Microsoft Entra.
Instalace kontroleru ALB pomocí Nástroje Helm
Pro nová nasazení
K instalaci ovladače ALB použijte
helm install
příkaz.helm install
Při spuštění příkazu nasadí chart Helm do výchozího oboru názvů. Při nasazení kontroleru alb se 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 přepsat obor názvů, na který je chart Helm nasazený, můžete zadat parametr --namespace (nebo -n). Chcete-li přepsat obor názvů azure-alb-system používaný alb-controller, můžete nastavit albController.namespace vlastnost během instalace (--set albController.namespace
). Pokud nejsou definovány žádné--namespace
parametry ani--set albController.namespace
parametry, použije se výchozí obor názvů pro chart Helm a obor názvů azure-alb-system se používá pro komponenty kontroleru ALB. Pokud ještě není definovaný obor názvů pro prostředek chartu Helm, ujistěte se, že--create-namespace
je parametr zadaný spolu s--namespace
parametry nebo-n
parametry.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.2.3 \ --set albController.namespace=$CONTROLLER_NAMESPACE \ --set albController.podIdentity.clientID=$(az identity show -g $RESOURCE_GROUP -n azure-alb-identity --query clientId -o tsv)
Pro existují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
--namespace
parametry,--set albController.namespace
pokud byly obory názvů přepsány v dříve nainstalované instalaci. Pokud chcete určit použité předchozí obory názvů, můžete spustithelm list
příkaz pro obor názvů helm akubectl get pod -A -l app=alb-controller
řadič 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.2.3 \ --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ěli byste vidět následující:
NAME PŘIPRAVENO STAV RESTARTY AGE (VĚK) alb-controller-bootstrap-6648c5d5c-hrmpc 1/1 Spuštěno 0 4d6h alb-controller-6648c5d5c-sdd9t 1/1 Spuštěno 0 4d6h alb-controller-6648c5d5c-au234 1/1 Spuštěno 0 4d6h Ověřte, že je v clusteru nainstalovaná třída GatewayClass
azure-application-lb
:kubectl get gatewayclass azure-alb-external -o yaml
Měli byste vidět, že gatewayClass má podmínku, která čte platnou třídu GatewayClass. To 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:
- Přineste si vlastní nasazení (BYO): V této strategii nasazení se předpokládá nasazení a životní cyklus prostředku Služby Application Gateway pro kontejnery, prostředku přidružení a front-endového prostředku prostřednictvím webu Azure Portal, rozhraní příkazového řádku, PowerShellu, Terraformu atd. a odkazovaných v konfiguraci v rámci 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 vlastní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