Siapkan kluster Kube berkemampuan Azure Arc untuk menjalankan App Service, Functions, dan Logic Apps (Pratinjau)
Jika Anda memiliki Kluster Kube yang diaktifkan Arc Azure, Anda dapat menggunakannya untuk membuat Lokasi kustom yang diaktifkan App Service dan menyebarkan aplikasi web, aplikasi fungsi, dan aplikasi logika ke dalamnya.
Dengan Kube yang diaktifkan Azure Arc, Anda dapat membuat kluster Kube lokal atau cloud Anda terlihat oleh App Service, Functions, dan Logic Apps di Azure. Anda dapat membuat aplikasi dan menerapkannya seperti wilayah Azure lainnya.
Prasyarat
Jika Anda tidak memiliki akun Azure, daftar hari ini untuk akun gratis.
Tinjau persyaratan dan batasan pratinjau publik. Kepentingan tertentu adalah persyaratan kluster.
Menambahkan ekstensi Azure CLI
Luncurkan lingkungan Bash di Azure Cloud Shell.
Karena perintah CLI ini belum menjadi bagian dari set CLI inti, tambahkan dengan perintah berikut.
az extension add --upgrade --yes --name connectedk8s
az extension add --upgrade --yes --name k8s-extension
az extension add --upgrade --yes --name customlocation
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.Web --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube
Buat klaster terhubung
Catatan
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 klaster AKS karena sudah dikelola di Azure. Langkah-langkah ini akan 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.
Buat klaster di Azure Kubernetes Service dengan alamat IP publik. Ganti
<group-name>
dengan nama grup sumber daya yang ingin Anda gunakan.AKS_CLUSTER_GROUP_NAME="<group-name>" # Name of resource group for the AKS cluster AKS_NAME="${aksClusterGroupName}-aks" # Name of the AKS cluster RESOURCE_LOCATION="eastus" # "eastus" or "westeurope" az group create -g $AKS_CLUSTER_GROUP_NAME -l $RESOURCE_LOCATION az aks create --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --enable-aad --generate-ssh-keys
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
Buat grup sumber daya untuk memuat sumber daya Azure Arc Anda. Ganti
<group-name>
dengan nama grup sumber daya yang ingin Anda gunakan.GROUP_NAME="<group-name>" # Name of resource group for the connected cluster az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
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
Validasi koneksi dengan perintah berikut. Ini harus menunjukkan
provisioningState
properti sebagaiSucceeded
. Jika tidak, jalankan perintah lagi setelah satu menit.az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
Membuat ruang kerja Analitik Log
Meskipun ruang kerja Log Analytic tidak diperlukan untuk menjalankan App Service di Azure Arc, ini adalah bagaimana pengembang bisa mendapatkan log aplikasi untuk aplikasi mereka yang berjalan di kluster Kube yang diaktifkan Azure Arc.
Untuk kemudahan, buat ruang kerja sekarang.
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
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 App Service
Tetapkan variabel lingkungan berikut untuk nama yang diinginkan dari ekstensi App Service, namespace layanan klaster tempat sumber daya harus disediakan, dan nama untuk lingkungan App Service Kubernetes. Pilih nama unik untuk
<kube-environment-name>
, karena merupakan bagian dari nama domain untuk aplikasi yang dibuat di lingkungan App Service Kubernetes.EXTENSION_NAME="appservice-ext" # Name of the App Service extension NAMESPACE="appservice-ns" # Namespace in your cluster to install the extension and provision resources KUBE_ENVIRONMENT_NAME="<kube-environment-name>" # Name of the App Service Kubernetes environment resource
Pasang ekstensi App Service ke kluster yang terhubung dengan Azure Arc Anda, dengan Log Analytics diaktifkan. Sekali lagi, meskipun Analitik Log tidak diperlukan, Anda tidak dapat menambahkannya ke ekstensi nanti, sehingga lebih mudah untuk melakukannya sekarang.
az k8s-extension create \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --extension-type 'Microsoft.Web.Appservice' \ --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=${KUBE_ENVIRONMENT_NAME}" \ --configuration-settings "keda.enabled=true" \ --configuration-settings "buildService.storageClassName=default" \ --configuration-settings "buildService.storageAccessMode=ReadWriteOnce" \ --configuration-settings "customConfigMap=${NAMESPACE}/kube-environment-config" \ --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${aksClusterGroupName}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --config-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 harus dibuat untuk lokasi kustom yang dibuat. Disarankan agar ini diatur ke nilai default
.appsNamespace
Namespace layanan untuk menyediakan definisi aplikasi dan pod. Harus cocok dengan namespace layanan perilisan ekstensi. clusterName
Nama lingkungan App Service Kubernetes yang dibuat terhadap ekstensi ini. keda.enabled
Apakah KEDA harus diinstal pada klaster Kubernetes. Menerima true
ataufalse
.buildService.storageClassName
Nama kelas penyimpanan untuk layanan build untuk menyimpan artefak build. Nilai seperti default
menentukan kelas bernamadefault
, dan bukan kelas apa pun yang ditandai sebagai default. Default adalah kelas penyimpanan yang valid untuk AKS dan AKS HCI, tetapi mungkin tidak berlaku untuk distribusi/platform lainnya.buildService.storageAccessMode
Mode akses yang digunakan dengan kelas penyimpanan bernama. Menerima ReadWriteOnce
atauReadWriteMany
.customConfigMap
Nama peta konfigurasi yang akan ditetapkan oleh lingkungan App Service Kubernetes. Saat ini, harus <namespace>/kube-environment-config
, mengganti<namespace>
dengan nilaiappsNamespace
.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. logProcessor.appLogs.destination
Opsional. Menerima log-analytics
ataunone
, tidak memilih menonaktifkan log platform.logProcessor.appLogs.logAnalyticsConfig.customerId
Diperlukan hanya ketika logProcessor.appLogs.destination
diatur kelog-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 kelog-analytics
. Kunci bersama ruang kerja analitik Log yang dikodekan base64. Parameter ini harus dikonfigurasi sebagai pengaturan yang dilindungi.Simpan
id
properti ekstensi App Service 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)
Tunggu hingga ekstensi terinstal sepenuhnya sebelum melanjutkan. Anda bisa membuat sesi terminal menunggu hingga ini selesai dengan menjalankan perintah berikut:
az resource wait --ids $EXTENSION_ID --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
Anda dapat menggunakan kubectl
untuk melihat pod yang dibuat di kluster Kubernetes Anda:
kubectl get pods -n $NAMESPACE
Kamu dapat mempelajari lebih lanjut tentang Pod-Pod ini dan perannya dalam sistem dari Pod yang dibuat oleh ekstensi App Service.
Buat lokasi khusus
Lokasi kustom di Azure digunakan untuk menetapkan lingkungan App Service Kubernetes.
Atur variabel lingkungan berikut untuk nama lokasi kustom yang diinginkan dan untuk ID kluster yang tersambung ke Arc Azure.
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)
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.
Validasi bahwa lokasi kustom berhasil dibuat dengan perintah berikut. Output harus menunjukkan
provisioningState
properti sebagaiSucceeded
. Jika tidak, jalankan lagi setelah satu menit.az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
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)
Buat lingkungan App Service Kubernetes
Sebelum dapat mulai membuat aplikasi di lokasi khusus, kamu memerlukan lingkungan App Service Kubernetes.
Buat lingkungan App Service Kubernetes:
az appservice kube create \ --resource-group $GROUP_NAME \ --name $KUBE_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID
Validasi bahwa lingkungan App Service Kubernetes berhasil dibuat dengan perintah berikut. Output harus menunjukkan
provisioningState
properti sebagaiSucceeded
. Jika tidak, jalankan lagi setelah satu menit.az appservice kube show --resource-group $GROUP_NAME --name $KUBE_ENVIRONMENT_NAME