Szybki start: wdrażanie usługi Application Gateway for Containers kontrolera usługi ALB
Kontroler usługi ALB jest odpowiedzialny za tłumaczenie konfiguracji interfejsu API bramy i interfejsu API ruchu przychodzącego w usłudze Kubernetes na reguły równoważenia obciążenia w usłudze Application Gateway for Containers. W poniższym przewodniku przedstawiono kroki wymagane do aprowizacji kontrolera usługi ALB do nowego lub istniejącego klastra usługi AKS.
Wymagania wstępne
Przed wdrożeniem usługi Application Gateway for Containers na platformie Azure i zainstalowaniu kontrolera usługi ALB w klastrze należy wykonać następujące zadania:
Przygotuj subskrypcję platformy Azure i 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
Ustaw klaster usługi AKS dla obciążenia.
Uwaga
Klaster usługi AKS musi znajdować się w regionie, w którym usługa Application Gateway for Containers jest dostępna w klastrze usługi AKS, powinien używać usługi Azure CNI. Klaster usługi AKS powinien mieć włączoną funkcję tożsamości obciążenia. Dowiedz się, jak włączyć tożsamość obciążenia w istniejącym klastrze usługi AKS.
Jeśli korzystasz z istniejącego klastra, upewnij się, że włączono obsługę tożsamości obciążenia w klastrze usługi AKS. Tożsamości obciążeń można włączyć za pomocą następujących elementów:
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
Jeśli nie masz istniejącego klastra, użyj następujących poleceń, aby utworzyć nowy klaster usługi AKS z włączoną usługą Azure CNI i tożsamością obciążenia.
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
Instalowanie narzędzia Helm
Helm to narzędzie do tworzenia pakietów typu open source, które służy do instalowania kontrolera usługi ALB.
Uwaga
Program Helm jest już dostępny w usłudze Azure Cloud Shell. Jeśli używasz usługi Azure Cloud Shell, nie jest konieczna żadna dodatkowa instalacja programu Helm.
Aby zainstalować program Helm na urządzeniu lokalnym z systemem Windows lub Linux, możesz również użyć poniższych kroków. Upewnij się, że masz zainstalowaną najnowszą wersję programu Helm.
Zapoznaj się z instrukcjami dotyczącymi instalacji dla różnych opcji instalacji. Podobnie, jeśli zainstalowano wersję systemu Windows Menedżer pakietów systemu Windows winget, możesz wykonać następujące polecenie:
winget install helm.helm
Instalowanie kontrolera usługi ALB
Utwórz tożsamość zarządzaną użytkownika dla kontrolera usługi ALB i sfederuj tożsamość jako tożsamość obciążenia do użycia w klastrze usługi 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 usługi ALB wymaga poświadczeń federacyjnych o nazwie azure-alb-identity. Każda inna nazwa poświadczeń federacyjnych nie jest obsługiwana.
Uwaga
Przypisanie tożsamości zarządzanej bezpośrednio po utworzeniu może spowodować błąd, że identyfikator principalId nie istnieje. Poczekaj około minuty, zanim tożsamość zostanie zreplikowana w identyfikatorze Entra firmy Microsoft przed delegowaniem tożsamości.
Instalowanie kontrolera usługi ALB przy użyciu programu Helm
W przypadku nowych wdrożeń
Aby zainstalować kontroler usługi ALB, użyj
helm install
polecenia .Po uruchomieniu
helm install
polecenia program helm wdraża wykres helm w domyślnej przestrzeni nazw. Po wdrożeniu kontrolera alb jest wdrażany w przestrzeni nazw azure-alb-system . Obie te przestrzenie nazw mogą być zastępowane niezależnie zgodnie z potrzebami. Aby zastąpić przestrzeń nazw, w której jest wdrażany wykres helm, możesz określić parametr --namespace (lub -n). Aby zastąpić przestrzeń nazw azure-alb-system używaną przez alb-controller, można ustawić właściwość albController.namespace podczas instalacji (--set albController.namespace
). Jeśli ani parametry nie--namespace
--set albController.namespace
są zdefiniowane, domyślna przestrzeń nazw jest używana dla wykresu helm, a przestrzeń nazw azure-alb-system jest używana dla składników kontrolera usługi ALB. Na koniec, jeśli przestrzeń nazw zasobu wykresu helm nie jest jeszcze zdefiniowana, upewnij się, że--create-namespace
parametr jest również określony wraz z parametrami--namespace
lub-n
.Kontroler usługi ALB można zainstalować, uruchamiając następujące polecenia:
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)
W przypadku istniejących wdrożeń
Usługę ALB można uaktualnić, uruchamiając następujące polecenia:
Uwaga
Podczas uaktualniania upewnij się, że określono
--namespace
parametry lub--set albController.namespace
, jeśli przestrzenie nazw zostały zastąpione w wcześniej zainstalowanej instalacji. Aby określić używane poprzednie przestrzenie nazw, możesz uruchomićhelm list
polecenie dla przestrzeni nazw programu Helm ikubectl get pod -A -l app=alb-controller
kontrolera usługi 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)
Weryfikowanie instalacji kontrolera usługi ALB
Sprawdź, czy zasobniki kontrolera usługi ALB są gotowe:
kubectl get pods -n azure-alb-system
Powinien zostać wyświetlony następujący ekran:
NAZWA GOTOWY STAN PONOWNE URUCHOMIENIA AGE alb-controller-bootstrap-6648c5d5c-hrmpc 1/1 Uruchomiono 0 4d6h alb-controller-6648c5d5c-sdd9t 1/1 Uruchomiono 0 4d6h alb-controller-6648c5d5c-au234 1/1 Uruchomiono 0 4d6h Sprawdź, czy klasa GatewayClass
azure-application-lb
jest zainstalowana w klastrze:kubectl get gatewayclass azure-alb-external -o yaml
Powinien zostać wyświetlony warunek GatewayClass, który odczytuje prawidłową klasę GatewayClass. Oznacza to, że skonfigurowana jest domyślna klasa GatewayClass i że wszystkie zasoby bramy odwołujące się do tej klasy GatewayClass są automatycznie zarządzane przez kontroler usługi 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
Następne kroki
Po pomyślnym zainstalowaniu kontrolera usługi ALB w klastrze możesz aprowizować zasoby usługi Application Gateway for Containers na platformie Azure.
Następnym krokiem jest połączenie kontrolera usługi ALB z usługą Application Gateway for Containers. Sposób tworzenia tego linku zależy od strategii wdrażania.
Istnieją dwie strategie wdrożenia zarządzania dla usługi Application Gateway for Containers:
- Wdrożenie przynieś własne (BYO): w tej strategii wdrażania, wdrożeniu i cyklu życia zasobu usługi Application Gateway for Containers, zasobu skojarzenia i zasobu frontonu jest zakładana za pośrednictwem witryny Azure Portal, interfejsu wiersza polecenia, programu PowerShell, programu Terraform itp. i odwołania w konfiguracji w ramach platformy Kubernetes.
- Zarządzane przez kontroler usługi ALB: W tej strategii wdrażania kontroler usługi ALB wdrożony w usłudze Kubernetes jest odpowiedzialny za cykl życia zasobu usługi Application Gateway for Containers i jego zasobów podrzędnych. Kontroler usługi ALB tworzy zasób usługi Application Gateway dla kontenerów, gdy w klastrze jest zdefiniowany zasób niestandardowy ApplicationLoadBalancer . Cykl życia usługi jest oparty na cyklu życia zasobu niestandardowego.
- Aby użyć wdrożenia zarządzanego przez usługę ALB, zobacz Create Application Gateway for Containers managed by ALB Controller (Tworzenie usługi Application Gateway dla kontenerów zarządzanych przez kontroler usługi ALB)
Odinstalowywanie usługi Application Gateway dla kontenerów i kontrolera usługi ALB
Jeśli chcesz odinstalować kontroler usługi ALB, wykonaj następujące kroki.
- Usuń usługę Application Gateway dla kontenerów. Możesz usunąć grupę zasobów zawierającą zasoby usługi Application Gateway for Containers:
az group delete --resource-group $RESOURCE_GROUP
- Odinstaluj kontroler usługi ALB i jego zasoby z klastra uruchom następujące polecenia:
helm uninstall alb-controller
kubectl delete ns azure-alb-system
kubectl delete gatewayclass azure-alb-external
Uwaga
Jeśli do instalacji kontrolera alb-controller użyto innej przestrzeni nazw, upewnij się, że określono parametr -n w poleceniu dezinstalacji programu Helm, aby zdefiniować właściwą przestrzeń nazw do użycia. Na przykład: helm uninstall alb-controller -n unique-namespace