التشغيل السريع: نشر نظام مجموعة 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
الخطوات التالية
قم بتشغيل Python أو Node أو تطبيقات أخرى من خلال حاويات سرية باستخدام برنامج تضمين ISV/OSS SGX. راجع عينات الحاوية السرية في GitHub.
تشغيل تطبيقات مدركة للجيب باستخدام عينات حاوية Azure مدركة للجيب في GitHub.