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

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

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

ابدأ الدورة

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

\n\n

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

\n\n

لماذا Swift وKubernetes زوج رائع

\n\n

Kubernetes هو نظام لأتمتة نشر وتوسيع وإدارة التطبيقات المحتواة. Swift، بدوره، يتم تجميعه إلى ملف ثنائي أصلي، مما يجعله مرشحًا مثاليًا للتشغيل في حاويات خفيفة الوزن. المزايا الرئيسية لهذا الثنائي:

\n\n
    \n
  • الأداء: تطبيقات Swift لا تتطلب آلة افتراضية (مثل Java) أو مفسرًا (مثل Python)، مما يقلل من استهلاك الموارد.
  • \n
  • أمان الأنواع: يمنع مترجم Swift العديد من الأخطاء في مرحلة البناء، وهو أمر بالغ الأهمية لبيئات الإنتاج.
  • \n
  • النظام البيئي: يوفر إطار العمل Vapor أدوات جاهزة للعمل مع HTTP وقواعد البيانات وWebSockets، مما يبسط التكامل مع K8s.
  • \n
  • التوسع: يدير Kubernetes تلقائيًا نسخ خادم Swift الخاص بك، مما يضمن توفرًا عاليًا.
  • \n
\n\n

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

\n\n

قبل نشر التطبيق في Kubernetes، يجب تعبئته في صورة Docker. لننظر في مثال يعتمد على إطار العمل Vapor. لنفترض أن لديك تطبيقًا بسيطًا MySwiftApp مع نقطة نهاية واحدة.

\n\n

هيكل المشروع:

\n
\nMySwiftApp/\n├── Sources/\n│   └── App/\n│       └── main.swift\n├── Package.swift\n└── Dockerfile\n
\n\n

كود main.swift (خادم HTTP بسيط):

\n
import Vapor\n\nlet app = Application()\napp.get("hello") { req in\n    return "Hello from Swift on Kubernetes!"\n}\ntry app.run()\n
\n\n

ملف Package.swift:

\n
// swift-tools-version:5.8\nimport PackageDescription\n\nlet package = Package(\n    name: "MySwiftApp",\n    platforms: [.macOS(.v12)],\n    dependencies: [\n        .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0")\n    ],\n    targets: [\n        .executableTarget(\n            name: "App",\n            dependencies: ["Vapor"]\n        )\n    ]\n)\n
\n\n

الآن لننشئ Dockerfile لبناء وتشغيل التطبيق. سنستخدم بناء متعدد المراحل لتقليل حجم الصورة:

\n\n
# ---- مرحلة البناء ----\nFROM swift:5.8 as builder\nWORKDIR /app\nCOPY Package.swift Package.resolved ./\nRUN swift package resolve\nCOPY . .\nRUN swift build -c release --static-swift-stdlib\n\n# ---- مرحلة التشغيل ----\nFROM ubuntu:22.04\nWORKDIR /app\nCOPY --from=builder /app/.build/release/App .\nEXPOSE 8080\nCMD ["./App"]\n
\n\n

قم ببناء الصورة:

\n
docker build -t my-swift-app:latest .\n
\n\n

الخطوة 2: نشر الصورة في سجل الحاويات

\n\n

للعمل مع Kubernetes، يجب أن تكون الصورة متاحة من السجل. استخدم Docker Hub أو أي سجل آخر (GitHub Container Registry, GitLab, AWS ECR).

\n\n
docker tag my-swift-app:latest your-dockerhub-username/my-swift-app:latest\ndocker push your-dockerhub-username/my-swift-app:latest\n
\n\n

استبدل your-dockerhub-username باسم المستخدم الخاص بك. إذا كنت تستخدم سجلاً خاصًا، فلا تنسَ تكوين imagePullSecrets في ملفات K

المدونات

توصيات الكتب