نشر Swift على Kubernetes: دليل أساسي عملي

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

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

ابدأ الدورة

نشر Swift على Kubernetes: دليل أساسي عملي



Swift ليست مجرد لغة للتطبيقات المحمولة. بفضل الأطر مثل Vapor و Kitura، يتم استخدام Swift بنشاط لإنشاء حلول الخادم. ومع ذلك، لتشغيل مثل هذا التطبيق في الإنتاج، يلزم تنسيق موثوق. Kubernetes (K8s) هي الأداة المثالية لإدارة الخدمات المحتواة. في هذا الدليل، سنشرح دورة النشر الكاملة لتطبيق Swift في كتلة Kubernetes: من الحاويات إلى إنشاء المانيفستات العاملة.



1. تحضير تطبيق Swift والحاويات



قبل الحديث عن Kubernetes، تحتاج إلى حزم تطبيق Swift الخاص بك في صورة Docker. لنأخذ مثالاً يعتمد على إطار Vapor (لكن النهج عام لأي خادم Swift).



أنشئ تطبيق Vapor بسيط:



// Sources/App/routes.swiftimport Vapor

func routes(_ app: Application) throws { app.get { req async in "Hello, Kubernetes!" }}


الآن لنكتب Dockerfile. مهم: استخدم صورة Swift الرسمية للبناء، وللحاوية النهائية استخدم صورة خفيفة (مثل ubuntu:jammy). هذا سيقلل الحجم ويزيد الأمان.



# ---- مرحلة البناء ----FROM swift:5.9-jammy AS build

WORKDIR /appCOPY Package.swift Package.resolved ./COPY Sources ./SourcesRUN swift build -c release --static-swift-stdlib

# ---- مرحلة التشغيل ----FROM ubuntu:jammy

RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*WORKDIR /appCOPY --from=build /app/.build/release/Run .

EXPOSE 8080CMD ["./Run"]


قم ببناء الصورة وإرسالها إلى السجل (مثل Docker Hub):



docker build -t yourdockerhub/swift-k8s-demo:latest .docker push yourdockerhub/swift-k8s-demo:latest


2. أساسيات Kubernetes: Pod و Deployment



يدير Kubernetes الحاويات من خلال الكائنات. أبسطها هو Pod، ولكن للإنتاج من الأفضل استخدام Deployment الذي يوفر النسخ المتماثل والتحديثات.



لننشئ ملف deployment.yaml:



apiVersion: apps/v1kind: Deploymentmetadata:  name: swift-demo  labels:    app: swift-demospec:  replicas: 2  selector:    matchLabels:      app: swift-demo  template:    metadata:      labels:        app: swift-demo    spec:      containers:      - name: swift-app        image: yourdockerhub/swift-k8s-demo:latest        ports:        - containerPort: 8080        resources:          requests:            memory: "128Mi"            cpu: "250m"          limits:            memory: "256Mi"            cpu: "500m"        livenessProbe:          httpGet:            path: /            port: 8080          initialDelaySeconds: 5          periodSeconds: 10


طبق المانيفست:



kubectl apply -f deployment.yaml


تحقق من الحالة:



kubectl get pods -l app=swift-demo


3. الخدمة (Service) للوصول إلى التطبيق



الـ Pods ديناميكية (عناوين IP تتغير عند إعادة التشغيل). لكي يتمكن العملاء من الوصول إلى التطبيق بشكل مستقر، نحتاج إلى Service. لننشئ service.yaml:



apiVersion: v1kind: Servicemetadata:  name: swift-servicespec:  selector:    app: swift-demo  ports:    - protocol: TCP      port: 80      targetPort: 8080  type: ClusterIP


للاختبار في كتلة محلية (مثل Minikube) يمكن استخدام NodePort أو إعادة توجيه المنافذ:



kubectl port-forward service/swift-service 8080:80


الآن التطبيق متاح على العنوان http://localhost:8080.



4. التوسع والتحديث (Rolling Update)



من أهم مزايا Kubernetes سهولة إدارة التوسع والتحديثات. يمكنك تغيير عدد النسخ المتماثلة أو تحديث صورة التطبيق دون توقف الخدمة.



لتوسيع التطبيق إلى 5 نسخ:



kubectl scale deployment/swift-demo --replicas=5


لتحديث الصورة إلى إصدار جديد:



kubectl set image deployment/swift-demo swift-app=yourdockerhub/swift-k8s-demo:v2


سيتولى Kubernetes عملية التحديث التدريجي (Rolling Update) تلقائياً، مع الحفاظ على توفر الخدمة.



5. الخلاصة



في هذا الدليل، قمنا بتغطية الخطوات الأساسية لنشر تطبيق Swift على Kubernetes: الحاويات باستخدام Docker، إنشاء Deployment و Service، والتوسع والتحديث. هذا النهج مناسب لكل من التطبيقات الصغيرة والأنظمة المعقدة. في المقالات المستقبلية، سنناقش مواضيع متقدمة مثل استخدام ConfigMaps و Secrets، وإعداد Ingress، ومراقبة التطبيق باستخدام Prometheus.



إذا كان لديك أسئلة أو اقتراحات، اكتبها في التعليقات. حظاً موفقاً في نشر Swift على Kubernetes!

المدونات

توصيات الكتب