परिचय: Kubernetes पर JavaScript क्यों डिप्लॉय करें?
\n\nआधुनिक वेब डेवलपमेंट कंटेनरीकरण के बिना अधूरा है। यदि आप JavaScript (Node.js) में लिखते हैं और चाहते हैं कि आपका एप्लिकेशन स्थिर रूप से काम करे, स्वचालित रूप से स्केल हो और दोष-सहिष्णु हो — तो Kubernetes (K8s) आपका सबसे अच्छा दोस्त बन जाएगा।
\n\nKubernetes एक कंटेनर ऑर्केस्ट्रेशन प्लेटफॉर्म है। यह आपके एप्लिकेशन के डिप्लॉयमेंट, स्केलिंग और संचालन का प्रबंधन करता है। इस गाइड में, हम Kubernetes पर एक सरल Node.js एप्लिकेशन के बुनियादी डिप्लॉयमेंट को समझेंगे। आप सीखेंगे कि कोड को Docker इमेज में कैसे पैकेज करें, Pod, Service और Deployment कैसे बनाएं।
\n\nयह लेख शुरुआती लोगों के लिए है। यह माना जाता है कि आपके पास पहले से Docker और Minikube स्थापित हैं (या K8s क्लस्टर तक पहुंच है)।
\n\nचरण 1: Node.js एप्लिकेशन और Docker इमेज तैयार करना
\n\nशुरू करने के लिए, Express पर एक सरल वेब एप्लिकेशन बनाते हैं। यह HTTP अनुरोधों का जवाब देगा।
\n\n1.1. एप्लिकेशन कोड (app.js)
\n\napp.js फ़ाइल बनाएं:
const express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req, res) => {\n res.send('Kubernetes से नमस्ते!');\n});\n\napp.listen(PORT, () => {\n console.log(`सर्वर पोर्ट ${PORT} पर शुरू हुआ`);\n});\n\n\n1.2. package.json फ़ाइल
\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\n\n1.3. Dockerfile
\n\nअब इमेज बिल्ड करने के लिए Dockerfile बनाएं:
FROM node:18-alpine\n\nWORKDIR /usr/src/app\n\nCOPY package*.json ./\nRUN npm install\n\nCOPY . .\n\nEXPOSE 3000\n\nCMD ["node", "app.js"]\n\n\n1.4. इमेज बिल्ड और अपलोड करना
\n\nकमांड चलाएं:
\n\ndocker build -t my-node-app:v1 .\n\n\nयदि आप Minikube का उपयोग कर रहे हैं, तो इसके वातावरण में इमेज बनाएं:
\n\nminikube image build -t my-node-app:v1 .\n\n\nया इमेज को Docker Hub/किसी भी रजिस्ट्री में अपलोड करें और मेनिफेस्ट में इसका उल्लेख करें।
\n\nचरण 2: Kubernetes की मुख्य वस्तुएं (Pod, Deployment, Service)
\n\nKubernetes वस्तुओं के साथ काम करता है। डिप्लॉयमेंट के लिए हमें तीन मुख्य वस्तुओं की आवश्यकता होगी:
\n\n- \n
- Pod — सबसे छोटी इकाई, एक या अधिक कंटेनर। \n
- Deployment — Pods का प्रबंधन करता है, स्केलिंग और अपडेट सुनिश्चित करता है। \n
- Service — Pods तक एक स्थिर पहुंच बिंदु (आमतौर पर ClusterIP या NodePort के माध्यम से)। \n
2.1. Deployment बनाना
\n\ndeployment.yaml फ़ाइल बनाएं:
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: node-app-deployment\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:v1\n ports:\n - containerPort: 3000\n env:\n - name: PORT\n value: "3000"\n\n\nव्याख्या:
\n- \n
replicas: 3— दोष-सहिष्णुता के लिए एप्लिकेशन की 3 प्रतियां चलाएंगे। \n selectorऔरlabels— Deployment को Pods से जोड़ते हैं। \n image— आपकी Docker इमेज का नाम। \n
2.2. Service बनाना
\n\nएप्लिकेशन तक पहुंच के लिए 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 port: 80\n targetPort: 3000\n type: NodePort\n\n\nयहां क्या हो रहा है:
\n- \n
- Service पोर्ट 80 से ट्रैफिक को Pods के पोर्ट 3000 पर रीडायरेक्ट करता है। \n
type: NodePort— क्लस्टर के बाहर से एप्लिकेशन तक पहुंच प्रदान करता है। \n