Bagikan melalui


Tutorial: Mengaktifkan Azure Container Apps di Kubernetes dengan dukungan Azure Arc (Pratinjau)


Dengan kluster Kubernetes dengan dukungan Azure Arc, Anda dapat membuat lokasi kustom yang diaktifkan Container Apps di kluster Kubernetes lokal atau cloud untuk menyebarkan aplikasi Azure Container Apps seperti yang Anda lakukan di wilayah lain.

Tutorial ini akan menunjukkan kepada Anda cara mengaktifkan Azure Container Apps pada kluster Kubernetes dengan dukungan Arc. Dalam tutorial ini, Anda akan:

  • Buat kluster yang terhubung.
  • Membuat ruang kerja Log Analytics.
  • Instal ekstensi Container Apps.
  • Buat lokasi khusus.
  • Buat lingkungan yang terhubung dengan Azure Container Apps.

Catatan

Selama pratinjau, Azure Container Apps di Arc tidak didukung dalam konfigurasi produksi. Artikel ini menyediakan contoh konfigurasi hanya untuk tujuan evaluasi.

Tutorial ini menggunakan Azure Kubernetes Service (AKS) untuk memberikan instruksi konkret untuk menyiapkan lingkungan dari awal. Namun, untuk beban kerja produksi, Anda mungkin tidak ingin mengaktifkan Azure Arc pada kluster AKS karena sudah dikelola di Azure.

Prasyarat

Konfigurasi

Instal ekstensi Azure CLI berikut.

az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
az extension add --name customlocation --upgrade --yes
az extension add --name containerapp  --upgrade --yes

Daftarkan namespace yang diperlukan.

az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.OperationalInsights --wait

Atur variabel lingkungan berdasarkan penyebaran kluster Kubernetes Anda.

GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"

Buat klaster terhubung

Langkah-langkah berikut membantu Anda mulai memahami layanan, tetapi untuk penyebaran produksi, mereka harus dilihat sebagai ilustrasi, bukan preskriptif. Lihat Mulai Cepat: Hubungkan kluster Kube yang ada ke Azure Arc untuk petunjuk umum pembuatan kluster Kube yang diaktifkan Arc Azure.

  1. Buat kluster di Azure Kubernetes Service.

    az group create --name $AKS_CLUSTER_GROUP_NAME --location $LOCATION
    az aks create \
       --resource-group $AKS_CLUSTER_GROUP_NAME \
       --name $AKS_NAME \
       --enable-aad \
       --generate-ssh-keys
    
  2. Dapatkan file kubeconfig dan uji koneksi ke klaster. Secara default, file kubeconfig disimpan ke ~/.kube/config.

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Buat grup sumber daya untuk memuat sumber daya Azure Arc Anda.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. Sambungkan klaster yang Anda buat ke Azure Arc.

    CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
    
  5. Validasi koneksi dengan perintah berikut. Ini harus menunjukkan provisioningState properti sebagai Succeeded. Jika tidak, jalankan perintah lagi setelah satu menit.

    az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
    

Membuat ruang kerja Analitik Log

Ruang kerja Log Analytics menyediakan akses ke log untuk aplikasi Container Apps yang berjalan di kluster Kubernetes dengan dukungan Azure Arc. Ruang kerja Analitik Log bersifat opsional, tetapi disarankan.

  1. Membuat ruang kerja Log Analytics.

    WORKSPACE_NAME="$GROUP_NAME-workspace" # Name of the Log Analytics workspace
    
    az monitor log-analytics workspace create \
        --resource-group $GROUP_NAME \
        --workspace-name $WORKSPACE_NAME
    
  2. Jalankan perintah berikut untuk mendapatkan ID ruang kerja yang dikodekan dan kunci bersama untuk ruang kerja Log Analytics yang sudah ada. Akan dibutuhkan di bagian berikutnya.

    LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace show \
        --resource-group $GROUP_NAME \
        --workspace-name $WORKSPACE_NAME \
        --query customerId \
        --output tsv)
    LOG_ANALYTICS_WORKSPACE_ID_ENC=$(printf %s $LOG_ANALYTICS_WORKSPACE_ID | base64 -w0) # Needed for the next step
    LOG_ANALYTICS_KEY=$(az monitor log-analytics workspace get-shared-keys \
        --resource-group $GROUP_NAME \
        --workspace-name $WORKSPACE_NAME \
        --query primarySharedKey \
        --output tsv)
    LOG_ANALYTICS_KEY_ENC=$(printf %s $LOG_ANALYTICS_KEY | base64 -w0) # Needed for the next step
    

