Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panduan ini menjelaskan proses penyiapan lengkap untuk menjalankan kluster Valkey di AKS. Proses ini termasuk mengonfigurasi variabel lingkungan, menyediakan sumber daya Azure inti (seperti grup sumber daya, Azure Key Vault, dan Azure Container Registry (ACR)), membuat kluster AKS dengan identitas beban kerja terintegrasi dan mengelola rahasia. Ini juga mencakup pembuatan kumpulan simpul khusus untuk beban kerja Valkey dan cara mengimpor gambar Valkey ke registri privat Anda. Jika Anda lebih suka infrastruktur sebagai kode, panduan menyertakan jalur penyebaran alternatif menggunakan Terraform dengan Modul Terverifikasi Azure, memastikan praktik terbaik dan kesiapan produksi.
Untuk menyebarkan infrastruktur menggunakan Terraform, kami menggunakan Modul Terverifikasi Azureuntuk AKS.
Nota
Jika Anda berencana untuk menjalankan penyebaran ini dalam produksi, sebaiknya lihat modul pola produksi AKS untuk Modul Terverifikasi Azure. Modul ini dilengkapi dengan rekomendasi praktik terbaik.
Prasyarat
- Jika Anda belum melakukannya, tinjau Gambaran Umum untuk menyebarkan kluster Valkey di Azure Kubernetes Service (AKS).
- Langganan Azure. Jika Anda tidak memilikinya, buat akun gratis.
- Azure CLI versi 2.61.0. Untuk memasang atau meningkatkan, lihat Pasang Azure CLI.
- Helm versi 3 atau yang lebih baru. Untuk menginstal, lihat Menginstal Helm.
-
kubectl, yang diinstal secara bawaan oleh Azure Cloud Shell. - Docker diinstal pada komputer lokal Anda. Untuk menginstal, lihat Mendapatkan Docker.
Atur variabel lingkungan
Atur variabel lingkungan yang diperlukan untuk digunakan di seluruh panduan ini:
random=$(echo $RANDOM | tr '[0-9]' '[a-z]') export MY_RESOURCE_GROUP_NAME=myResourceGroup-rg-$(echo $random) export MY_LOCATION=centralus export MY_ACR_REGISTRY=mydns$(echo $random) export MY_KEYVAULT_NAME=vault-$(echo $random)-kv export MY_CLUSTER_NAME=cluster-aks
Buat grup sumber daya
Buat grup sumber daya menggunakan
az group createperintah .az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output tableContoh output:
Location Name ---------- ------------------ eastus myResourceGroup-rg
Buat instans Azure Key Vault
Buat instans Azure Key Vault menggunakan
az keyvault createperintah . Azure Key Vault menyimpan dan mengakses rahasia dengan aman seperti kunci API, kata sandi, sertifikat, atau kunci kriptografi.az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output tableContoh output:
Location Name ResourceGroup ---------- -------------- ------------------ eastus vault-bbbhe-kv myResourceGroup-rg
Membuat Azure Container Registry
Buat Azure Container Registry untuk menyimpan dan mengelola gambar kontainer Anda menggunakan
az acr createperintah .az acr create \ --name ${MY_ACR_REGISTRY} \ --resource-group $MY_RESOURCE_GROUP_NAME \ --sku Premium \ --location $MY_LOCATION \ --admin-enabled true \ --output table export MY_ACR_REGISTRY_ID=$(az acr show --name $MY_ACR_REGISTRY --resource-group $MY_RESOURCE_GROUP_NAME --query id --output tsv)Contoh output:
NAME RESOURCE GROUP LOCATION SKU LOGIN SERVER CREATION DATE ADMIN ENABLED -------------------- ------------------ ---------- ------- ------------------------------- -------------------- --------------- mydnsrandomnamebbbhe myResourceGroup-rg eastus Premium mydnsrandomnamebbbhe.azurecr.io 2024-06-11T09:36:43Z True
Membuat kluster AKS
Dalam langkah ini, kami membuat kluster AKS. Kami mengaktifkan add-on penyedia Rahasia Azure Key Vault (azure-keyvault-secrets-provider), yang memungkinkan kluster AKS mengakses rahasia yang disimpan di Azure Key Vault. Kami juga mengaktifkan identitas beban kerja, yang memungkinkan kluster AKS mengakses sumber daya Azure lainnya dengan aman.
Buat kluster AKS menggunakan
az aks createperintah .az aks create \ --location $MY_LOCATION \ --name $MY_CLUSTER_NAME \ --tier standard \ --resource-group $MY_RESOURCE_GROUP_NAME \ --network-plugin azure \ --node-vm-size Standard_D4_v3 \ --node-count 3 \ --auto-upgrade-channel stable \ --node-os-upgrade-channel NodeImage \ --attach-acr ${MY_ACR_REGISTRY} \ --enable-oidc-issuer \ --enable-workload-identity \ --enable-addons azure-keyvault-secrets-provider \ --zones 1 2 3 \ --generate-ssh-keys \ --output tableContoh output:
Kind KubernetesVersion Location MaxAgentPools Name NodeResourceGroup ProvisioningState ResourceGroup ResourceUid SupportPlan ----------------------------------------------------------------------- -------------------------- ---------------------- ---------------------------------- ------------------------------------ ------------------------- ------------ ---------------------------------------------------------------- ------ ------------------- ---------- --------------- ----------- ---------------------------------------- ------------------- ------------------ ------------------------ ------------------ cluster-ak-myresourcegroup--9b70ac-hhrizake.portal.hcp.eastus.azmk8s.io 1.28.9 False cluster-ak-myResourceGroup--9b70ac a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 False True cluster-ak-myresourcegroup--9b70ac-hhrizake.hcp.eastus.azmk8s.io Base 1.28 eastus 100 cluster-aks MC_myResourceGroup-rg_cluster-aks_eastus Succeeded myResourceGroup-rg b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2 KubernetesOfficial
Mendapatkan ID identitas dan ID objek untuk penyedia layanan Rahasia Azure Key Vault
Dapatkan ID identitas dan ID objek yang dibuat oleh penyedia Rahasia Azure Key Vault add-on menggunakan perintah
az aks show.export userAssignedIdentityID=$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --query addonProfiles.azureKeyvaultSecretsProvider.identity.clientId --output tsv) export userAssignedObjectID=$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --query addonProfiles.azureKeyvaultSecretsProvider.identity.objectId --output tsv)
Tetapkan peran AcrPull ke identitas kubelet
Tetapkan peran
AcrPullke identitas kubelet menggunakan perintahaz role assignment create.export KUBELET_IDENTITY=$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --output tsv --query identityProfile.kubeletidentity.objectId) az role assignment create \ --assignee ${KUBELET_IDENTITY} \ --role "AcrPull" \ --scope ${MY_ACR_REGISTRY_ID} \ --output tableContoh output:
CreatedBy CreatedOn Name PrincipalId PrincipalName PrincipalType ResourceGroup RoleDefinitionId RoleDefinitionName Scope UpdatedBy UpdatedOn ------------------------------------ -------------------------------- ------------------------------------ ------------------------------------ ------------------------------------ ---------------- ------------------ ------------------------------------------------------------------------------------------------------------------------------------------ -------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------ -------------------------------- bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f 2024-06-11T09:41:36.631310+00:00 00aa00aa-bb11-cc22-dd33-44ee44ee44ee aaaaaaaa-bbbb-cccc-1111-222222222222 bbbbbbbb-cccc-dddd-2222-333333333333 ServicePrincipal myResourceGroup-rg /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb AcrPull /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup-rg/providers/Microsoft.ContainerRegistry/registries/mydnsrandomnamebbbhe bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f 2024-06-11T09:41:36.631310+00:00
Membuat kumpulan simpul untuk beban kerja Valkey
Di bagian ini, kami membuat kumpulan simpul yang didedikasikan untuk menjalankan beban kerja Valkey. Kumpulan simpul ini menonaktifkan penskalakan otomatis dan dibuat dengan enam simpul di dua zona ketersediaan, karena kami ingin memiliki satu sekunder per primer di zona yang berbeda. Replika-replika dijadwalkan di zona ketiga.
Buat kumpulan simpul baru menggunakan
az aks nodepool addperintah .while [ "$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --output tsv --query provisioningState)" != "Succeeded" ]; do echo "waiting for cluster to be ready"; sleep 10; done az aks nodepool add \ --resource-group $MY_RESOURCE_GROUP_NAME \ --cluster-name $MY_CLUSTER_NAME \ --name valkey \ --node-vm-size Standard_D4_v3 \ --node-count 6 \ --zones 1 2 3 \ --output tableContoh output:
Count CurrentOrchestratorVersion ETag EnableAutoScaling EnableCustomCaTrust EnableEncryptionAtHost EnableFips EnableNodePublicIp EnableUltraSsd KubeletDiskType MaxPods Mode Name NodeImageVersion OrchestratorVersion OsDiskSizeGb OsDiskType OsSku OsType ProvisioningState ResourceGroup ScaleDownMode TypePropertiesType VmSize WorkloadRuntime ------- ---------------------------- ------------------------------------ ------------------- --------------------- ------------------------ ------------ -------------------- ---------------- ----------------- --------- ------ ------ ---------------------------------------- --------------------- -------------- ------------ ------- -------- ------------------- ------------------ --------------- ----------------------- --------------- ----------------- 6 1.28.9 aaaa0000-bb11-2222-33cc-444444dddddd False False False False False False OS 30 User valkey AKSUbuntu-2204gen2containerd-202405.27.0 1.28 128 Managed Ubuntu Linux Succeeded myResourceGroup-rg Delete VirtualMachineScaleSets Standard_D4s_v3 OCIContainer
Mengunggah gambar Valkey ke Azure Container Registry Anda
Di bagian ini, kami mengunduh gambar Valkey dari Docker Hub dan mengunggahnya ke Azure Container Registry. Langkah ini memastikan bahwa gambar tersedia di registri privat Anda dan dapat digunakan di kluster AKS Anda. Kami tidak menyarankan untuk mengkonsumsi citra publik di lingkungan produksi.
Impor gambar Valkey dari Dockerhub dan unggah ke Azure Container Registry Anda menggunakan
az acr importperintah .az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/valkey/valkey:latest \ --image valkey:latest \ --output table
Mengkloning modul Terraform
Kloning repositori git dengan modul Terraform.
git clone https://github.com/Azure/terraform-azurerm-avm-res-containerservice-managedcluster.git cd terraform-azurerm-avm-res-containerservice-managedcluster/tree/stateful-workloads/examples/stateful-workloads-valkey
Membuat file variabel Terraform
Atur variabel Valkey dengan membuat
valkey.tfvarsfile dengan konten berikut. Anda juga dapat memberikan variabel spesifik Anda pada langkah ini:acr_task_content = <<-EOF version: v1.1.0 steps: - cmd: bash echo Waiting 10 seconds the propagation of the Container Registry Data Importer and Data Reader role - cmd: bash sleep 10 - cmd: az login --identity - cmd: az acr import --name $RegistryName --source docker.io/valkey/valkey:latest --image valkey:latest EOF valkey_enabled = true node_pools = { valkey = { name = "valkey" vm_size = "Standard_DS4_v2" node_count = 3 zones = [1, 2, 3] os_type = "Linux" } }
Menerapkan infrastruktur
Untuk menyebarkan infrastruktur, jalankan perintah Terraform. Dalam langkah ini, kami mengatur variabel yang diperlukan untuk menyebarkan Valkey.
terraform init export MY_RESOURCE_GROUP_NAME=myResourceGroup-rg export MY_LOCATION=centralus SECRET=$(openssl rand -base64 32) export TF_VAR_valkey_password=${SECRET} export TF_VAR_location=${MY_LOCATION} export TF_VAR_resource_group_name=${MY_RESOURCE_GROUP_NAME} terraform apply -var-file="valkey.tfvars"Nota
Dalam beberapa kasus, tugas registri kontainer yang mengimpor gambar Valkey ke registri kontainer mungkin gagal. Untuk informasi selengkapnya, lihat container-registry-task. Dalam kebanyakan kasus, mencoba kembali menyelesaikan masalah.
Jalankan perintah berikut untuk mengekspor nilai output Terraform sebagai variabel lingkungan di terminal untuk menggunakannya di langkah berikutnya:
export MY_ACR_REGISTRY=$(terraform output -raw acr_registry_name) export MY_CLUSTER_NAME=$(terraform output -raw aks_cluster_name)
Langkah selanjutnya
Kontributor
Microsoft mempertahankan artikel ini. Kontributor berikut awalnya menulisnya:
- Nelly Kiboi | Teknisi Layanan
- Saverio Proto | Teknisi Pengalaman Pelanggan Utama
- Don Tinggi | Insinyur Pelanggan Utama
- LaBrina Loving | Insinyur Layanan Utama
- Ken Kilty | TPM Utama
- Russell de Pina | TPM Utama
- Colin Mixon | Manajer Produk
- Ketan Chawda | Insinyur Pelanggan Senior
- Naveed Kharadi | Teknisi Pengalaman Pelanggan
- Erin Schaffer | Pengembang Konten 2