Kubernetes पर Swift का डिप्लॉयमेंट: एक व्यावहारिक मूल गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kubernetes पर Swift का डिप्लॉयमेंट: एक व्यावहारिक मूल गाइड

\n\n

Swift केवल मोबाइल एप्लिकेशन के लिए भाषा नहीं है। Vapor और Kitura जैसे फ्रेमवर्क की बदौलत, Swift का उपयोग सर्वर-साइड समाधान बनाने के लिए सक्रिय रूप से किया जाता है। हालांकि, ऐसे एप्लिकेशन को प्रोडक्शन में चलाने के लिए, विश्वसनीय ऑर्केस्ट्रेशन की आवश्यकता होती है। Kubernetes (K8s) कंटेनरीकृत सेवाओं के प्रबंधन के लिए एक आदर्श उपकरण है। इस गाइड में, हम Kubernetes क्लस्टर में Swift एप्लिकेशन को डिप्लॉय करने के पूरे चक्र को समझेंगे: कंटेनरीकरण से लेकर कार्यशील मेनिफेस्ट बनाने तक।

\n\n

1. Swift एप्लिकेशन और कंटेनरीकरण की तैयारी

\n\n

Kubernetes के बारे में बात करने से पहले, आपको अपने Swift एप्लिकेशन को Docker इमेज में पैकेज करना होगा। आइए Vapor फ्रेमवर्क पर आधारित एक उदाहरण देखें (लेकिन यह दृष्टिकोण किसी भी Swift सर्वर के लिए सार्वभौमिक है)।

\n\n

एक न्यूनतम Vapor एप्लिकेशन बनाएं:

\n\n
// Sources/App/routes.swift\nimport Vapor\n\nfunc routes(_ app: Application) throws {\n    app.get { req async in\n        "Hello, Kubernetes!"\n    }\n}\n
\n\n

अब Dockerfile लिखते हैं। महत्वपूर्ण: बिल्ड के लिए आधिकारिक Swift इमेज का उपयोग करें, और अंतिम कंटेनर के लिए हल्की इमेज (जैसे, ubuntu:jammy) का उपयोग करें। इससे आकार कम होगा और सुरक्षा बढ़ेगी।

\n\n
# ---- Build Stage ----\nFROM swift:5.9-jammy AS build\n\nWORKDIR /app\nCOPY Package.swift Package.resolved ./\nCOPY Sources ./Sources\nRUN swift build -c release --static-swift-stdlib\n\n# ---- Run Stage ----\nFROM ubuntu:jammy\n\nRUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*\nWORKDIR /app\nCOPY --from=build /app/.build/release/Run .\n\nEXPOSE 8080\nCMD ["./Run"]\n
\n\n

इमेज बनाएं और रजिस्ट्री (जैसे, Docker Hub) में भेजें:

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

2. Kubernetes की मूल बातें: Pod और Deployment

\n\n

Kubernetes ऑब्जेक्ट के माध्यम से कंटेनरों का प्रबंधन करता है। सबसे सरल Pod है, लेकिन प्रोडक्शन के लिए Deployment का उपयोग करना बेहतर है, जो रेप्लिकेशन और अपडेट सुनिश्चित करता है।

\n\n

एक फ़ाइल deployment.yaml बनाएं:

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

मेनिफेस्ट लागू करें:

\n\n
kubectl apply -f deployment.yaml\n
\n\n

स्थिति जांचें:

\n\n
kubectl get pods -l app=swift-demo\n
\n\n

3. एप्लिकेशन तक पहुंच के लिए सर्विस (Service)

\n\n

Pod गतिशील होते हैं (रीस्टार्ट होने पर उनका IP बदल जाता है)। क्लाइंट एप्लिकेशन तक स्थिर रूप से पहुंच सकें, इसके लिए Service की आवश्यकता होती है। service.yaml बनाएं:

\n\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: swift-service\nspec:\n  selector:\n    app: swift-demo\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 8080\n  type: ClusterIP\n
\n\n

स्थानीय क्लस्टर (जैसे, Minikube) में परीक्षण के लिए, NodePort या पोर्ट फ़ॉरवर्डिंग का उपयोग किया जा सकता है:

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

अब एप्लिकेशन http://localhost:8080 पते पर उपलब्ध है।

\n\n

4. स्केलिंग और अपडेट (Rolling Update)

\n\n

Kubernetes का एक मुख्य लाभ आसान स्केलिंग है।

ब्लॉग

पुस्तक अनुशंसाएँ