ترحيل تطبيق بسيط من Service Fabric إلى AKS

توفر هذه المقالة مثالا لترحيل حمل العمل لمساعدتك في تنفيذ بعض المعلومات المفاهيمية المتوفرة في ترحيل حمل العمل الخاص بك من Service Fabric إلى AKS. توفر هذه المقالة معلومات حول خدمة Azure Kubernetes (AKS) ومقارنة AKS مع Azure Service Fabric. كما يصف الاعتبارات التي يجب مراعاتها عند ترحيل أحمال العمل الخاصة بك.

يركز هذا المثال على تطبيقات Service Fabric المستندة إلى Windows التي تم بالفعل تعبئتها في حاويات. يدعم كل من Azure Service Fabric وAzure Kubernetes Service حاويات Windows وLinux. إذا لم يكن التطبيق الخاص بك في حاويات، ففكر في التحقق مما إذا كان يمكنك تعبئته في حاويات. يعد إنشاء صورة حاوية لتطبيقك شرطا أساسيا لنشر التطبيق في Azure Kubernetes Service. إذا كان التطبيق يعتمد على نماذج برمجة Service Fabric (خدمات موثوقة، والممثلون الموثوقون، ASP.NET Core، والملفات التنفيذية للضيف)، فستحتاج على الأرجح إلى إجراء بعض إعادة بناء التعليمات البرمجية.

للحصول على معلومات حول تعبئة التطبيق في حاويات، راجع إعداد تطبيق ل AKS. للحصول على معلومات حول تعبئة تطبيق ASP.NET في حاويات، راجع ASP.NET تعبئة التطبيقات في حاويات وترحيلها إلى AKS.

المتطلبات الأساسية

قبل بدء الترحيل، تحتاج إلى:

  • صورة حاوية تطبيق مخزنة في Azure Container Registry.

  • بيئة Bash التي يمكنك استخدامها لتكوين موارد Azure.

  • أداة سطر الأوامر kubectl Kubernetes. إذا لم يكن متوفرا بالفعل في بيئتك، يمكنك تثبيته عن طريق تشغيل هذا الأمر:

    az aks install-cli
    

خطوات الترحيل

الخطوة الأولى هي إعداد الموارد التي تحتاجها لإنشاء تجمع عقدة Windows في Kubernetes. للقيام بذلك، اتبع الإرشادات الواردة في إنشاء حاوية Windows Server على نظام مجموعة AKS، ولكن تأكد من التوقف عند الوصول إلى قسم "نشر التطبيق". عند هذه النقطة، اتبع الإرشادات الواردة في هذه المقالة.

تعد ترجمة بيان تكوين Service Fabric إلى بيان AKS خطوة مهمة. تظهر الأقسام التالية:

  • XML لبيان الخدمة الذي قد تستخدمه لنشر Service Fabric أساسي.
  • بيان AKS مكافئ وظيفيا يقوم بإنشاء عناصر Kubernetes Deployment and Service .

لا يقوم البيانان بتعيين واحد لواحد لأنهما يستندان إلى النماذج الوظيفية الخاصة بكل خدمة، ولكن أهدافهما هي نفسها. (في هذه العينات، تستخدم المتغيرات التنسيق <VARIABLE DESCRIPTION>.)

في بيان AKS، يوفر الكائن Deployment تحديثات تعريفية ل Pods و ReplicaSets. يعرض Service الكائن تطبيقا يعمل على مجموعة من pods كخدمة شبكة.

نموذج بيان خدمة Service Fabric

<?xml version="1.0" encoding="utf-8"?>

<ServiceManifest Name="<APP NAME>"
                 Version="1.0.0"
                 xmlns="http://schemas.microsoft.com/2011/01/fabric"
                 xmlns:xsd="https://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
  <ServiceTypes>
    <StatelessServiceType ServiceTypeName="<SERVICE NAME>" UseImplicitHost="true" />
  </ServiceTypes>
 
  <!-- Code package is your service executable file. -->
  <CodePackage Name="code" Version="1.0.0">
    <EntryPoint>
      <ContainerHost>
        <ImageName><YOUR IMAGE></ImageName>
        <Commands></Commands>
      </ContainerHost>
    </EntryPoint>
    <!-- Pass environment variables to your container. -->
    <EnvironmentVariables>
      <EnvironmentVariable Name="HttpGatewayPort" Value=""/>
      <EnvironmentVariable Name="BackendServiceName" Value=""/>
    </EnvironmentVariables>
 
  </CodePackage>
 
  <ConfigPackage Name="Config" Version="1.0.0" />
 
  <Resources>
    <Endpoints>
      <Endpoint Name="<HTTP ENDPOINT NAME>" UriScheme="http" Port="80" Protocol="http"/>
    </Endpoints>
  </Resources>
</ServiceManifest>

نموذج بيان AKS

apiVersion: apps/v1
kind: Deployment
metadata:
  name: <APP NAME>
  labels:
    app: <APP NAME>
spec:
  replicas: 1
  template:
    metadata:
      name: <APP NAME>
      labels:
        app: <APP NAME>
    spec:
      nodeSelector:
        "kubernetes.io/os": windows
      containers:
      - name: <SERVICE NAME>
        image: <YOUR IMAGE>
        resources:
          limits:
            cpu: 1
            memory: 800M
        ports:
          - containerPort: 80
    - env:
        - name: HttpGatewayPort
          value: ""
        - name: BackendServiceName
          value: ""
  selector:
    matchLabels:
      app: <APP NAME>
---
apiVersion: v1
kind: Service
metadata:
  name: <SERVICE NAME>
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
  selector:
    app: <SERVICE NAME>

يوفر Kubernetes مجموعة كبيرة من خيارات التكوين، وهو أمر مفيد للمطورين ذوي الخبرة. ولكن يمكن أن تصبح البيانات كبيرة ومعقدة عند استخدام الكثير منها. للتعرف على تنفيذ ترحيل بسيط، نوصي بمراجعة عمليات النشر وبيانات YAML.

بعد أن يكون لديك البيان الخاص بك، تحتاج فقط إلى تطبيقه، ويمكنك مشاهدة تطبيقك:

kubectl apply -f <YOUR MANIFEST>.yaml
kubectl get deploy <APP NAME>
kubectl get service <SERVICE NAME> --watch

إشعار

يستخدم هذا المثال مساحة اسم Kubernetes الافتراضية، والتي تستخدم بشكل عام فقط للسيناريوهات الأساسية. في Kubernetes، توفر مساحات الأسماء آلية لعزل مجموعات الموارد داخل مجموعة واحدة. مساحات الأسماء مهمة لفرض حدود الأمان والشبكات والموارد. لتحديد تكوين يعمل بشكل أفضل للتطبيق الخاص بك، راجع وثائق مساحات أسماء Kuberetes.

المساهمون

تحتفظ Microsoft بهذه المقالة. وهي مكتوبة في الأصل من قبل المساهمين التاليين.

الكتاب الرئيسيون:

مساهمون آخرون:

لمشاهدة ملفات تعريف LinkedIn غير العامة، سجل الدخول إلى LinkedIn.

الخطوات التالية