Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu kılavuz, AKS'de Valkey kümesi çalıştırmaya yönelik tüm kurulum işleminde yol gösterir. Bu işlem ortam değişkenlerini yapılandırmayı, temel Azure kaynaklarını (kaynak grubu, Azure Key Vault ve Azure Container Registry (ACR) gibi) sağlamayı, tümleşik iş yükü kimliğine sahip bir AKS kümesi oluşturmayı ve gizli dizileri yönetmeyi içerir. Ayrıca, Valkey iş yükleri için ayrılmış bir düğüm havuzu oluşturulmasını ve Valkey görüntülerinin özel kayıt defterinize nasıl aktarılacağını da kapsar. Kod olarak altyapıyı tercih ediyorsanız kılavuzda Terraform'un Azure Doğrulanmış Modüller ile kullanıldığı alternatif bir dağıtım yolu bulunur ve bu yolla en iyi yöntemler ve üretime hazır olma durumu sağlanır.
Terraform kullanarak altyapıyı dağıtmak için AKS içinAzure Doğrulanmış Modülü'ni kullanırız.
Uyarı
Bu dağıtımı üretimde çalıştırmayı planlıyorsanız Azure Doğrulanmış Modülleri için AKS üretim deseni modülüne bakmanızı öneririz. Bu modül, en iyi uygulama önerileriyle birlikte gelir.
Önkoşullar
- Henüz yapmadıysanız Azure Kubernetes Service'te (AKS) Valkey kümesi dağıtmaya genel bakış'ı gözden geçirin.
- Azure aboneliği. Aboneliğiniz yoksa ücretsiz bir hesap oluşturun.
- Azure CLI sürüm 2.61.0. Yüklemek veya yükseltmek için bkz . Azure CLI'yı yükleme.
- Helm sürüm 3 veya daha yenisi. Yüklemek için bkz. Helm'i Yükleme.
-
kubectl, Azure Cloud Shell'in varsayılan olarak yüklediği. - Docker yerel makinenize yüklendi. Yüklemek için Docker’ı edinin bölümüne bakın.
Ortam değişkenlerini belirleme
Bu kılavuz boyunca kullanmak için gerekli ortam değişkenlerini ayarlayın:
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
Kaynak grubu oluşturma
komutunu kullanarak
az group createbir kaynak grubu oluşturun.az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output tableÖrnek çıkış:
Location Name ---------- ------------------ eastus myResourceGroup-rg
Azure Key Vault örneği oluşturma
komutunu kullanarak
az keyvault createbir Azure Key Vault örneği oluşturun. Azure Key Vault API anahtarları, parolalar, sertifikalar veya şifreleme anahtarları gibi gizli dizileri güvenli bir şekilde depolar ve bunlara erişir.az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output tableÖrnek çıkış:
Location Name ResourceGroup ---------- -------------- ------------------ eastus vault-bbbhe-kv myResourceGroup-rg
Azure Container Registry oluşturun
komutunu kullanarak
az acr createkapsayıcı görüntülerinizi depolamak ve yönetmek için bir Azure Container Registry oluşturun.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)Örnek çıkış:
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
AKS kümesi oluşturma
Bu adımda bir AKS kümesi oluşturacağız. AKS kümesinin Azure Key Vault'ta depolanan gizli dizilere erişmesini sağlayan Azure Key Vault Gizli Dizileri sağlayıcısı eklentisini ()azure-keyvault-secrets-provider etkinleştiririz. Aks kümesinin diğer Azure kaynaklarına güvenli bir şekilde erişmesini sağlayan iş yükü kimliğini de etkinleştiririz.
komutunu kullanarak
az aks createbir AKS kümesi oluşturun.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 tableÖrnek çıkış:
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
Azure Key Vault Secrets sağlayıcısı için kimlik ID'sini ve nesne ID'sini alma
Azure Key Vault Secrets sağlayıcı eklentisi tarafından oluşturulan kimlik ID'sini ve nesne ID'sini
az aks showkomutu kullanarak alın.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)
Kubelet kimliğine AcrPull rolünü ata
az role assignment createkomutunu kullanarakAcrPullrolünü kubelet kimliğine atayın.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 tableÖrnek çıkış:
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
Valkey iş yükü için düğüm havuzu oluşturma
Bu bölümde, Valkey iş yükünü çalıştırmaya ayrılmış bir düğüm havuzu oluşturacağız. Bu düğüm havuzu otomatik ölçeklendirmeyi devre dışı bırakmıştır ve farklı bir bölgede birincil başına bir ikincil düğüm olmasını istediğimizden iki kullanılabilirlik alanında altı düğümle oluşturulur. Çoğaltmalar üçüncü bölgede planlanmıştır.
komutunu kullanarak
az aks nodepool addyeni bir düğüm havuzu oluşturun.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 tableÖrnek çıkış:
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
Valkey görüntülerini Azure Container Registry'nize yükleme
Bu bölümde, Docker Hub'dan Valkey görüntüsünü indirip Azure Container Registry'ye yükleyeceğiz. Bu adım, görüntünün özel kayıt defterinizde kullanılabilir olmasını ve AKS kümenizde kullanılabilmesini sağlar. Genel görüntüyü üretim ortamında kullanmanızı önermiyoruz.
Dockerhub'dan Valkey görüntüsünü içeri aktarın ve komutunu kullanarak
az acr importAzure Container Registry'nize yükleyin.az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/valkey/valkey:latest \ --image valkey:latest \ --output table
Terraform modülünü kopyalama
Terraform modülüyle git deposunu kopyalayın.
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
Terraform değişkenleri dosyası oluşturma
Aşağıdaki içeriklere sahip bir
valkey.tfvarsdosya oluşturarak Valkey değişkenlerini ayarlayın. Bu adımda belirli değişkenlerinizi de sağlayabilirsiniz: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" } }
Altyapıyı devreye alın
Altyapıyı dağıtmak için Terraform komutlarını çalıştırın. Bu adımda, Valkey dağıtımı için gerekli değişkenleri ayarlayacağız.
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"Uyarı
Bazı durumlarda, Valkey görüntülerini kapsayıcı kayıt defterine aktaran kapsayıcı kayıt defteri görevleri başarısız olabilir. Daha fazla bilgi için bkz. container-registry-task. Çoğu durumda yeniden deneme işlemi sorunu çözer.
Terraform çıkış değerlerini sonraki adımlarda kullanmak üzere terminalde ortam değişkenleri olarak dışarı aktarmak için aşağıdaki komutu çalıştırın:
export MY_ACR_REGISTRY=$(terraform output -raw acr_registry_name) export MY_CLUSTER_NAME=$(terraform output -raw aks_cluster_name)
Sonraki adım
Katkıda Bulunanlar
Microsoft bu makaleyi korur. Başlangıçta aşağıdaki katkıda bulunanlar yazdı:
- Nelly Kiboi | Hizmet Mühendisi
- Saverio Proto | Baş Müşteri Deneyimi Mühendisi
- Don High | Baş Müşteri Mühendisi
- LaBrina Loving | Baş Servis Mühendisi
- Ken Kilty | Baş TPM
- Russell de Pina | Kıdemli TPM
- Colin Mixon | Ürün Yöneticisi
- Ketan Chawda | Kıdemli Müşteri Mühendisi
- Naveed Kharadi | Müşteri Deneyimi Mühendisi
- Erin Schaffer | İçerik Geliştirici 2