Sdílet prostřednictvím


Rychlý start: Nasazení aplikační brány pro kontejnery kontroleru ALB

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:

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

  2. 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řepsat azure-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ů a azure-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říkaz helm list pro obor názvů helm a příkaz kubectl 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

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

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