Bagikan melalui


Mulai Cepat: Menyebarkan Pengontrol ALB Application Gateway untuk Kontainer

Pengontrol ALB bertanggung jawab untuk menerjemahkan konfigurasi API Gateway dan Ingress API dalam Kubernetes untuk memuat aturan penyeimbangan dalam Application Gateway untuk Kontainer. Panduan berikut menjelaskan langkah-langkah yang diperlukan untuk menyediakan Pengontrol ALB ke dalam kluster AKS baru atau yang sudah ada.

Prasyarat

Anda perlu menyelesaikan tugas berikut sebelum menyebarkan Application Gateway untuk Kontainer di Azure dan menginstal Pengontrol ALB pada kluster Anda:

  1. Siapkan langganan Azure dan klien Anda 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. Atur kluster AKS untuk beban kerja Anda.

    Catatan

    Kluster AKS harus berada di wilayah di mana Application Gateway untuk Kontainer tersedia kluster AKS harus menggunakan Azure CNI. Kluster AKS harus mengaktifkan fitur identitas beban kerja. Pelajari cara mengaktifkan identitas beban kerja pada kluster AKS yang ada.

    Jika menggunakan kluster yang ada, pastikan Anda mengaktifkan dukungan Identitas Beban Kerja pada kluster AKS Anda. Identitas beban kerja dapat diaktifkan melalui yang berikut ini:

    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
    

    Jika Anda tidak memiliki kluster yang sudah ada, gunakan perintah berikut untuk membuat kluster AKS baru dengan Azure CNI dan identitas beban kerja diaktifkan.

    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. Menginstal Helm

    Helm adalah alat pengemasan sumber terbuka yang digunakan untuk menginstal pengontrol ALB.

    Catatan

    Helm sudah tersedia di Azure Cloud Shell. Jika Anda menggunakan Azure Cloud Shell, tidak diperlukan penginstalan Helm tambahan.

    Anda juga dapat menggunakan langkah-langkah berikut untuk menginstal Helm pada perangkat lokal yang menjalankan Windows atau Linux. Pastikan Anda telah menginstal helm versi terbaru.

    Lihat petunjuk penginstalan untuk berbagai opsi penginstalan. Demikian pula, jika versi Windows Anda telah Pengelola Paket Windows winget terinstal, Anda dapat menjalankan perintah berikut:

    winget install helm.helm
    

Menginstal Pengontrol ALB

  1. Buat identitas terkelola pengguna untuk pengontrol ALB dan federasi identitas sebagai Identitas Beban Kerja untuk digunakan di kluster 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"
    

    Pengontrol ALB memerlukan kredensial federasi dengan nama azure-alb-identity. Nama kredensial federasi lainnya tidak didukung.

    Catatan

    Penugasan identitas terkelola segera setelah pembuatan dapat mengakibatkan kesalahan bahwa principalId tidak ada. Izinkan sekitar satu menit waktu berlalu agar identitas direplikasi di ID Microsoft Entra sebelum mendelegasikan identitas.

  2. Menginstal Pengontrol ALB menggunakan Helm

    Untuk penyebaran baru

    Untuk menginstal Pengontrol ALB, gunakan helm install perintah .

    helm install Saat perintah dijalankan, perintah menyebarkan bagan helm ke namespace default. Saat pengontrol alb disebarkan, pengontrol disebarkan ke namespace layanan azure-alb-system . Kedua namespace ini dapat ditimpa secara independen sesuai keinginan. Untuk mengganti namespace layanan tempat bagan helm disebarkan, Anda dapat menentukan parameter --namespace (atau -n). Untuk mengganti namespace layanan azure-alb-system yang digunakan oleh alb-controller, Anda dapat mengatur properti albController.namespace selama penginstalan (--set albController.namespace). Jika tidak ada --namespace parameter atau --set albController.namespace yang ditentukan, namespace default digunakan untuk bagan helm dan namespace layanan azure-alb-system digunakan untuk komponen pengontrol ALB. Terakhir, jika namespace untuk sumber daya bagan helm belum ditentukan, pastikan --create-namespace parameter juga ditentukan bersama dengan --namespace parameter atau -n .

    Pengontrol ALB dapat diinstal dengan menjalankan perintah berikut:

    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)
    

    Untuk penyebaran yang ada

    ALB dapat dimutakhirkan dengan menjalankan perintah berikut:

    Catatan

    Selama peningkatan, pastikan Anda menentukan --namespace parameter atau --set albController.namespace jika namespace layanan ditimpa dalam penginstalan yang diinstal sebelumnya. Untuk menentukan namespace sebelumnya yang digunakan, Anda dapat menjalankan helm list perintah untuk namespace helm dan kubectl get pod -A -l app=alb-controller untuk pengontrol 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)
    

