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:

  1. 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
    
  2. 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
    
  3. 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

  1. 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. Počkejte přibližně minutu, než se identita před delegováním identity replikuje do MICROSOFT Entra ID.

  2. Instalace kontroleru ALB pomocí Nástroje Helm

    Pro nová nasazení

    K instalaci ovladače ALB použijte helm install příkaz.

    helm install Po spuštění příkazu nasadí chart Helm do výchozího oboru názvů. Po 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é parametry --namespace ani parametry, použije se výchozí obor názvů pro chart Helm a obor názvů azure-alb-system se použije pro komponenty --set albController.namespace kontroleru ALB. Pokud ještě není definovaný obor názvů prostředku chartu Helm, ujistěte se, že --create-namespace je parametr také zadán spolu s --namespace parametry.-n

    Ovladač ALB lze nainstalovat spuštěním následujících příkazů:

    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-resource-namespace> \
         --version 1.0.0 \
         --set albController.namespace=<alb-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 spustit helm list příkaz pro obor názvů helm a kubectl get pod -A -l app=alb-controller řadič ALB.

    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-resource-namespace> \
        --version 1.0.0 \
        --set albController.namespace=<alb-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

  1. 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
  2. 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 znamená, ž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, přidružení a front-end prostřednictvím webu Azure Portal, rozhraní příkazového řádku, PowerShellu, Terraformu atd. a odkazuje se na to v konfiguraci v rámci Kubernetes.
  • 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.

Odinstalace služby Application Gateway pro kontejnery a kontroler ALB

Pokud chcete odinstalovat ovladač ALB, proveďte následující kroky.

  1. 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
  1. 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