Kubernetes पर JavaScript (Node.js) की तैनाती: व्यावहारिक बुनियादी मार्गदर्शिका
\n\nआधुनिक वेब डेवलपमेंट कंटेनरीकरण और ऑर्केस्ट्रेशन के बिना अधूरी है। यदि आप JavaScript (Node.js) में लिखते हैं, तो देर-सबेर यह सवाल उठेगा: प्रोडक्शन में एप्लिकेशन को विश्वसनीय रूप से कैसे चलाएं, इसकी स्केलिंग और फॉल्ट टॉलरेंस कैसे सुनिश्चित करें? इसका उत्तर है Kubernetes। यह सिर्फ एक फैशनेबल टूल नहीं है, बल्कि कंटेनरीकृत एप्लिकेशन के प्रबंधन के लिए डी-फैक्टो मानक है।
\nइस मार्गदर्शिका में, हम Kubernetes पर एक सरल Node.js एप्लिकेशन की तैनाती के पूरे चक्र को समझेंगे। आप सीखेंगे कि कोड को Docker इमेज में कैसे पैकेज करें, आवश्यक मेनिफेस्ट कैसे बनाएं और क्लस्टर में सब कुछ कैसे चलाएं। यह सामग्री उन डेवलपर्स के लिए है जो पहले से Node.js की मूल बातों से परिचित हैं और DevOps प्रथाओं में महारत हासिल करना चाहते हैं।
\n\n1. कंटेनरीकरण के लिए Node.js एप्लिकेशन तैयार करना
\nKubernetes पर एप्लिकेशन तैनात करने से पहले, इसे एक कंटेनर में पैकेज करना होगा। इसके लिए हम एक सरल Express एप्लिकेशन बनाएंगे। सुनिश्चित करें कि आपके पास Node.js और npm स्थापित हैं।
फ़ाइल app.js बनाएं:
const express = require('express');\nconst app = express();\nconst port = process.env.PORT || 3000;\n\napp.get('/', (req, res) => {\n res.json({ message: 'Hello from Node.js on Kubernetes!' });\n});\n\napp.get('/health', (req, res) => {\n res.status(200).send('OK');\n});\n\napp.listen(port, () => {\n console.log(`Server running on port ${port}`);\n});\n\n/health एंडपॉइंट जोड़ना महत्वपूर्ण है — Kubernetes इसका उपयोग कार्यक्षमता जांच (liveness probe) के लिए करेगा।
अब प्रोजेक्ट की रूट में Dockerfile बनाएं:
FROM node:18-alpine\n\nWORKDIR /usr/src/app\n\nCOPY package*.json ./\nRUN npm install --production\n\nCOPY . .\n\nEXPOSE 3000\n\nCMD ["node", "app.js"]\n\nइमेज बनाएं और इसे स्थानीय रूप से जांचें:
\ndocker build -t my-node-app:latest .\ndocker run -p 3000:3000 my-node-app:latest\n\nhttp://localhost:3000 खोलें — आपको JSON प्रतिक्रिया दिखनी चाहिए।
2. Node.js के लिए मुख्य Kubernetes मेनिफेस्ट
\nKubernetes घोषणात्मक कॉन्फ़िगरेशन (YAML) के साथ काम करता है। Node.js एप्लिकेशन की तैनाती के लिए हमें कम से कम दो मुख्य संसाधनों की आवश्यकता होगी: Deployment और Service।
\n\n2.1. Deployment
\nDeployment आपके एप्लिकेशन की रेप्लिका का प्रबंधन करता है। फ़ाइल deployment.yaml बनाएं:
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: node-app-deployment\n labels:\n app: node-app\nspec:\n replicas: 3\n selector:\n matchLabels:\n app: node-app\n template:\n metadata:\n labels:\n app: node-app\n spec:\n containers:\n - name: node-app\n image: my-node-app:latest\n ports:\n - containerPort: 3000\n env:\n - name: PORT\n value: "3000"\n livenessProbe:\n httpGet:\n path: /health\n port: 3000\n initialDelaySeconds: 5\n periodSeconds: 10\n readinessProbe:\n httpGet:\n path: /\n port: 3000\n initialDelaySeconds: 3\n periodSeconds: 5\n\nमहत्वपूर्ण बिंदु:
\n- \n
replicas: 3— Kubernetes फॉल्ट टॉलरेंस के लिए आपके एप्लिकेशन की 3 प्रतियां बनाएगा। \n livenessProbe— जांचता है कि एप्लिकेशन चालू है या नहीं। यदि कोई प्रतिक्रिया नहीं है, तो Kubernetes कंटेनर को पुनरारंभ करेगा। \n readinessProbe— जांचता है कि एप्लिकेशन ट्रैफ़िक प्राप्त करने के लिए तैयार है या नहीं। जब तक जांच पास नहीं हो जाती, पॉड को अनुरोध प्राप्त नहीं होते। \n
2.2. Service
\nService पॉड्स तक नेटवर्क पहुंच प्रदान करता है। service.yaml बनाएं:
apiVersion: v1\nkind: Service\nmetadata:\n name: node-app-service\nspec:\n selector:\n app: node-app\n ports:\n - protocol: TCP\n