परिचय: TypeScript और Kubernetes क्यों हैं एकदम सही जोड़ी
\nआधुनिक वेब डेवलपमेंट में सिर्फ अच्छा कोड ही नहीं, बल्कि मजबूत इंफ्रास्ट्रक्चर भी जरूरी है। TypeScript, JavaScript पर एक स्टैटिकली टाइप की गई परत है, जो कंपाइल टाइम पर एरर्स को कम करके स्केलेबल सर्वर साइड एप्लिकेशन बनाने में मदद करता है। Kubernetes (K8s) कंटेनर ऑर्केस्ट्रेशन का डी-फैक्टो स्टैंडर्ड है, जो ऑटोमैटिक डिप्लॉयमेंट, स्केलिंग और एप्लिकेशन मैनेजमेंट प्रदान करता है।
\nइस गाइड में हम व्यावहारिक रूप से देखेंगे कि कैसे एक साधारण TypeScript एप्लिकेशन (Express API) बनाकर, उसे Docker इमेज में पैक करके Kubernetes क्लस्टर पर डिप्लॉय किया जाता है। आपको तैयार कमांड्स, कॉन्फ़िगरेशन फ़ाइलें और हर कदम का स्पष्टीकरण मिलेगा। यह सामग्री उन डेवलपर्स के लिए है जो TypeScript की बुनियादी बातें जानते हैं और DevOps प्रक्रियाओं को सीखना चाहते हैं।
\nइस लेख के अंत तक, आप Kubernetes का उपयोग करके TypeScript प्रोजेक्ट्स को प्रोडक्शन एनवायरनमेंट में स्वयं डिप्लॉय कर सकेंगे।
\n\n1. TypeScript एप्लिकेशन को कंटेनराइजेशन के लिए तैयार करना
\n1.1. TypeScript पर बेसिक Express सर्वर बनाना
\nडेमो के लिए हम TypeScript पर एक मिनिमल API बनाएंगे। सुनिश्चित करें कि आपके पास Node.js और npm इंस्टॉल हैं।
\nmkdir ts-k8s-app\ncd ts-k8s-app\nnpm init -y\nnpm install express\nnpm install -D typescript @types/node @types/express ts-node nodemon\ntsconfig.json फ़ाइल बनाएं:
{\n "compilerOptions": {\n "target": "ES2020",\n "module": "commonjs",\n "outDir": "./dist",\n "rootDir": "./src",\n "strict": true,\n "esModuleInterop": true\n },\n "include": ["src/**/*"]\n}\nअब सर्वर कोड लिखते हैं। src/index.ts फ़ाइल बनाएं:
import express, { Request, Response } from 'express';\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/health', (_req: Request, res: Response) => {\n res.json({ status: 'ok', timestamp: new Date().toISOString() });\n});\n\napp.get('/', (_req: Request, res: Response) => {\n res.send('Hello from TypeScript on Kubernetes!');\n});\n\napp.listen(PORT, () => {\n console.log(`Server running on port ${PORT}`);\n});\npackage.json में स्क्रिप्ट्स जोड़ें:
"scripts": {\n "build": "tsc",\n "start": "node dist/index.js",\n "dev": "nodemon src/index.ts"\n}\nबिल्ड चेक करें: npm run build && npm start। सर्वर पोर्ट 3000 पर चालू हो जाना चाहिए।
1.2. प्रोडक्शन के लिए ऑप्टिमाइज़ेशन
\nप्रोडक्शन के लिए इमेज का साइज़ कम करना ज़रूरी है। .dockerignore फ़ाइल बनाएं:
node_modules\ndist\n.git\n*.md\n.env\nसुनिश्चित करें कि सभी रनटाइम डिपेंडेंसी dependencies (न कि devDependencies) में हों।
2. TypeScript एप्लिकेशन के लिए Docker इमेज बनाना
\n2.1. Dockerfile लिखना
\nफाइनल इमेज का साइज़ कम करने के लिए मल्टी-स्टेज बिल्ड का उपयोग करें।
\n# Stage 1: Build\nFROM node:18-alpine AS builder\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --only=production\nCOPY . .\nRUN npm run build\n\n# Stage 2: Production\nFROM node:18-alpine\nWORKDIR /app\nCOPY --from=builder /app/dist ./dist\nCOPY --from=builder /app/node_modules ./node_modules\nCOPY --from=builder /app/package.json ./\nEXPOSE 3000\nCMD ["node", "dist/index.js"]\nमुख्य बिंदु:
\n- \n
npm ci— तेज़ और डिटरमिनिस्टिक डिपेंडेंसी इंस्टॉलेशन। \n - दूसरी लेयर में सिर्फ कंपाइल किया हुआ JS और ज़रूरी मॉड्यूल होते हैं। \n
- बेस इमेज
node:18-alpineका वज़न सिर्फ ~120 MB है। \n
2.2. इमेज बनाना और जाँचना
\ndocker build -t ts-k8s-app:latest .\ndocker run -p 3000:3000 ts-k8s-app:latest\nhttp://localhost:3000/health खोलें — आपको JSON रिस्पॉन्स दिखना चाहिए। अगर