إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا البدء السريع، تستخدم Azure CLI لإنشاء عنقود خدمة Azure Kubernetes (AKS) الذي يشغل Azure Container Linux (ACL) كنظام تشغيل عقدة (OS). بعد نشر العنقود، تتصل به باستخدام kubectl وتتأكد من أن عقد ACL تعمل كما هو متوقع.
الاعتبارات والقيود
قبل أن تبدأ، راجع الاعتبارات والقيود التالية لرابطة الرباط الصليبي الأمامي:
- يتوفر ACL بشكل عام بدءا من AKS v1.34.
- يتطلب ACL التشغيل الموثوق مع Secure Boot وvTPM. لا تتوفر نسخ الإطلاق غير الموثوقة.
- يتطلب ACL على Arm64 وحدات SKU مبنية على كوبالت (v6) لتمكين التوافق مع Trusted Launch.
-
NodeImageوهيNoneقنوات ترقية نظام التشغيل الوحيدة المدعومة.UnmanagedوغيرSecurityPatchمتوافقة مع ACL بسبب المجلد غير القابل/usrللتغيير. - دفق القطع الأثرية غير مدعوم.
- Pod Sandboxing غير مدعوم.
- الأجهزة الظاهرية السرية (CVMs) غير مدعومة.
- الجيل الأول من الأجهزة الافتراضية غير مدعومة.
المتطلبات المسبقه
ملاحظة
يمكنك استخدام Azure Cloud Shell أو تثبيت محلي ل Azure CLI لتشغيل الأوامر في هذا البدء السريع.
- إذا كنت تستخدم Azure CLI محليا، قم بتثبيت Azure CLI. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
- إذا كنت تستخدم تثبيتا محليا، سجل الدخول إلى Azure CLI باستخدام أمر
az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI. - إذا تمت مطالبتك، فقم بتثبيت ملحق Azure CLI عند الاستخدام الأول. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
- استخدم أمر
az versionللعثور على النسخة Azure CLI والمكتبات التابعة المثبتة. يتطلب Azure Container Linux إصدار Azure CLI 2.86.0 أو أعلى. للترقية إلى أحدث إصدار، استخدم الأمرaz upgrade. - إذا لزم الأمر، سجل Microsoft. مزود موارد ContainerService في اشتراكك Azure.
سجل Microsoft. مزود موارد ContainerService
قد تحتاج إلى تسجيل موفري الموارد في اشتراك Azure الخاص بك. تحقق من حالة التسجيل باستخدام الأمر az provider show .
az provider show --namespace Microsoft.ContainerService --query registrationState
إذا لزم الأمر، سجل az provider register مزود الموارد باستخدام الأمر.
az provider register --namespace Microsoft.ContainerService
إنشاء مجموعة موارد
مجموعة الموارد عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها. عند إنشاء مجموعة موارد، تحتاج إلى تحديد موقع. والموقع هو:
- موقع تخزين بيانات التعريف لمجموعة الموارد الخاصة بك.
- حيث سيتم تشغيل مواردك في Azure إذا لم تحدد منطقة أخرى عند إنشاء مورد.
إنشاء مجموعة موارد باستخدام az group create الأمر . المثال التالي يحدد متغيرات البيئة لاسم مجموعة الموارد، والمنطقة، واسم عنقود AKS، ثم ينشئ مجموعة موارد في الموقع المحدد. يمكنك استبدال قيم متغيرات البيئة بأسمائك المفضلة والمنطقة التي تفضلها.
export MY_RESOURCE_GROUP_NAME="myACLResourceGroup"
export REGION="westus"
export MY_AKS_CLUSTER_NAME="myACLCluster"
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
مثال على الإخراج:
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myACLResourceGroup",
"location": "westus",
"managedBy": null,
"name": "myACLResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
إنشاء عنقود ACL
إنشاء عنقود AKS باستخدام az aks create الأمر الذي يحتوي على --os-sku AzureContainerLinux المعامل لتزويد عنقود AKS بصورة ACL.
az aks create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $MY_AKS_CLUSTER_NAME \
--os-sku AzureContainerLinux \
--node-count 3 \
--generate-ssh-keys
بعد بضع دقائق، الأمر إكمال وإرجاع معلومات منسقة JSON حول الكتلة.
الاتصال بنظام المجموعة
لإدارة مجموعة Kubernetes، استخدم عميل سطر أوامر Kubernetes، kubectl.
kubectl مثبت بالفعل إذا كنت تستخدم Azure Cloud Shell. لتثبيت kubectl محليا، استخدم az aks install-cli الأمر .
قم بتكوين
kubectlللاتصال بنظام مجموعة Kubernetes باستخدام أمرaz aks get-credentials. هذا الأمر يقوم بتحميل بيانات الاعتماد وضبط Kubernetes CLI لاستخدامها.az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER_NAMEتحقق من الاتصال بالمجموعة باستخدام
kubectl getالأمر . يعمل هذا الأمر على استرجاع قائمة نظام المجموعة العنقودية.kubectl get nodes
نشر التطبيق
لنشر التطبيق، يمكنك استخدام ملف بيان لإنشاء كافة الكائنات المطلوبة لتشغيل تطبيق AKS Store. يحدد ملف بيانات Kubernetesالحالة المطلوبة لنظام المجموعة، مثل صور الحاوية المراد تشغيلها. يتضمن البيان عمليات نشر وخدمات Kubernetes التالية:
- واجهة المتجر: تطبيق ويب للعملاء لعرض المنتجات وتقديم الطلبات.
- خدمة المنتج: تعرض معلومات المنتج.
- خدمة الطلب: يضع الطلبات.
- Rabbit MQ: قائمة انتظار الرسائل لقائمة انتظار الطلبات.
ملاحظة
لا نوصي بتشغيل حاويات ذات حالة، مثل Rabbit MQ، دون تخزين مستمر للإنتاج. تستخدم هذه الخدمات هنا للبساطة، لكننا نوصي باستخدام الخدمات المدارة، مثل Azure Cosmos DB أو ناقل خدمة Azure.
أنشئ ملفا باسم
aks-store-quickstart.yamlوانسخه في البيان التالي:apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq 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 --- 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انشر التطبيق باستخدام
kubectl applyالأمر وحدد اسم بيان YAML.kubectl apply -f aks-store-quickstart.yaml
اختبر التطبيق
يمكنك التحقق من أن التطبيق قيد التشغيل عن طريق زيارة عنوان IP العام أو عنوان URL للتطبيق.
احصل على عنوان URL للتطبيق باستخدام الأوامر التالية:
runtime="5 minutes"
endtime=$(date -ud "$runtime" +%s)
while [[ $(date -u +%s) -le $endtime ]]
do
STATUS=$(kubectl get pods -l app=store-front -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}')
echo "Status: $STATUS"
if [ "$STATUS" == 'True' ]
then
export IP_ADDRESS=$(kubectl get service store-front --output 'jsonpath={..status.loadBalancer.ingress[0].ip}')
echo "Service IP Address: $IP_ADDRESS"
break
else
sleep 10
fi
done
echo "http://$IP_ADDRESS"
قم بحذف نظام المجموعة
إذا لم تكن تخطط لإكمال الدروس التعليمية، قم بتنظيف الموارد غير الضرورية لتجنب شحنات Azure.
قم بإزالة مجموعة الموارد وخدمة الحاوية وجميع الموارد ذات الصلة باستخدام az group delete الأمر .
az group delete --name $MY_RESOURCE_GROUP_NAME --yes --no-wait
المحتوى ذو الصلة
لمعرفة المزيد عن ACL ل AKS، راجع ما هو Azure حاوية لينكس (ACL) ل خدمة Azure Kubernetes (AKS)؟