نشر تطبيق C# على Kubernetes: دليل أساسي للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا يعتبر C# و Kubernetes مزيجًا قويًا

\n\n

التطوير الحديث يتطلب بشكل متزايد ليس فقط كتابة الكود، ولكن أيضًا تعبئته بشكل صحيح وتشغيله في بيئة سحابية. Kubernetes (أو K8s) أصبح المعيار الفعلي لتنسيق الحاويات، و C# (.NET) واحد من أكثر اللغات شيوعًا لإنشاء تطبيقات الويب عالية التحميل والخدمات المصغرة.

\n\n

في هذا الدليل، سننتقل من تطبيق C# جاهز إلى نشره بالكامل في مجموعة Kubernetes. ستتعلم كيفية إنشاء صورة Docker، وكتابة مانيفستات النشر والخدمة، ثم تشغيل كل شيء باستخدام kubectl. لا سحر — فقط ممارسة عملية.

\n\n

الخطوة 1: تحضير تطبيق .NET والحاويات

\n\n

1.1 إنشاء واجهة برمجة تطبيقات ويب بسيطة بلغة C#

\n\n

للتجربة، سنقوم بإنشاء ASP.NET Core Web API بسيط. افتح الطرفية ونفذ:

\n\n
dotnet new webapi -n MyK8sApp\ncd MyK8sApp
\n\n

بشكل افتراضي، يحتوي المشروع بالفعل على المتحكم WeatherForecastController. تأكد من أن التطبيق يعمل محليًا:

\n\n
dotnet run
\n\n

انتقل إلى العنوان http://localhost:5000/weatherforecast — يجب أن ترى استجابة JSON. الآن تطبيقنا جاهز للتعبئة.

\n\n

1.2 إنشاء Dockerfile

\n\n

النشر على Kubernetes غير ممكن بدون الحاويات. لننشئ ملف Dockerfile في جذر المشروع:

\n\n
# نستخدم الصورة الرسمية للبناء\nFROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /app\n\n# ننسخ ملفات المشروع ونستعيد التبعيات\nCOPY *.csproj .\nRUN dotnet restore\n\n# ننسخ باقي الملفات ونبني التطبيق\nCOPY . .\nRUN dotnet publish -c Release -o out\n\n# الصورة النهائية — فقط بيئة التشغيل\nFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime\nWORKDIR /app\nCOPY --from=build /app/out .\nENTRYPOINT ["dotnet", "MyK8sApp.dll"]
\n\n

لاحظ: نستخدم البناء متعدد المراحل (multi-stage build) — وهذا يقلل الحجم النهائي للصورة ويعزز الأمان.

\n\n

1.3 بناء واختبار صورة Docker

\n\n

قم ببناء الصورة وتشغيلها محليًا:

\n\n
docker build -t myk8sapp:latest .\ndocker run -d -p 8080:80 --name myapp myk8sapp:latest
\n\n

تحقق من العمل: http://localhost:8080/weatherforecast. إذا كان كل شيء يعمل — ممتاز. أوقف الحاوية:

\n\n
docker stop myapp && docker rm myapp
\n\n

الخطوة 2: أساسيات Kubernetes — ما تحتاج معرفته للنشر

\n\n

قبل كتابة المانيفستات، دعنا نفهم المفاهيم الأساسية لـ Kubernetes:

\n\n
    \n
  • Pod — أصغر وحدة نشر. تحتوي على حاوية واحدة أو أكثر.
  • \n
  • Deployment — يدير حالة Pods: التوسع، التحديثات، الاسترداد بعد الأعطال.
  • \n
  • Service — تجريد يوفر وصولاً شبكيًا إلى Pods. عادةً ما يستخدم نوع ClusterIP (داخلي) أو LoadBalancer (خارجي).
  • \n
  • ConfigMap / Secret — لتخزين التكوين والبيانات الحساسة.
  • \n
\n\n

سنستخدم minikube للاختبار المحلي. قم بتثبيته وفقًا للتوجيهات الرسمية.

\n\n

قم بتشغيل المجموعة:

\n\n
minikube start
\n\n

الخطوة 3: إنشاء مانيفستات Kubernetes لتطبيق C#

\n\n

3.1 مانيفست Deployment

\n\n

قم بإنشاء ملف deployment.yaml:

\n\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: myk8sapp-deployment\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: myk8sapp\n  template:\n    metadata:\n      labels:\n        app: myk8sapp\n    spec:\n      containers:\n      - name: myk8sapp\n        image: myk8sapp:latest\n        imagePullPol                

المدونات

توصيات الكتب