التشغيل السريع: نشر نظام مجموعة AKS مع عقد عامل Intel SGX للحوسبة السرية باستخدام Azure CLI

في هذه البداية السريعة، ستستخدم Azure CLI لنشر مجموعة خدمة Azure Kubernetes (AKS) مع عقد VM محملة بجيوب (DCsv2/DCSv3). ثم ستقوم بتشغيل تطبيق مرحبًا بالعالم البسيط في الجيب. كما يمكنك أيضًا توفير نظام مجموعة وإضافة عُقد الحوسبة السرية من مدخل Azure ولكن يُركز التشغيل السريع هذا على Azure CLI.

AKS عبارة عن خدمة Kubernetes مدارة تمكن المطورين أو مشغلي نظام المجموعة من توزيع أنظمة المجموعات وإدارتها بسرعة. لمعرفة المزيد، اقرأ ⁧⁩مقدمة AKS⁧⁩ و⁧⁩نظرة عامة على العُقد السرية لـ AKS.⁧

تتضمن ميزات عُقد الحوسبة السرية ما يلي:

  • عُقد عامل Linux تدعم حاويات Linux.
  • الجيل 2 من الجهاز الظاهري (VM) مع عُقد Ubuntu 18.04 VM.
  • وحدة المعالجة المركزية Intel SGX قادرة على المساعدة في تشغيل الحاويات الخاصة بك في جيب حماية السرية بغرض الاستفادة من ذاكرة التخزين المؤقت للصفحة المشفرة (EPC). لمزيد من المعلومات، راجع ⁧⁩الأسئلة المتداولة لحوسبة Azure السرية⁧⁩.
  • برنامج تشغيل DCAP SGX Intel مثبت مسبقًا على عُقد الحوسبة السرية. لمزيد من المعلومات، راجع ⁧⁩الأسئلة المتداولة لحوسبة Azure السرية⁧⁩.

ملاحظة

تستخدم أجهزة DCsv2/DCsv3 الظاهرية أجهزة متخصصة توفر منطقة الموضوع. لمزيد من المعلومات، راجع ⁧⁩وحدات حفظ المخزون المتوفرة والمناطق المدعومة.⁧

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

يتطلب هذا التشغيل السريع:

  • ما لا يقل عن ثمانية مراكز DCsv2/DCSv3/DCdsv3 متوفرة في اشتراكك.

    بشكل افتراضي، لا توجد حصة نسبية معينة مسبقا لأحجام Intel SGX VM لاشتراكات Azure. يجب عليك اتباع هذه الإرشادات لطلب الحصة النسبية الأساسية للجهاز الظاهري لاشتراكاتك.

إنشاء نظام مجموعة AKS مع عقد الحوسبة السرية المدركة للجيب والوظيفة الإضافية Intel SGX

استخدم الإرشادات التالية لإنشاء نظام مجموعة AKS مع تمكين الوظيفة الإضافية Intel SGX، وإضافة تجمع عقدة إلى نظام المجموعة، والتحقق مما قمت بإنشائه باستخدام تطبيق hello world enclave.

إنشاء نظام مجموعة AKS مع تجمع عقدة النظام وADON Intel SGX AKS

ملاحظة

إذا كان لديك بالفعل نظام مجموعة AKS الذي يفي بالمعايير المطلوبة مسبقًا، ⁧⁩فانتقل إلى المقطع التالي⁧⁩ لإضافة تجمع عُقدة الحوسبة السرية.

يعرض Intel SGX AKS Addon "confcom" برامج تشغيل جهاز Intel SGX لحاوياتك لتجنب التغييرات المضافة إلى pod yaml.

أولاً، قم بإنشاء مجموعة موارد لنظام المجموعة باستخدام الأمر ⁧⁩إنشاء مجموعة az⁧⁩. ينشئ المثال التالي مجموعة موارد تسمى myResourceGroup في منطقة eastus2 :

az group create --name myResourceGroup --location eastus2

الآن، قم بإنشاء نظام مجموعة AKS، مع تمكين الوظيفة الإضافية للحوسبة السرية، وذلك باستخدام الأمر ⁧⁩إنشاء az aks⁧⁩:

az aks create -g myResourceGroup --name myAKSCluster --generate-ssh-keys --enable-addons confcom

