परिचय: JavaScript को Kubernetes पर क्यों डिप्लॉय करें?
\nआधुनिक JavaScript (खासकर Node.js) वेब डेवलपमेंट में अब सिर्फ एक सर्वर पर ऐप चलाना काफी नहीं है। आपको एक ऐसी इन्फ्रास्ट्रक्चर चाहिए जो फॉल्ट-टॉलरेंट, स्केलेबल और आसानी से मैनेज की जा सके। Kubernetes (K8s) कंटेनर ऑर्केस्ट्रेशन का डी-फैक्टो स्टैंडर्ड है। अगर आप Node.js पर कोड लिखते हैं और चाहते हैं कि आपका ऐप पीक लोड को झेले, बिना डाउनटाइम के ऑटोमैटिकली रिकवर हो और आसानी से अपडेट हो — तो आपको Kubernetes चाहिए।
\nइस गाइड में हम एक साधारण Node.js ऐप को Kubernetes क्लस्टर पर डिप्लॉय करने की बेसिक प्रक्रिया समझेंगे। आप सीखेंगे कि Docker इमेज कैसे तैयार करें, ज़रूरी YAML मैनिफेस्ट (Deployment, Service, Ingress) कैसे लिखें और ऐप को कैसे रन करें। यह लेख उन डेवलपर्स के लिए है जो Node.js और Docker की बेसिक्स जानते हैं, लेकिन Kubernetes की दुनिया में अभी शुरुआत कर रहे हैं।
\n\n
1. Node.js ऐप और Docker इमेज तैयार करना
\nसबसे पहले हमें एक ऐसा ऐप चाहिए जिसे हम डिप्लॉय करेंगे। चलिए एक साधारण Express HTTP सर्वर बनाते हैं जो GET रिक्वेस्ट का जवाब देता है।
\n1.1. एक सरल सर्वर बनाना (app.js)
\nconst express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req, res) => {\n res.send('Hello from Node.js on Kubernetes!');\n});\n\napp.listen(PORT, () => {\n console.log(`Server running on port ${PORT}`);\n});\n\npackage.json फ़ाइल (डिपेंडेंसी):
{\n "name": "k8s-node-app",\n "version": "1.0.0",\n "main": "app.js",\n "scripts": {\n "start": "node app.js"\n },\n "dependencies": {\n "express": "^4.18.2"\n }\n}\n\n1.2. Node.js के लिए Dockerfile
\nKubernetes पर ऐप चलाने के लिए, इसे कंटेनर में पैक करना होगा। हम ऑफिशियल Node.js इमेज (वर्जन 18 LTS) का उपयोग करेंगे।
\n# ऑफिशियल Node.js इमेज का उपयोग करें\nFROM node:18-alpine\n\n# कंटेनर के अंदर वर्किंग डायरेक्टरी सेट करें\nWORKDIR /usr/src/app\n\n# package.json और package-lock.json कॉपी करें\nCOPY package*.json ./\n\n# डिपेंडेंसी इंस्टॉल करें\nRUN npm install --production\n\n# ऐप का सोर्स कोड कॉपी करें\nCOPY . .\n\n# वह पोर्ट बताएं जिसे ऐप सुनेगा\nEXPOSE 3000\n\n# ऐप चलाने का कमांड\nCMD ["node", "app.js"]\n\nइमेज बनाना और रजिस्ट्री में भेजना:
\n# इमेज बनाएं\ndocker build -t my-registry/node-app:v1 .\n\n# Docker Hub या अपनी प्राइवेट रजिस्ट्री में पुश करें\ndocker push my-registry/node-app:v1\n\nmy-registry को अपनी रजिस्ट्री के नाम से बदलें (जैसे, docker.io/username/node-app)।
\n
2. Kubernetes के लिए YAML मैनिफेस्ट बनाना
\nKubernetes डिक्लेरेटिव अप्रोच का उपयोग करता है: हम YAML फ़ाइलों में सिस्टम की वांछित स्थिति बताते हैं, और K8s खुद ही सब कुछ उस स्थिति में ले आता है। हमें तीन मुख्य रिसोर्स चाहिए: Deployment, Service और Ingress।
\n2.1. Deployment (deployment.yaml)
\nDeployment पॉड्स (कंटेनर) को चलाने और अपडेट करने के लिए जिम्मेदार है। यह सुनिश्चित करता है कि हमेशा सही संख्या में रेप्लिका चल रही हों।
\napiVersion: 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-registry/node-app:v1\n ports:\n - containerPort: 3000\n env:\n - name: PORT\n value: "3000"\n resources:\n requests:\n memory: "64Mi"\n cpu: "250m"\n limits:\n memory: "128Mi"\n cpu: "500m"\n\nमुख्य बिंदु:
\n- \n
replicas: 3— तीन रेप्लिका चलाएं (हाई अवेलेबिलिटी के लिए)