Share via


Rövid útmutató: Application Gateway telepítése tárolókhoz ALB-vezérlőhöz

Az ALB-vezérlő felelős az Átjáró API és a Bejövő API konfigurációjának a Kubernetesen belüli fordításáért az Application Gateway for Containers terheléselosztási szabályainak érdekében. Az alábbi útmutató végigvezeti az ALB-vezérlő új vagy meglévő AKS-fürtbe való üzembe helyezéséhez szükséges lépéseket.

Előfeltételek

Az Application Gateway for Containers Azure-ban való üzembe helyezése és az ALB-vezérlő telepítése előtt el kell végeznie a következő feladatokat:

  1. Készítse elő az Azure-előfizetést és az ügyfelet 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. Állítson be egy AKS-fürtöt a számítási feladathoz.

    Feljegyzés

    Az AKS-fürtnek olyan régióban kell lennie, ahol az Application Gateway for Containers elérhető az AKS-fürtnek, az Azure CNI-t kell használnia. Az AKS-fürtnek engedélyeznie kell a számítási feladatok identitásának funkcióját. Megtudhatja, hogyan engedélyezheti a számítási feladatok identitását egy meglévő AKS-fürtön.

    Ha meglévő fürtöt használ, győződjön meg arról, hogy engedélyezi a számítási feladatok identitásának támogatását az AKS-fürtön. A számítási feladatok identitásai az alábbiakon keresztül engedélyezhetők:

     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
    

    Ha nem rendelkezik meglévő fürttel, az alábbi parancsokkal hozzon létre egy új AKS-fürtöt, amelyen engedélyezve van az Azure CNI és a számítási feladatok identitása.

    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. A Helm telepítése

    A Helm egy nyílt forráskódú csomagolóeszköz, amely az ALB-vezérlő telepítéséhez használható.

    Feljegyzés

    A Helm már elérhető az Azure Cloud Shellben. Az Azure Cloud Shell használata esetén nincs szükség további Helm-telepítésre.

    A Helm windowsos vagy Linux rendszerű helyi eszközre való telepítéséhez az alábbi lépéseket is használhatja. Győződjön meg arról, hogy a helm legújabb verziója van telepítve.

    A telepítési beállításokat a telepítési útmutatóban találja. Hasonlóképpen, ha a Windows verziója Windows-csomagkezelő winget telepítve van, a következő parancsot hajthatja végre:

    winget install helm.helm
    

Az ALB-vezérlő telepítése

  1. Hozzon létre egy felhasználó által felügyelt identitást az ALB-vezérlőhöz, és egyesítse az identitást számítási feladat identitásaként az AKS-fürtben való használathoz.

    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"
    

    Az ALB-vezérlőnek egy azure-alb-identity nevű összevont hitelesítő adatot kell létrehoznia. Az összes többi összevont hitelesítőadat-név nem támogatott.

    Feljegyzés

    A felügyelt identitás közvetlen hozzárendelése a létrehozás után olyan hibát eredményezhet, amely miatt a principalId nem létezik. Az identitás delegálása előtt hagyjon körülbelül egy percet arra, hogy az identitás replikálódjon a Microsoft Entra-azonosítóban.

  2. Az ALB-vezérlő telepítése a Helm használatával

    Új üzemelő példányok esetén

    Az ALB-vezérlő telepítéséhez használja a helm install parancsot.

    helm install A parancs futtatásakor üzembe helyezi a helm-diagramot az alapértelmezett névtérben. Az alb-vezérlő üzembe helyezésekor az azure-alb-system névtérben lesz üzembe helyezve. Mindkét névteret igény szerint egymástól függetlenül felül lehet bírálni. A helm-diagram által üzembe helyezett névtér felülbírálásához megadhatja a --namespace (vagy -n) paramétert. Az alb-controller által használt azure-alb-system névtér felülbírálásához a telepítés során (--set albController.namespace) beállíthatja az albController.namespace tulajdonságot. Ha sem a paraméterek, sem a --namespace--set albController.namespace paraméterek nincsenek meghatározva, a rendszer az alapértelmezett névteret használja a helm-diagramhoz, és az azure-alb-system névteret használja a rendszer az ALB-vezérlő összetevőihez. Végül, ha a helm-diagram erőforrásának névtere még nincs meghatározva, győződjön meg arról, hogy a --create-namespace paraméter a paraméterekkel -n--namespace együtt is meg van adva.

    Az ALB-vezérlő a következő parancsok futtatásával telepíthető:

    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.2 \
         --set albController.namespace=<alb-controller-namespace> \
         --set albController.podIdentity.clientID=$(az identity show -g $RESOURCE_GROUP -n azure-alb-identity --query clientId -o tsv)
    

    Meglévő üzemelő példányok esetén

    Az ALB a következő parancsok futtatásával frissíthető:

    Feljegyzés

    A frissítés során győződjön meg arról, hogy megadja a --namespace névtereket vagy --set albController.namespace paramétereket, ha a korábban telepített telepítés felülírta a névtereket. Az előző névterek meghatározásához futtathatja a helm list helm-névtér és kubectl get pod -A -l app=alb-controller az ALB-vezérlő parancsát.

    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.2 \
        --set albController.namespace=<alb-controller-namespace> \
        --set albController.podIdentity.clientID=$(az identity show -g $RESOURCE_GROUP -n azure-alb-identity --query clientId -o tsv)
    

