Kubernetes पर TypeScript डिप्लॉय: मूल गाइड
आधुनिक वेब डेवलपमेंट में अक्सर न केवल गुणवत्तापूर्ण कोड लिखना शामिल है, बल्कि एप्लिकेशन का उचित तैनाती भी शामिल है। TypeScript, अपनी सख्त टाइपिंग और शक्तिशाली टूल्स के कारण, Node.js पर बैकएंड सेवाओं के लिए एक लोकप्रिय विकल्प बन गया है। हालांकि, उचित डिप्लॉय के बिना, आदर्श कोड भी स्थानीय मशीन पर ही रह जाएगा। Kubernetes - कंटेनर ऑर्केस्ट्रेशन का मानक - आपको एप्लिकेशन की तैनाती, स्केलिंग और प्रबंधन को स्वचालित करने की अनुमति देता है। इस गाइड में, हम Kubernetes पर TypeScript एप्लिकेशन डिप्लॉय करने की चरण-दर-चरण प्रक्रिया को समझेंगे।
1. TypeScript एप्लिकेशन को कंटेनरीकरण के लिए तैयार करना
कोड को क्लस्टर में भेजने से पहले, यह सुनिश्चित करना आवश्यक है कि एप्लिकेशन कंटेनर में चलने के लिए तैयार है। आइए Express.js और TypeScript के साथ एक विशिष्ट प्रोजेक्ट पर विचार करें।
प्रोजेक्ट संरचना
my-ts-app/├── src/│ ├── index.ts│ └── routes/├── dist/├── package.json├── tsconfig.json└── Dockerfiletsconfig.json सेटअप
सुनिश्चित करें कि TypeScript कंपाइलर प्रोजेक्ट को dist फ़ोल्डर में बना रहा है:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true }, "include": ["src/**/*"]}सरल सर्वर (src/index.ts)
import express, { Request, Response } from 'express';
const app = express();const PORT = process.env.PORT || 3000;
app.get('/health', (_req: Request, res: Response) => { res.json({ status: 'ok', timestamp: new Date().toISOString() });});
app.listen(PORT, () => { console.log(`Server running on port ${PORT}`);});package.json में स्क्रिप्ट जोड़ें:
"scripts": { "build": "tsc", "start": "node dist/index.js", "dev": "ts-node src/index.ts"}2. TypeScript के लिए Docker इमेज बनाना
कंटेनरीकरण Kubernetes में डिप्लॉय से पहले एक महत्वपूर्ण कदम है। इमेज के आकार को कम करने के लिए मल्टी-स्टेज बिल्ड का उपयोग करें।
Dockerfile
# Stage 1: BuildFROM node:18-alpine AS builderWORKDIR /appCOPY package*.json ./RUN npm ciCOPY tsconfig.json ./COPY src/ ./src/RUN npm run build
# Stage 2: ProductionFROM node:18-alpine AS productionWORKDIR /appCOPY --from=builder /app/dist ./distCOPY --from=builder /app/package*.json ./RUN npm ci --only=productionEXPOSE 3000CMD ["node", "dist/index.js"]इमेज बनाएं और इसे रजिस्ट्री (जैसे, Docker Hub) पर भेजें:
docker build -t yourusername/my-ts-app:v1 .docker push yourusername/my-ts-app:v13. Kubernetes मेनिफेस्ट लिखना
Kubernetes में तैनाती के लिए कम से कम दो संसाधनों की आवश्यकता होती है: Deployment (पॉड प्रबंधन) और Service (एप्लिकेशन तक पहुंच)।
deployment.yaml
apiVersion: apps/v1kind: Deploymentmetadata: name: my-ts-app labels: app: my-ts-appspec: replicas: 2 selector: matchLabels: app: my-ts-app template: metadata: labels: app: my-ts-app spec: containers: - name: app image: yourusername/my-ts-app:v1 ports: - containerPort: 3000 env: - name: PORT value: "3000" livenessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 5 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 3 periodSeconds: 5service.yaml
apiVersion: v1kind: Servicemetadata: name: my-ts-app-servicespec: selector: app: my-ts-app ports: - protocol: T