سينشر الأمر أعلاه مجموعة AKS جديدة مع تجمع عقدة النظام لعقدة الحوسبة غير السرية. لا يوصى بعقد Intel SGX للحوسبة السرية لتجمعات عقد النظام.

إضافة تجمع عُقدة مستخدم مع قدرات الحوسبة السرية إلى نظام المجموعة AKS

تشغيل الأمر التالي لإضافة تجمع عُقدة مستخدم من ⁧Standard_DC4s_v3⁩ الحجم مع ثلاث عقد إلى نظام المجموعة AKS. يمكنك اختيار وحدة SKU أخرى بحجم أكبر من قائمة وحدات SKU والمناطق DCsv2/DCsv3 المدعومة.

az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-vm-size Standard_DC4s_v3 --node-count 2

بعد تشغيل الأمر، يجب أن يكون تجمع عقدة جديد مع DCsv3 مرئيا مع الوظيفة الإضافية للحوسبة السرية DaemonSets (المكون الإضافي لجهاز SGX).

تحقق من تجمع العُقدة والوظيفة الإضافية

الحصول على بيانات اعتماد نظام مجموعة AKS الخاصة بك باستخدام الأمر ⁧⁩الحصول على بيانات اعتماد az aks⁧⁩:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

استخدم الأمر ⁧kubectl get pods⁩ للتحقق من أن العُقد يتم إنشاؤها بشكل صحيح وDaemonSets المرتبطة بـ SGX قيد التشغيل على تجمعات عُقد DCsv2:

kubectl get pods --all-namespaces
kube-system     sgx-device-plugin-xxxx     1/1     Running

إذا كان الإخراج يطابق التعليمات البرمجية السابقة، فإن نظام مجموعة AKS جاهزًا الآن لتشغيل التطبيقات السرية.

يمكنك الانتقال إلى ⁧⁩توزيع مرحبًا بالعالم من⁧⁩ جيب تطبيق معزول في هذا التشغيل السريع لاختبار تطبيق في جيب. أو استخدم الإرشادات التالية لإضافة المزيد من تجمعات العُقد على AKS. (يدعم AKS مزج تجمعات عقدة SGX وتجمعات عقدة غير SGX.)

إضافة تجمع عقدة حوسبة سرية إلى نظام مجموعة AKS موجود⁧

يفترض هذا المقطع أنك تقوم بتشغيل نظام مجموعة AKS بالفعل، والذي يفي بالمعايير المطلوبة مسبقًا في التشغيل السريع هذا.

تمكين الوظيفة الإضافية AKS للحوسبة السرية على نظام المجموعة الموجود

تشغيل الأمر التالي لتمكين الوظيفة الإضافية للحوسبة السرية:

az aks enable-addons --addons confcom --name MyManagedCluster --resource-group MyResourceGroup

إضافة تجمع عقدة مستخدم DCsv3 إلى نظام المجموعة

ملاحظة

لاستخدام الحوسبة السرية، يجب أن يكون لديك مجموعة AKS وذلك للحصول على أقل تجمع للعقد القائمة على DCsv2/DCsv3 VM SKU. لمعرفة المزيد حول وحدات SKU للأجهزة الظاهرية DCs-v2/Dcs-v3 للحوسبة السرية، راجع وحدات SKU المتوفرة والمناطق المدعومة.

قم بتشغيل الأمر التالي لإنشاء تجمع عقدة:

az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-count 2 --node-vm-size Standard_DC4s_v3

تحقق من أنه تم إنشاء تجمع عقدة جديدة مع الاسم ⁧⁩confcompool1⁧⁩:

az aks nodepool list --cluster-name myAKSCluster --resource-group myResourceGroup

تحقق من تشغيل DaemonSets على تجمعات عقدة سرية

تسجيل الدخول إلى نظام مجموعة AKS الموجود لديك لإجراء التحقق التالي:

kubectl get nodes

يجب أن يُظهر الإخراج تجمع ⁧⁩confcompool1⁧⁩ المضاف حديثًا على نظام مجموعة AKS. قد تظهر أيضًا DaemonSets أخرى.

kubectl get pods --all-namespaces
kube-system     sgx-device-plugin-xxxx     1/1     Running