Menginstal ekstensi Container Apps

  1. Atur variabel lingkungan berikut ke nama ekstensi Container Apps yang diinginkan, namespace kluster tempat sumber daya harus disediakan, dan nama untuk lingkungan yang terhubung dengan Azure Container Apps. Pilih nama unik untuk <connected-environment-name>. Nama lingkungan yang terhubung akan menjadi bagian dari nama domain untuk aplikasi yang akan Anda buat di lingkungan yang terhubung dengan Azure Container Apps.

    EXTENSION_NAME="appenv-ext"
    NAMESPACE="appplat-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
  2. Instal ekstensi Container Apps ke kluster yang terhubung dengan Azure Arc Anda dengan Log Analytics diaktifkan. Analitik Log tidak dapat ditambahkan ke ekstensi nanti.

    az k8s-extension create \
        --resource-group $GROUP_NAME \
        --name $EXTENSION_NAME \
        --cluster-type connectedClusters \
        --cluster-name $CLUSTER_NAME \
        --extension-type 'Microsoft.App.Environment' \
        --release-train stable \
        --auto-upgrade-minor-version true \
        --scope cluster \
        --release-namespace $NAMESPACE \
        --configuration-settings "Microsoft.CustomLocation.ServiceAccount=default" \
        --configuration-settings "appsNamespace=${NAMESPACE}" \
        --configuration-settings "clusterName=${CONNECTED_ENVIRONMENT_NAME}" \
        --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${AKS_CLUSTER_GROUP_NAME}" \
        --configuration-settings "logProcessor.appLogs.destination=log-analytics" \
        --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \
        --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
    

    Catatan

    Untuk menginstal ekstensi tanpa integrasi Log Analytics, hapus tiga --configuration-settings parameter terakhir dari perintah.

    Tabel berikut menjelaskan berbagai --configuration-settings parameter saat menjalankan perintah:

    Parameter Deskripsi
    Microsoft.CustomLocation.ServiceAccount Akun layanan yang dibuat untuk lokasi kustom. Disarankan agar diatur ke nilai default.
    appsNamespace Namespace layanan yang digunakan untuk membuat definisi dan revisi aplikasi. Ini harus cocok dengan namespace rilis ekstensi.
    clusterName Nama lingkungan Kubernetes ekstensi Container Apps yang akan dibuat terhadap ekstensi ini.
    logProcessor.appLogs.destination Opsional. Tujuan untuk log aplikasi. Menerima log-analytics atau none, tidak memilih menonaktifkan log platform.
    logProcessor.appLogs.logAnalyticsConfig.customerId Diperlukan hanya ketika logProcessor.appLogs.destination diatur ke log-analytics. ID ruang kerja Log analytics yang dikodekan basis64. Parameter ini harus dikonfigurasi sebagai pengaturan yang dilindungi.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Diperlukan hanya ketika logProcessor.appLogs.destination diatur ke log-analytics. Kunci bersama ruang kerja analitik Log yang dikodekan base64. Parameter ini harus dikonfigurasi sebagai pengaturan yang dilindungi.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group Nama grup sumber daya tempat klaster Azure Kubernetes Service berada. Valid dan hanya diperlukan ketika klaster yang mendasarinya adalah Azure Kubernetes Service.
  3. id Simpan properti ekstensi Container Apps untuk nanti.

    EXTENSION_ID=$(az k8s-extension show \
        --cluster-type connectedClusters \
        --cluster-name $CLUSTER_NAME \
        --resource-group $GROUP_NAME \
        --name $EXTENSION_NAME \
        --query id \
        --output tsv)
    
  4. Tunggu hingga ekstensi terinstal sepenuhnya sebelum melanjutkan. Anda dapat menunggu sesi terminal hingga selesai dengan menjalankan perintah berikut:

    az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview"
    

Kamu dapat menggunakan kubectl untuk melihat Pod yang telah dibuat di klaster Kubernetes:

kubectl get pods -n $NAMESPACE

Untuk mempelajari selengkapnya tentang pod ini dan perannya dalam sistem, lihat Gambaran umum Azure Arc.

Buat lokasi khusus

Lokasi kustom adalah lokasi Azure yang Anda tetapkan ke lingkungan yang terhubung dengan Azure Container Apps.

  1. Atur variabel lingkungan berikut ke nama lokasi kustom yang diinginkan dan untuk ID kluster yang terhubung dengan Azure Arc.

    CUSTOM_LOCATION_NAME="my-custom-location" # Name of the custom location
    CONNECTED_CLUSTER_ID=$(az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME --query id --output tsv)
    
  2. Buat lokasi kustom:

    az customlocation create \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --host-resource-id $CONNECTED_CLUSTER_ID \
        --namespace $NAMESPACE \
        --cluster-extension-ids $EXTENSION_ID
    

    Catatan

    Jika Anda mengalami masalah saat membuat lokasi kustom di kluster, Anda mungkin perlu mengaktifkan fitur lokasi kustom pada kluster Anda. Ini diperlukan jika masuk ke CLI menggunakan Perwakilan Layanan atau jika Anda masuk dengan pengguna Microsoft Entra dengan izin terbatas pada sumber daya kluster.

  3. Validasi bahwa lokasi kustom berhasil dibuat dengan perintah berikut. Output harus menunjukkan provisioningState properti sebagai Succeeded. Jika tidak, jalankan ulang perintah setelah satu menit.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. Simpan ID lokasi kustom untuk langkah berikutnya.

    CUSTOM_LOCATION_ID=$(az customlocation show \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --query id \
        --output tsv)
    

Membuat lingkungan terhubung Azure Container Apps

Sebelum dapat mulai membuat aplikasi di lokasi kustom, Anda memerlukan lingkungan yang terhubung dengan Azure Container Apps.

  1. Buat lingkungan terhubung Container Apps:

    az containerapp connected-env create \
        --resource-group $GROUP_NAME \
        --name $CONNECTED_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID \
        --location $LOCATION
    
  2. Validasi bahwa lingkungan terhubung Container Apps berhasil dibuat dengan perintah berikut. Output harus menunjukkan provisioningState properti sebagai Succeeded. Jika tidak, jalankan lagi setelah satu menit.

    az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME
    

Langkah berikutnya