Memverifikasi penginstalan Pengontrol ALB

  1. Verifikasi pod Pengontrol ALB sudah siap:

    kubectl get pods -n azure-alb-system
    

    Anda akan melihat berikut ini:

    NAMA SIAP STATUS HIDUPKAN ULANG USIA
    alb-controller-bootstrap-6648c5d5c-hrmpc 1/1 Sedang berjalan 0 4d6h
    alb-controller-6648c5d5c-sdd9t 1/1 Sedang berjalan 0 4d6h
    alb-controller-6648c5d5c-au234 1/1 Sedang berjalan 0 4d6h
  2. Verifikasi GatewayClass azure-application-lb diinstal pada kluster Anda:

    kubectl get gatewayclass azure-alb-external -o yaml
    

    Anda akan melihat bahwa GatewayClass memiliki kondisi yang membaca GatewayClass Valid. Ini menunjukkan bahwa GatewayClass default disiapkan dan bahwa sumber daya gateway apa pun yang mereferensikan GatewayClass ini dikelola oleh Pengontrol ALB secara otomatis.

    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
    

Langkah berikutnya

Sekarang setelah Anda berhasil menginstal Pengontrol ALB pada kluster, Anda dapat menyediakan sumber daya Application Gateway For Containers di Azure.

Langkah selanjutnya adalah menautkan pengontrol ALB Anda ke Application Gateway untuk Kontainer. Cara Anda membuat tautan ini tergantung pada strategi penyebaran Anda.

Ada dua strategi penyebaran untuk mengelola Application Gateway untuk Kontainer:

  • Bawa penyebaran Anda sendiri (BYO): Dalam strategi penyebaran ini, penyebaran dan siklus hidup Application Gateway untuk sumber daya Kontainer, sumber daya Asosiasi, dan sumber daya Frontend diasumsikan melalui portal Azure, CLI, PowerShell, Terraform, dll. dan dirujuk dalam konfigurasi dalam Kubernetes.
  • Dikelola oleh pengontrol ALB: Dalam strategi penyebaran ini, Pengontrol ALB yang disebarkan di Kubernetes bertanggung jawab atas siklus hidup Application Gateway untuk sumber daya Kontainer dan sub sumber dayanya. Pengontrol ALB membuat Application Gateway untuk sumber daya Kontainer saat sumber daya kustom ApplicationLoadBalancer ditentukan pada kluster. Siklus hidup layanan didasarkan pada siklus hidup sumber daya kustom.

Hapus instalan Application Gateway untuk Kontainer dan Pengontrol ALB

Jika Anda ingin menghapus instalasi Pengontrol ALB, selesaikan langkah-langkah berikut.

  1. Hapus Application Gateway untuk Kontainer, Anda dapat menghapus Grup Sumber Daya yang berisi Application Gateway untuk sumber daya Kontainer:
az group delete --resource-group $RESOURCE_GROUP
  1. Hapus instalan Pengontrol ALB dan sumber dayanya dari kluster Anda jalankan perintah berikut:
helm uninstall alb-controller
kubectl delete ns azure-alb-system
kubectl delete gatewayclass azure-alb-external

Catatan

Jika namespace yang berbeda digunakan untuk penginstalan alb-controller, pastikan Anda menentukan parameter -n pada perintah hapus instalan helm untuk menentukan namespace yang tepat untuk digunakan. Misalnya: helm uninstall alb-controller -n unique-namespace