نشر TypeScript على Kubernetes: دليل أساسي للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

نشر TypeScript على Kubernetes: دليل أساسي للمبتدئين

\n\n

تطوير الويب الحديث لا يمكن تصوره بدون الحاويات والتنسيق. إذا كنت تكتب بلغة TypeScript وتريد أن يعمل تطبيقك بثبات، ويتوسع تلقائيًا، ويكون مقاومًا للأعطال — فإن Kubernetes (K8s) سيكون أفضل صديق لك. في هذا الدليل، سنشرح خطوة بخطوة كيفية حزم تطبيق TypeScript في Docker ونشره في مجموعة Kubernetes. المادة موجهة للمبتدئين: لا سحر، فقط أمثلة وشروحات واضحة.

\n\n

1. تحضير تطبيق TypeScript

\n\n

قبل التفكير في Kubernetes، يجب التأكد من أن تطبيقك جاهز للعمل في حاوية. سننشئ خادم HTTP بسيط باستخدام Express مع TypeScript.

\n\n

1.1. تهيئة المشروع

\n

أنشئ مجلد المشروع وقم بالتهيئة:

\n
mkdir my-ts-app && cd my-ts-app\nnpm init -y\nnpm install express\nnpm install -D typescript @types/node @types/express ts-node nodemon
\n\n

1.2. إعداد TypeScript

\n

أنشئ ملف tsconfig.json:

\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules", "dist"]\n}
\n\n

1.3. كود التطبيق

\n

أنشئ مجلد src وملف index.ts:

\n
import express, { Request, Response } from 'express';\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req: Request, res: Response) => {\n  res.json({ message: 'Hello from TypeScript on Kubernetes!' });\n});\n\napp.listen(PORT, () => {\n  console.log(`Server running on port ${PORT}`);\n});
\n\n

1.4. البناء والتشغيل

\n

أضف البرامج النصية في package.json:

\n
"scripts": {\n  "build": "tsc",\n  "start": "node dist/index.js",\n  "dev": "ts-node src/index.ts"\n}
\n

تحقق من التشغيل المحلي: npm run dev وافتح http://localhost:3000.

\n\n

2. الحاويات باستخدام Docker

\n\n

يعمل Kubernetes مع الحاويات. نحتاج إلى إنشاء صورة Docker لتطبيق TypeScript الخاص بنا.

\n\n

2.1. ملف Dockerfile

\n

أنشئ ملف Dockerfile في جذر المشروع:

\n
FROM node:18-alpine AS builder\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build\n\nFROM node:18-alpine AS production\nWORKDIR /app\nCOPY --from=builder /app/dist ./dist\nCOPY --from=builder /app/package*.json ./\nRUN npm ci --only=production\nEXPOSE 3000\nCMD ["node", "dist/index.js"]
\n

نستخدم بناء متعدد المراحل: أولاً نترجم TypeScript، ثم ننشئ صورة نهائية خفيفة الوزن.

\n\n

2.2. بناء الصورة

\n
docker build -t my-ts-app:latest .
\n

تحقق محليًا:

\n
docker run -p 3000:3000 my-ts-app:latest
\n\n

2.3. ملف .dockerignore

\n

لتجنب نسخ الملفات غير الضرورية، أنشئ .dockerignore:

\n
node_modules\ndist\n.git\n*.md
\n\n

3. النشر في Kubernetes

\n\n

الآن بعد أن أصبح لدينا صورة Docker، يمكننا الانتقال إلى Kubernetes. للاختبار المحلي، أوصي باستخدام Minikube أو Kind.

\n\n

3.1. تشغيل Minikube

\n
minikube start --driver=docker\nminikube status
\n\n

3.2. تحميل الصورة إلى Minikube

\n

لكي يتمكن Kubernetes من العثور على صورتنا، سنقوم بتحميلها إلى بيئة Minikube:

\n
minikube image load my-ts-app:latest
\n\n

3.3. إنشاء Deployment

\n

أنشئ ملف deployment.yaml:

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-ts-app-deployment\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: my-ts                

المدونات

توصيات الكتب