Az ALB-vezérlő telepítésének ellenőrzése

  1. Ellenőrizze, hogy az ALB-vezérlő podjai készen állnak-e:

    kubectl get pods -n azure-alb-system
    

    A következőnek kell megjelennie:

    NÉV KÉSZ ÁLLAPOT ÚJRAINDUL KOR
    alb-controller-bootstrap-6648c5d5c-hrmpc 1/1 Futó 0 4d6h
    alb-controller-6648c5d5c-sddd9t 1/1 Futó 0 4d6h
    alb-controller-6648c5d5c-au234 1/1 Futó 0 4d6h
  2. Ellenőrizze, hogy a GatewayClass azure-application-lb telepítve van-e a fürtön:

    kubectl get gatewayclass azure-alb-external -o yaml
    

    Látnia kell, hogy a GatewayClass olyan feltétellel rendelkezik, amely az Érvényes átjáróosztályt olvassa. Ez azt jelzi, hogy be van állítva egy alapértelmezett GatewayClass, és hogy az erre a GatewayClass-ra hivatkozó átjáró-erőforrásokat az ALB-vezérlő automatikusan kezeli.

    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
    

Következő lépések

Most, hogy sikeresen telepített egy ALB-vezérlőt a fürtön, kiépítheti az Application Gateway for Containers erőforrásait az Azure-ban.

A következő lépés az ALB-vezérlő csatlakoztatása az Application Gateway for Containershez. A hivatkozás létrehozása az üzembe helyezési stratégiától függ.

A tárolókhoz készült Application Gateway kezeléséhez két üzembehelyezési stratégia létezik:

  • Saját (BYO) üzembe helyezés: Ebben az üzembe helyezési stratégiában az Application Gateway for Containers-erőforrás, a társítási erőforrás és a frontend erőforrás üzembe helyezése és életciklusa az Azure Portalon, a parancssori felületen, a PowerShellen, a Terraformon stb. keresztül történik, és a Kubernetes konfigurációjában hivatkozik magára.
  • Az ALB-vezérlő felügyeli: Ebben az üzembehelyezési stratégiában a Kubernetesben üzembe helyezett ALB-vezérlő felelős az Application Gateway for Containers erőforrás és annak alerőforrásai életciklusáért. Az ALB-vezérlő létrehoz egy Application Gateway for Containers-erőforrást, amikor egy ApplicationLoadBalancer egyéni erőforrás van definiálva a fürtön. A szolgáltatás életciklusa az egyéni erőforrás életciklusán alapul.

Application Gateway eltávolítása tárolókhoz és ALB-vezérlőhöz

Ha el szeretné távolítani az ALB-vezérlőt, hajtsa végre az alábbi lépéseket.

  1. Törölje a tárolókhoz készült Application Gatewayt, törölheti az Application Gateway for Containers-erőforrásokat tartalmazó erőforráscsoportot:
az group delete --resource-group $RESOURCE_GROUP
  1. Távolítsa el az ALB-vezérlőt és erőforrásait a fürtből, és futtassa a következő parancsokat:
helm uninstall alb-controller
kubectl delete ns azure-alb-system
kubectl delete gatewayclass azure-alb-external

Feljegyzés

Ha egy másik névteret használtak az alb-controller telepítéséhez, győződjön meg arról, hogy a -n paramétert adja meg a helm eltávolítási parancsán a használni kívánt névtér meghatározásához. Például: helm uninstall alb-controller -n unique-namespace