إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يشرح هذا الدليل عملية الإعداد الكاملة لتشغيل مجموعة Valkey على AKS. تتضمن هذه العملية تكوين متغيرات البيئة وتوفير موارد Azure الأساسية (مثل مجموعة الموارد وAzure Key Vault وAzure Container Registry (ACR)) وإنشاء مجموعة AKS بهوية حمل عمل متكاملة وإدارة الأسرار. كما يغطي إنشاء تجمع عقد مخصص لأحمال عمل Valkey وكيفية استيراد صور Valkey إلى سجلك الخاص. إذا كنت تفضل البنية التحتية كتعليمات برمجية، فإن الدليل يتضمن مسار توزيع بديل باستخدام Terraform مع الوحدات النمطية التي تم التحقق منها من Azure، مما يضمن أفضل الممارسات وجاهزية الإنتاج.
لنشر البنية التحتية باستخدام Terraform، نستخدم وحدة Azure Verified Moduleل AKS.
إشعار
إذا كنت تخطط لتشغيل هذا التوزيع في الإنتاج، فإننا نوصي بالنظر إلى وحدة نمط إنتاج AKS للوحدات النمطية التي تم التحقق منها من Azure. تأتي هذه الوحدة مقترنة بتوصيات أفضل الممارسات.
المتطلبات الأساسية
- إذا لم تكن قد قمت بالفعل، فراجع نظرة عامة لنشر مجموعة Valkey على خدمة Azure Kubernetes (AKS).
- اشتراك Azure. في حال لم يكن لديك اشتراك Azure، أنشئ حسابًا مجّانيًّا.
- الإصدار 2.61.0 من Azure CLI. للتثبيت أو الترقية، يُرجى الرجوع إلى تثبيت Azure CLI.
- Helm الإصدار 3 أو أحدث. للتنزيل، راجع تثبيت Helm.
-
kubectl، والتي يقوم Azure Cloud Shell بتثبيتها افتراضيا. - تم تثبيت Docker على جهازك المحلي. للتنزيل، راجع الحصول على Docker.
تعيين متغيرات البيئة
تعيين متغيرات البيئة المطلوبة للاستخدام في هذا الدليل:
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
إنشاء مجموعة موارد
إنشاء مجموعة موارد باستخدام
az group createالأمر .az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output tableمثال على الإخراج:
Location Name ---------- ------------------ eastus myResourceGroup-rg
إنشاء مثيل Azure Key Vault
إنشاء مثيل Azure Key Vault باستخدام
az keyvault createالأمر . يقوم Azure Key Vault بتخزين الأسرار والوصول إليها بشكل آمن مثل مفاتيح واجهة برمجة التطبيقات أو كلمات المرور أو الشهادات أو مفاتيح التشفير.az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output tableمثال على الإخراج:
Location Name ResourceGroup ---------- -------------- ------------------ eastus vault-bbbhe-kv myResourceGroup-rg
إنشاء سجل حاوية Azure
إنشاء سجل حاويات Azure لتخزين صور الحاوية وإدارتها
az acr createباستخدام الأمر .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)مثال على الإخراج:
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
في هذه الخطوة، نقوم بإنشاء نظام مجموعة AKS. نكن إضافة مزود أسرار مفتاح Azure Key Vault (azure-keyvault-secrets-provider)، التي تسمح لعنتر AKS بالوصول إلى الأسرار المخزنة في Azure Key Vault. نفعل أيضا هوية الحمل العملي، مما يسمح لعنتر AKS بالوصول إلى موارد Azure الأخرى بأمان.
إنشاء نظام مجموعة AKS باستخدام
az aks createالأمر .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مثال على الإخراج:
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
احصل على معرف الهوية ومعرف الكائن الذي تم إنشاؤه بواسطة إضافة مزود Azure Key Vault Secrets باستخدام الأمر
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)
تعيين AcrPull الدور لهوية الكوبليت
AcrPullتعيين الدور إلى هوية kubelet باستخدامaz 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 tableمثال على الإخراج:
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
في هذا القسم، نقوم بإنشاء تجمع عقدة مخصص لتشغيل حمل عمل Valkey. تم تعطيل التحجيم التلقائي لتجمع العقدة هذا ويتم إنشاؤه بست عقد عبر منطقتين توفر، لأننا نريد أن يكون لدينا واحد ثانوي لكل أساسي في منطقة مختلفة. يتم جدولة النسخ المقلدة في المنطقة الثالثة.
إنشاء تجمع عقدة جديد باستخدام
az aks nodepool addالأمر .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مثال على الإخراج:
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 إلى Azure Container Registry
في هذا القسم، نقوم بتنزيل صورة Valkey من Docker Hub وتحميلها إلى Azure Container Registry. تضمن هذه الخطوة توفر الصورة في السجل الخاص بك ويمكن استخدامها في نظام مجموعة AKS. لا نوصي باستهلاك الصورة العامة في بيئة إنتاج.
استيراد صورة Valkey من Dockerhub وتحميلها إلى Azure Container Registry باستخدام
az acr importالأمر .az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/valkey/valkey:latest \ --image valkey:latest \ --output table
استنساخ وحدة تيرافورم
قم باستنساخ مستودع git باستخدام وحدة 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
إنشاء ملف متغيرات Terraform
قم بتعيين متغيرات Valkey عن طريق إنشاء
valkey.tfvarsملف بالمحتويات التالية. يمكنك أيضا تقديم المتغيرات المحددة في هذه الخطوة: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" } }
نشر البنية الأساسية
لنشر البنية التحتية، شغل أوامر Terraform. في هذه الخطوة، نحدد المتغيرات المطلوبة لنشر 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"إشعار
في بعض الحالات، قد تفشل مهام تسجيل الحاوية التي تستورد صور Valkey إلى سجل الحاوية. لمزيد من المعلومات، راجع container-registry-task. في معظم الحالات ، تؤدي إعادة المحاولة إلى حل المشكلة.
قم بتشغيل الأمر التالي لتصدير قيم إخراج Terraform كمتغيرات بيئة في المحطة الطرفية لاستخدامها في الخطوات التالية:
export MY_ACR_REGISTRY=$(terraform output -raw acr_registry_name) export MY_CLUSTER_NAME=$(terraform output -raw aks_cluster_name)
الخطوة التالية
المساهمون
تحتفظ Microsoft بهذه المقالة. كتبه المساهمون التاليون في الأصل:
- نيللي كيبوي | مهندس خدمة
- Saverio Proto | مهندس تجربة العملاء الرئيسي
- Don High | مهندس العملاء الرئيسي
- LaBrina المحبة | مهندس الخدمة الرئيسي
- كين كيلتي | الوحدة النمطية للنظام الأساسي الموثوق به
- راسل دي بينا | الوحدة النمطية للنظام الأساسي الموثوق به
- كولن ميكسون | إدارة المنتجات
- كيتان شودا | مهندس عملاء أول
- نافي خرادي | مهندس تجربة العملاء
- إيرين شيفر | مطور المحتوى 2