نشر الوظيفة الإضافية 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 للبنية الأساسية كتعليمة برمجية.

قبل البدء

قبل البدء، تأكد من أن لديك المتطلبات الأساسية التالية في مكانها:

تثبيت المكون الإضافي "شبكة الخدمة المفتوحة" على خدمة 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

  1. إنشاء دليل لتخزين ملفات توزيع Bicep الضرورية. في المثال التالي، يُنشأ دليل باسم bicep-osm-aks-addon وتُجرى تغييرات على الدليل:

    mkdir bicep-osm-aks-addon
    cd bicep-osm-aks-addon
    
  2. إنشاء الملف الرئيسي وملف المعلمات.

    touch osm.aks.bicep && touch osm.aks.parameters.json
    
  3. افتح الملف 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: {}
          }
        }
      }
    }
    
  4. افتح الملف osm.aks.parameters.json وانسخ المحتوى التالي. تأكد من استبدال قيم معلمة التوزيع بقيمك الخاصة.

    إشعار

    ملف osm.aks.parameters.json مثال لملف معلمات القالب اللازم لتوزيع Bicep. حدِّث المعلمات المحددة لتتناسب خصيصاً مع بيئة التوزيع لديك. المعلمات التي تحتاج إلى إضافة قيم لها تشمل: clusterNameو clusterDNSPrefixk8Versionو sshPubKeylocationو.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

  1. افتح محطة طرفية وصادق على حساب Azure الخاص بك ل Azure CLI باستخدام az login الأمر .

  2. انشر ملفات 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
    

التحقق من تثبيت المكون الإضافي "شبكة الخدمة المفتوحة"

  1. الاستعلام عن ملفات تعريف الوظائف الإضافية لنظام المجموعة للتحقق من الحالة الممكنة للوظائف الإضافية المثبتة. يُفترض أن يرجِع الأمر التالي true:

    az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
    
  2. احصل على حالة وحدة تحكم 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 Kubernetes، والتحقق من تثبيته وتشغيله. عند تثبيت المكون الإضافي "شبكة الخدمة المفتوحة" على نظام مجموعتك، يمكنك نشر نموذج تطبيق أو إلحاق تطبيق موجود للعمل مع شبكة الخدمة المفتوحة لديك.