ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
خدمة Azure Kubernetes (AKS) هي خدمة Kubernetes مُدارة تتيح لك نشر المجموعات وإدارتها بسرعة. في هذه البداية السريعة، قمت بـ:
- نشر نظام مجموعة AKS باستخدام ملحق Bicep Kubernetes (معاينة).
- قم بتشغيل نموذج تطبيق متعدد الحاويات مع مجموعة من الخدمات المصغرة والواجهات الأمامية على الويب التي تحاكي سيناريو البيع بالتجزئة.
هام
ملحق Bicep Kubernetes قيد المعاينة حاليا. يمكنك تمكين الميزة من ملف تكوين Bicep عن طريق إضافة:
{
"experimentalFeaturesEnabled": {
"extensibility": true,
}
}
ملاحظة
للبدء في توفير نظام مجموعة AKS بسرعة، تتضمن هذه المقالة خطوات لنشر نظام مجموعة بإعدادات افتراضية لأغراض التقييم فقط. قبل نشر نظام مجموعة جاهز للإنتاج، نوصيك بالتعرف على البنية المرجعية الأساسية لدينا للنظر في كيفية توافقها مع متطلبات عملك.
يضمن هذا التشغيل السريع الفهم الأساسي لمفاهيم Kubernetes. لمزيد من المعلومات، راجع مفاهيم Kubernetes الأساسية الخاصة بخدمة Azure Kubernetes Service (AKS).
- إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
- تأكد من أن الهوية التي تستخدمها لإنشاء نظام المجموعة الخاص بك لديها الحد الأدنى المناسب من الأذونات. لمزيد من التفاصيل حول الهوية وطريقة الوصول إلى AKS، راجع خيارات الوصول والهوية الخاصة بخدمة Azure Kubernetes (AKS).
Bicep هي لغة المجال المخصصة (DSL) التي تستخدم بناء الجملة التعريفي لتوزيع موارد Azure. توفر بناء جملة مختصر، وسلامة موثوقة من النوع، ودعمًا لإعادة استخدام التعليمة البرمجية. تقدم Bicep أفضل تجربة تأليف لحلول البنية الأساسية باعتبارها تعليمة برمجية في Azure.
- لإعداد بيئتك لتطوير Bicep، راجع تثبيت أدوات Bicep. بعد إكمال الخطوات، لديك Visual Studio Code وملحق Bicep. لديك أيضا أحدث إصدار من Azure CLI أو أحدث وحدة Azure PowerShell.
- لإنشاء نظام مجموعة AKS باستخدام ملف Bicep، ستقدم مفتاح عمومي SSH. إذا كنت بحاجة إلى هذا المورد، فشاهد القسم التالي. بخلاف ذلك، انتقل إلى مراجعة ملف Bicep.
- لنشر ملف Bicep، تحتاج إلى الوصول للكتابة على الموارد التي تقوم بنشرها والوصول إلى جميع العمليات على
Microsoft.Resources/deployments
نوع المورد. على سبيل المثال، لتوزيع جهاز ظاهري، تحتاج إلى أذوناتMicrosoft.Compute/virtualMachines/write
وMicrosoft.Resources/deployments/*
. للحصول على قائمة بالأدوار والأذونات، انظر أدوار Azure المضمنة.
انتقل إلى https://shell.azure.comلفتح Cloud Shell في متصفحك.
إنشاء زوج مفاتيح SSH باستخدام الأمر az sshkey create Azure CLI أو
ssh-keygen
الأمر .# Create an SSH key pair using Azure CLI az sshkey create --name "mySSHKey" --resource-group "myResourceGroup" # Create an SSH key pair using ssh-keygen ssh-keygen -t rsa -b 4096
للاطلاع على معلومات أكثر حول إنشاء مفتاح SSH، راجع إنشاء وإدارة مفاتيح SSH للمصادقة في Azure.
ملف Bicep المستخدم لإنشاء نظام مجموعة AKS من قوالب Azure Quickstart. لمزيد من عينات AKS، راجع قوالب التشغيل السريع ل AKS.
@description('The name of the Managed Cluster resource.')
param clusterName string = 'aks101cluster'
@description('The location of the Managed Cluster resource.')
param location string = resourceGroup().location
@description('Optional DNS prefix to use with hosted Kubernetes API server FQDN.')
param dnsPrefix string
@description('Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize.')
@minValue(0)
@maxValue(1023)
param osDiskSizeGB int = 0
@description('The number of nodes for the cluster.')
@minValue(1)
@maxValue(50)
param agentCount int = 3
@description('The size of the Virtual Machine.')
param agentVMSize string = 'standard_d2s_v3'
@description('User name for the Linux Virtual Machines.')
param linuxAdminUsername string
@description('Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example \'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm\'')
param sshRSAPublicKey string
resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
name: clusterName
location: location
identity: {
type: 'SystemAssigned'
}
properties: {
dnsPrefix: dnsPrefix
agentPoolProfiles: [
{
name: 'agentpool'
osDiskSizeGB: osDiskSizeGB
count: agentCount
vmSize: agentVMSize
osType: 'Linux'
mode: 'System'
}
]
linuxProfile: {
adminUsername: linuxAdminUsername
ssh: {
publicKeys: [
{
keyData: sshRSAPublicKey
}
]
}
}
}
}
output controlPlaneFQDN string = aks.properties.fqdn
المورد المحدد في ملف Bicep هو Microsoft.ContainerService/managedClusters.
احفظ نسخة من الملف على main.bicep
الكمبيوتر المحلي.
لنشر التطبيق، يمكنك استخدام ملف بيان لإنشاء كافة الكائنات المطلوبة لتشغيل تطبيق AKS Store. يحدد ملف بيانات Kubernetesالحالة المطلوبة لنظام المجموعة، مثل صور الحاوية المراد تشغيلها. يتضمن البيان عمليات نشر وخدمات Kubernetes التالية:
- واجهة المتجر: تطبيق ويب للعملاء لعرض المنتجات وتقديم الطلبات.
- خدمة المنتج: تعرض معلومات المنتج.
- خدمة الطلب: يضع الطلبات.
- Rabbit MQ: قائمة انتظار الرسائل لقائمة انتظار الطلبات.
ملاحظة
لا نوصي بتشغيل حاويات ذات حالة، مثل Rabbit MQ، دون تخزين مستمر للإنتاج. يتم استخدام هذه هنا للتبسيط، ولكن نوصي باستخدام الخدمات المدارة، مثل Azure CosmosDB أو ناقل خدمة Azure.
أنشئ ملفا باسم
aks-store-quickstart.yaml
في نفس المجلد مثلmain.bicep
وانسخه في البيان التالي:apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer
للحصول على تصنيف تفصيلي لملفات بيان YAML، راجع عمليات التوزيع وبيانات YAML.
إذا قمت بإنشاء ملف YAML وحفظه محليا، فيمكنك تحميل ملف البيان إلى الدليل الافتراضي في CloudShell عن طريق تحديد الزر تحميل/تنزيل الملفات وتحديد الملف من نظام الملفات المحلي.
افتح
main.bicep
في Visual Studio Code.اضغط على Ctrl+Shift+P لفتح لوحة الأوامر.
ابحث عن bicep، ثم حدد Bicep: Import Kubernetes Manifest.
حدد
aks-store-quickstart.yaml
من المطالبة. تنشئ هذه العملية ملفاaks-store-quickstart.bicep
في المجلد نفسه.افتح
main.bicep
وأضف Bicep التالية في نهاية الملف للإشارة إلى الوحدة النمطية التي تم إنشاؤهاaks-store-quickstart.bicep
حديثا:module kubernetes './aks-store-quickstart.bicep' = { name: 'buildbicep-deploy' params: { kubeConfig: aks.listClusterAdminCredential().kubeconfigs[0].value } }
احفظ كل من
main.bicep
وaks-store-quickstart.bicep
.
إنشاء مجموعة موارد Azure باستخدام الأمر az group create .
az group create --name myResourceGroup --location eastus
انشر ملف Bicep باستخدام الأمر az deployment group create .
az deployment group create --resource-group myResourceGroup --template-file main.bicep --parameters clusterName=<cluster-name> dnsPrefix=<dns-previs> linuxAdminUsername=<linux-admin-username> sshRSAPublicKey='<ssh-key>'
وفر القيم التالية في الأوامر:
- اسم نظام المجموعة: أدخل اسماً فريداً لنظام مجموعة AKS مثل mysfcluster.
- بادئة DNS: أدخل بادئة DNS مميزة لنظام مجموعتك مثل myakscluster.
- اسم مستخدم Linux Admin : أدخل اسم مستخدم ليتم الاتصال مستخدماً SSH، مثل azureuser.
- المفتاح العام لSSH RSA : انسخ والصق الجزءالعام من مفتاح إقرانك SSH (افتراضياً، محتويات~/.ssh/id_rsa.pub).
يستغرق إنشاء نظام مجموعة AKS بضع دقائق. انتظر حتى يتم نشر نظام المجموعة بنجاح قبل الانتقال إلى الخطوة التالية.
قم بتسجيل الدخول إلى بوابة Azure.
في قائمة مدخل Microsoft Azure أو من الصفحة الرئيسية ، انتقل إلى نظام مجموعة AKS.
ضمن موارد Kubernetes، حدد الخدمات والدخول.
ابحث عن خدمة المتجر الأمامية وانسخ قيمة عنوان IP الخارجي.
افتح مستعرض ويب إلى عنوان IP الخارجي للخدمة لمشاهدة تطبيق Azure Store قيد التنفيذ.
إذا كنت لا تخطط للانتقال من خلال البرنامج التعليمي AKS، قم بتنظيف الموارد غير الضرورية لتجنب رسوم Azure.
قم بإزالة مجموعة الموارد وخدمة الحاوية وجميع الموارد ذات الصلة باستخدام الأمر az group delete .
az group delete --name myResourceGroup --yes --no-wait
ملاحظة
تم إنشاء نظام مجموعة AKS بهوية مدارة معينة من قبل النظام، وهو خيار الهوية الافتراضي المستخدم في هذا التشغيل السريع. يدير النظام الأساسي هذه الهوية بحيث لا تحتاج إلى إزالتها يدويا.
في هذا التشغيل السريع، لقد قمت بتوزيع كتلة Kubernetes ثم وزعت تطبيقًا بسيطًا متعدد الحاويات عليها. هذا التطبيق النموذجي هو لأغراض العرض التوضيحي فقط ولا يمثل جميع أفضل الممارسات لتطبيقات Kubernetes. للحصول على إرشادات حول إنشاء حلول كاملة باستخدام AKS للإنتاج، راجع إرشادات حل AKS.
لمعرفة المزيد حول AKS والمرور عبر مثال كامل على التعليمات البرمجية للتوزيع، تابع البرنامج التعليمي لنظام مجموعة Kubernetes.
ملاحظات Azure Kubernetes Service
Azure Kubernetes Service هو مشروع مصدر مفتوح. حدد رابطًا لتقديم الملاحظات: