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

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

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

ابدأ الدورة

مقدمة: لماذا نشر JavaScript على Kubernetes؟

\n\n

تطوير الويب الحديث لا يمكن تصوره بدون الحاويات. إذا كنت تكتب بلغة JavaScript (Node.js) وتريد أن يعمل تطبيقك بثبات، ويتوسع تلقائيًا، ويكون مقاومًا للأعطال — فإن Kubernetes (K8s) سيكون أفضل صديق لك.

\n\n

Kubernetes هي منصة لتنسيق الحاويات. تدير نشر تطبيقاتك وتوسيعها وتشغيلها. في هذا الدليل، سنشرح النشر الأساسي لتطبيق Node.js بسيط على Kubernetes. ستتعلم كيفية حزم الكود في صورة Docker، وإنشاء Pod، وService، وDeployment.

\n\n

المقالة موجهة للمبتدئين. يُفترض أنك قمت بالفعل بتثبيت Docker وMinikube (أو لديك إمكانية الوصول إلى مجموعة K8s).

\n\n

الخطوة 1: إعداد تطبيق Node.js وصورة Docker

\n\n

أولاً، سننشئ تطبيق ويب بسيطًا باستخدام Express. سوف يستجيب لطلبات HTTP.

\n\n

1.1. كود التطبيق (app.js)

\n\n

أنشئ ملف app.js:

\n\n
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\n

1.2. ملف package.json

\n\n

أنشئ package.json:

\n\n
{\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\n

1.3. ملف Dockerfile

\n\n

الآن سننشئ Dockerfile لبناء الصورة:

\n\n
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\n

1.4. بناء الصورة وتحميلها

\n\n

نفذ الأوامر التالية:

\n\n
docker build -t my-node-app:v1 .\n
\n\n

إذا كنت تستخدم Minikube، قم ببناء الصورة داخل بيئته:

\n\n
minikube image build -t my-node-app:v1 .\n
\n\n

أو قم بتحميل الصورة إلى Docker Hub/أي سجل وحددها في المانيفست.

\n\n

الخطوة 2: كائنات Kubernetes الأساسية (Pod، Deployment، Service)

\n\n

يعمل Kubernetes مع الكائنات. للنشر، سنحتاج إلى ثلاثة كائنات أساسية:

\n\n
    \n
  • Pod — الوحدة الأصغر، حاوية واحدة أو أكثر.
  • \n
  • Deployment — يدير Pods، ويوفر التوسع والتحديثات.
  • \n
  • Service — نقطة وصول ثابتة إلى Pods (عادةً عبر ClusterIP أو NodePort).
  • \n
\n\n

2.1. إنشاء Deployment

\n\n

أنشئ ملف deployment.yaml:

\n\n
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
\n\n

2.2. إنشاء Service

\n\n

أنشئ ملف service.yaml للوصول إلى التطبيق:

\n\n
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 بتوجيه حركة المرور من المنفذ

المدونات

توصيات الكتب