نشر الوظيفة الإضافية Open Service Mesh باستخدام Bicep في خدمة Azure Kubernetes (AKS)
توضح هذه المقالة كيفية نشر الوظيفة الإضافية Open Service Mesh (OSM) إلى خدمة Azure Kubernetes (AKS) باستخدام قالب Bicep .
إشعار
مع إيقاف شبكة الخدمة المفتوحة (OSM) من قبل Cloud Native Computing Foundation (CNCF)، نوصي بتحديد تكوينات OSM الخاصة بك وترحيلها إلى تكوين Istio مكافئ. للحصول على معلومات حول الترحيل من OSM إلى Istio، راجع إرشادات الترحيل لتكوينات شبكة الخدمة المفتوحة (OSM) إلى Istio.
هام
استنادا إلى إصدار Kubernetes الذي تعمل به مجموعتك، تقوم الوظيفة الإضافية OSM بتثبيت إصدار مختلف من OSM.
إصدار Kubernetes | إصدار OSM مثبت |
---|---|
1.24.0 أو أحدث | 1.2.5 |
بين 1.23.5 و1.24.0 | 1.1.3 |
أقل من 1.23.5 | 1.0.0 |
قد لا تتوفر الإصدارات القديمة من OSM للتنصيب أو تكون مدعومة بنشاط إذا وصل إصدار AKS المقابل إلى نهاية العمر الافتراضي. يمكنك التحقق من تقويم إصدار AKS Kubernetes للحصول على معلومات حول نوافذ دعم إصدار AKS.
Bicep هي لغة مجال مخصصة تستخدم بناء الجملة التعريفي لتوزيع موارد Azure. يمكنك استخدام Bicep بدلاً من إنشاء قوالب Azure Resource Manager لتوزيع موارد Azure للبنية الأساسية كتعليمة برمجية.
قبل البدء
قبل البدء، تأكد من أن لديك المتطلبات الأساسية التالية في مكانها:
- الإصدار 2.20.0 من Azure CLI أو أحدث. قم بتشغيل
az --version
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. - مفتاح عام SSH يستخدم لنشر AKS. لمزيد من المعلومات، راجع إنشاء مفاتيح SSH باستخدام Azure CLI.
- Visual Studio Code مع محطة Bash الطرفية.
- ملحق Visual Studio Code Bicep.
تثبيت المكون الإضافي "شبكة الخدمة المفتوحة" على خدمة Azure Kubernetes لنظام مجموعة خدمة Azure Kubernetes جديد باستخدام Bicep
لتوزيع نظام مجموعة خدمة Azure Kubernetes جديد، يمكنك تمكين المكون الإضافي "شبكة الخدمة المفتوحة" عند إنشاء نظام المجموعة. تستخدم الإرشادات التالية قالب Bicep عاماً يوزع نظام مجموعة خدمة Azure Kubernetes باستخدام الأقراص العابرة وواجهة شبكة الحاوية kubenet
، ثم تمكّن المكون الإضافي "شبكة الخدمة المفتوحة". للحصول على سيناريوهات توزيع أكثر تقدما، راجع ما هو Bicep؟
إنشاء مجموعة موارد
إنشاء مجموعة موارد باستخدام
az group create
الأمر .az group create --name <my-osm-bicep-aks-cluster-rg> --location <azure-region>
إنشاء الملفات الرئيسية والمعلمات في Bicep
إنشاء دليل لتخزين ملفات توزيع Bicep الضرورية. في المثال التالي، يُنشأ دليل باسم bicep-osm-aks-addon وتُجرى تغييرات على الدليل:
mkdir bicep-osm-aks-addon cd bicep-osm-aks-addon
إنشاء الملف الرئيسي وملف المعلمات.
touch osm.aks.bicep && touch osm.aks.parameters.json
افتح الملف osm.aks.bicep وانسخ المحتوى التالي:
// https://learn.microsoft.com/azure/aks/troubleshooting#what-naming-restrictions-are-enforced-for-aks-resources-and-parameters @minLength(3) @maxLength(63) @description('Provide a name for the AKS cluster. The only allowed characters are letters, numbers, dashes, and underscore. The first and last character must be a letter or a number.') param clusterName string @minLength(3) @maxLength(54) @description('Provide a name for the AKS dnsPrefix. Valid characters include alphanumeric values and hyphens (-). The dnsPrefix can\'t include special characters such as a period (.)') param clusterDNSPrefix string param k8Version string param sshPubKey string param location string param adminUsername string resource aksCluster 'Microsoft.ContainerService/managedClusters@2021-03-01' = { name: clusterName location: location identity: { type: 'SystemAssigned' } properties: { kubernetesVersion: k8Version dnsPrefix: clusterDNSPrefix enableRBAC: true agentPoolProfiles: [ { name: 'agentpool' count: 3 vmSize: 'Standard_DS2_v2' osDiskSizeGB: 30 osDiskType: 'Ephemeral' osType: 'Linux' mode: 'System' } ] linuxProfile: { adminUsername: adminUserName ssh: { publicKeys: [ { keyData: sshPubKey } ] } } addonProfiles: { openServiceMesh: { enabled: true config: {} } } } }
افتح ملف osm.aks.parameters.json وانسخ المحتوى التالي. تأكد من استبدال قيم معلمة التوزيع بقيمك الخاصة.
إشعار
ملف osm.aks.parameters.json مثال لملف معلمات القالب اللازم لتوزيع Bicep. حدِّث المعلمات المحددة لتتناسب خصيصاً مع بيئة التوزيع لديك. المعلمات التي تحتاج إلى إضافة قيم لها تشمل:
clusterName
وclusterDNSPrefix
k8Version
وsshPubKey
location
و.adminUsername
للعثور على قائمة بإصدارات Kubernetes المدعومة في منطقتك، استخدم الأمرaz aks get-versions --location <region>
.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "clusterName": { "value": "<YOUR CLUSTER NAME HERE>" }, "clusterDNSPrefix": { "value": "<YOUR CLUSTER DNS PREFIX HERE>" }, "k8Version": { "value": "<YOUR SUPPORTED KUBERNETES VERSION HERE>" }, "sshPubKey": { "value": "<YOUR SSH KEY HERE>" }, "location": { "value": "<YOUR AZURE REGION HERE>" }, "adminUsername": { "value": "<YOUR ADMIN USERNAME HERE>" } } }
توزيع ملفات Bicep
افتح محطة طرفية وصادق على حساب Azure الخاص بك ل Azure CLI باستخدام
az login
الأمر .انشر ملفات Bicep باستخدام
az deployment group create
الأمر .az deployment group create \ --name OSMBicepDeployment \ --resource-group osm-bicep-test \ --template-file osm.aks.bicep \ --parameters @osm.aks.parameters.json
التحقق من تثبيت المكون الإضافي "شبكة الخدمة المفتوحة"
الاستعلام عن ملفات تعريف الوظائف الإضافية لنظام المجموعة للتحقق من الحالة الممكنة للوظائف الإضافية المثبتة. يُفترض أن يرجِع الأمر التالي
true
:az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
احصل على حالة وحدة تحكم osm باستخدام الأوامر التالية
kubectl
.kubectl get deployments -n kube-system --selector app=osm-controller kubectl get pods -n kube-system --selector app=osm-controller kubectl get services -n kube-system --selector app=osm-controller
الوصول إلى تكوين المكون الإضافي "شبكة الخدمة المفتوحة"
يمكنك تكوين وحدة تحكم OSM باستخدام مورد OSM MeshConfig، ويمكنك عرض إعدادات تكوين وحدة تحكم OSM باستخدام Azure CLI.
عرض إعدادات تكوين وحدة تحكم OSM باستخدام
kubectl get
الأمر .kubectl get meshconfig osm-mesh-config -n kube-system -o yaml
فيما يلي مثال لإخراج MeshConfig:
apiVersion: config.openservicemesh.io/v1alpha1 kind: MeshConfig metadata: creationTimestamp: "0000-00-00A00:00:00A" generation: 1 name: osm-mesh-config namespace: kube-system resourceVersion: "2494" uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31 spec: certificate: serviceCertValidityDuration: 24h featureFlags: enableEgressPolicy: true enableMulticlusterMode: false enableWASMStats: true observability: enableDebugServer: true osmLogLevel: info tracing: address: jaeger.osm-system.svc.cluster.local enable: false endpoint: /api/v2/spans port: 9411 sidecar: configResyncInterval: 0s enablePrivilegedInitContainer: false envoyImage: mcr.microsoft.com/oss/envoyproxy/envoy:v1.18.3 initContainerImage: mcr.microsoft.com/oss/openservicemesh/init:v0.9.1 logLevel: error maxDataPlaneConnections: 0 resources: {} traffic: enableEgress: true enablePermissiveTrafficPolicyMode: true inboundExternalAuthorization: enable: false failureModeAllow: false statPrefix: inboundExtAuthz timeout: 1s useHTTPSIngress: false
لاحظ تكوين
enablePermissiveTrafficPolicyMode
إلىtrue
. في شبكة الخدمة المفتوحة، يتجاوز وضع نهج نسبة استخدام الشبكة المتساهل إنفاذ نهج نسبة استخدام الشبكة لـ واجهة شبكة الخدمة. في هذا الوضع، تكتشف Open Service Mesh تلقائيًا الخدمات التي تشكل جزءًا من شبكة الخدمة. ستتضمن الخدمات المُكتشفة قواعد نهج نسبة استخدام الشبكة مُبرمجةً على كل توزيع Envoy جانبي للسماح بالاتصالات فيما بين هذه الخدمات.تحذير
قبل المتابعة، تحقق من تعيين وضع نهج نسبة استخدام الشبكة المتساهل إلى
true
. إذا لم يكن كذلك، فقم بتغييره إلىtrue
استخدام الأمر التالي:kubectl patch meshconfig osm-mesh-config -n kube-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
تنظيف الموارد
عندما لم تعد بحاجة إلى موارد Azure، احذف مجموعة موارد الاختبار الخاصة بالنشر باستخدام
az group delete
الأمر .az group delete --name osm-bicep-test
بدلاً من ذلك، يمكنك إلغاء تثبيت المكون الإضافي "شبكة الخدمة المفتوحة" والموارد ذات الصلة من نظام مجموعتك. للمزيد من المعلومات، راجع إلغاء تثبيت المكون الإضافي Open Service Mesh من مقطع تخزين AKS الخاص بك.
الخطوات التالية
أوضحت لك هذه المقالة كيفية تثبيت المكون الإضافي "شبكة الخدمة المفتوحة" على نظام مجموعة خدمة Azure Kubernetes، والتحقق من تثبيته وتشغيله. عند تثبيت المكون الإضافي "شبكة الخدمة المفتوحة" على نظام مجموعتك، يمكنك نشر نموذج تطبيق أو إلحاق تطبيق موجود للعمل مع شبكة الخدمة المفتوحة لديك.
Azure Kubernetes Service