إذا كان الإخراج يطابق التعليمات البرمجية السابقة، فإن نظام مجموعة AKS جاهزًا الآن لتشغيل التطبيقات السرية.

توزيع مرحبًا بالعالم من تطبيق جيب معزول ⁧

أنت الآن جاهز لتوزيع تطبيق اختبار.

قم بإنشاء ملف اسمه ⁧⁩hello-world-enclave.yaml⁧⁩ والصقه في بيان YAML التالي. يمكنك العثور على نموذج التعليمات البرمجية للتطبيق هذا في ⁧⁩مشروع "الجيب المفتوح".⁧⁩ يفترض هذا التوزيع أنك قد قمت بتوزيع الوظيفة الإضافية ⁧⁩confcom⁧⁩.

ملاحظة

يسحب المثال التالي صورة حاوية عامة من Docker Hub. نوصي بإعداد سحب سري للمصادقة باستخدام حساب Docker Hub بدلاً من إجراء طلب سحب مجهول. لتحسين الموثوقية عند التعامل مع المحتوى العام، قم باستيراد الصورة وإدارتها في سجل حاويات Azure خاص. ⁧⁩تعرف على المزيد حول العمل مع الصور العامة⁧⁩.

apiVersion: batch/v1
kind: Job
metadata:
  name: oe-helloworld
  namespace: default
spec:
  template:
    metadata:
      labels:
        app: oe-helloworld
    spec:
      containers:
      - name: oe-helloworld
        image: mcr.microsoft.com/acc/samples/oe-helloworld:latest
        resources:
          limits:
            sgx.intel.com/epc: "10Mi"
          requests:
            sgx.intel.com/epc: "10Mi"
        volumeMounts:
        - name: var-run-aesmd
          mountPath: /var/run/aesmd
      restartPolicy: "Never"
      volumes:
      - name: var-run-aesmd
        hostPath:
          path: /var/run/aesmd
  backoffLimit: 0

بدلا من ذلك، يمكنك أيضا القيام بنشر تحديد تجمع عقدة لعمليات توزيع الحاوية كما هو موضح أدناه

apiVersion: batch/v1
kind: Job
metadata:
  name: oe-helloworld
  namespace: default
spec:
  template:
    metadata:
      labels:
        app: oe-helloworld
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: agentpool
                operator: In
                values:
                - acc # this is the name of your confidential computing nodel pool
                - acc_second # this is the name of your confidential computing nodel pool
      containers:
      - name: oe-helloworld
        image: mcr.microsoft.com/acc/samples/oe-helloworld:latest
        resources:
          limits:
            sgx.intel.com/epc: "10Mi"
          requests:
            sgx.intel.com/epc: "10Mi"
        volumeMounts:
        - name: var-run-aesmd
          mountPath: /var/run/aesmd
      restartPolicy: "Never"
      volumes:
      - name: var-run-aesmd
        hostPath:
          path: /var/run/aesmd
  backoffLimit: 0

الآن استخدم الأمر ⁧kubectl apply⁩ لإنشاء مهمة عينة، والتي سيتم فتحها في جيب آمن كما هو موضح في إخراج المثال التالي:

kubectl apply -f hello-world-enclave.yaml
job "oe-helloworld" created

يمكنك تأكيد إنشاء حمل العمل لبيئة تنفيذ موثوق بها (جيب) بنجاح بواسطة تشغيل الأوامر التالية:

kubectl get jobs -l app=oe-helloworld
NAME       COMPLETIONS   DURATION   AGE
oe-helloworld   1/1           1s         23s
kubectl get pods -l app=oe-helloworld
NAME             READY   STATUS      RESTARTS   AGE
oe-helloworld-rchvg   0/1     Completed   0          25s
kubectl logs -l app=oe-helloworld
Hello world from the enclave
Enclave called into host to print: Hello World!

تنظيف الموارد

لإزالة تجمع عقدة الحوسبة السرية التي قمت بإنشائها في التشغيل السريع هذا، استخدم الأمر التالي:

az aks nodepool delete --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup

لحذف نظام المجموعة AKS استخدم الأمر التالي:

az aks delete --resource-group myResourceGroup --cluster-name myAKSCluster

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