لقد حولت الحاويات كيفية نشر وتوسيع وإدارة التطبيقات من خلال تعبئة الكود والاعتماديات في وحدة موحدة قياسية يمكن أن تعمل بشكل متسق عبر أي بيئة. عند استخدامها في بيئات السحابة، تقدم الحاويات:
- قابلية النقل عبر التطوير، الاختبار، والإنتاج.
- قابلية التوسع للتكيف بسرعة مع حركة المرور والطلب.
- الكفاءة مع تقليل التكاليف مقارنة بالآلات الافتراضية التقليدية.
في هذا الدليل، سنستعرض إعدادًا كاملًا لتطبيق مدمج في حاوية مستضافة في السحابة، يغطي:
- أساسيات الحاويات ولماذا هي مثالية للسحابة.
- إعداد تطبيق مدمج باستخدام Docker.
- نشر الحاوية إلى مزود سحابة (باستخدام منصة جوجل السحابية كمثال).
- توسيع وإدارة الحاوية الخاصة بك في السحابة.
أساسيات الحاويات: كيف تتناسب الحاويات مع سير العمل في السحابة
تحتوي الحاويات على جميع المكتبات والاعتماديات اللازمة لتشغيل تطبيق. على عكس الآلات الافتراضية التقليدية، التي تحتوي كل منها على نظام تشغيل، تشارك الحاويات نظام التشغيل المضيف، مما يجعلها خفيفة الوزن وفعالة.
لماذا الحاويات للسحابة؟
- أوقات بدء التشغيل السريعة تعني توسيعًا أسرع للتعامل مع حركة المرور المتغيرة.
- الاتساق عبر البيئات يضمن أن يكون سلوك الشفرة متماثلًا من أجهزة المطورين إلى الإنتاج.
- كفاءة الموارد تمكّن النشر عالي الكثافة على نفس البنية التحتية.
المكونات الأساسية لتحجيم الحاويات السحابية
- محرك الحاويات: يدير ويشغل الحاويات (على سبيل المثال، دوكر، containerd).
- التنظيم: يضمن موثوقية التطبيق وتوسيعه وتوازن الحمل (على سبيل المثال، كوبرنيتيس، ECS).
- السجل: يخزن صور الحاويات للوصول إليها عبر البيئات (على سبيل المثال، دوكر هاب، GCR).
إعداد تطبيق يعتمد على دوكر
سنبدأ بتحجيم تطبيق Node.js بسيط.
الخطوة 1: إنشاء التطبيق
1. في مجلد المشروع، قم بتهيئة مشروع Node.js:
mkdir cloud-container-app && cd cloud-container-app
npm init -y
2. إنشاء ملف خادم أساسي، app.js
:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Cloud Container!');
});
app.listen(3000, () => {
console.log('App running on port 3000');
});
3. إضافة إكسبريس إلى المشروع:
npm install express
الخطوة 2: إنشاء ملف Dockerfile
يُحدد هذا الملف كيفية تعبئة التطبيق في حاوية Docker.
# Use the Node.js image as a base
FROM node:14
# Set working directory
WORKDIR /app
# Copy files and install dependencies
COPY . .
RUN npm install
# Expose the app’s port
EXPOSE 3000
# Start the application
CMD ["node", "app.js"]
الخطوة 3: بناء واختبار صورة Docker محليًا
1. قم ببناء صورة Docker:
docker build -t cloud-container-app .
2. تشغيل الحاوية محليًا:
docker run -p 3000:3000 cloud-container-app
3. قم بزيارة `http://localhost:3000` في متصفحك. يجب أن ترى “مرحبًا، حاوية السحابة!” معروضة.
نشر الحاوية على منصة جوجل السحابية (GCP)
في هذا القسم، سنقوم بدفع صورة الحاوية إلى سجل حاويات جوجل (GCR) ونشرها على محرك كوبرنيتس من جوجل (GKE).
الخطوة 1: إعداد مشروع GCP
1. أنشئ مشروع GCP. انتقل إلى [وحدة تحكم جوجل السحابية] (https://console.cloud.google.com) وأنشئ مشروعًا جديدًا.
2. قم بتمكين واجهات برمجة التطبيقات لمحرك كوبرنيتس وسجل الحاويات لمشروعك.
الخطوة 2: دفع الصورة إلى سجل حاويات جوجل
1. قم بتسمية صورة دوكر لجوجل كلاود:
docker tag cloud-container-app gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
2. ادفع الصورة إلى GCR:
docker push gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
الخطوة 3: إنشاء مجموعة كوبرنيتس
1. ابدأ مجموعة GKE:
gcloud container clusters create cloud-container-cluster --num-nodes=2
2. قم بتكوين kubectl
للاتصال بمجموعة الجديدة الخاصة بك:
gcloud container clusters get-credentials cloud-container-cluster
الخطوة 4: نشر التطبيق المعبأ في حاويات على GKE
1. أنشئ ملف k8s-deployment.yaml
لتعريف النشر والخدمة:
apiVersion apps/v1
kind Deployment
metadata
name cloud-container-app
spec
replicas2
selector
matchLabels
app cloud-container-app
template
metadata
labels
app cloud-container-app
spec
containers
name cloud-container-app
image gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
ports
containerPort3000
---
apiVersion v1
kind Service
metadata
name cloud-container-service
spec
type LoadBalancer
selector
app cloud-container-app
ports
protocol TCP
port80
targetPort3000
2. انشر التطبيق على GKE:
kubectl apply -f k8s-deployment.yaml
3. احصل على عنوان IP الخارجي للوصول إلى التطبيق:
kubectl get services
توسيع وإدارة الحاويات في GKE
الخطوة 1: توسيع النشر
لتعديل عدد النسخ (على سبيل المثال، للتعامل مع حركة مرور أعلى)، استخدم الأمر التالي:
kubectl scale deployment cloud-container-app --replicas=5
سيقوم GKE بتوسيع التطبيق تلقائيًا من خلال إضافة نسخ وتوزيع الحمل.
الخطوة 2: مراقبة وإدارة السجلات
1. استخدم الأمر أدناه لعرض السجلات الخاصة بـ pod معين في Kubernetes:
kubectl logs <POD_NAME>
2. قم بتمكين لوحة معلومات GKE لمراقبة حالة pod واستخدام الموارد وإدارة النشر بصريًا.
الخاتمة: الاستفادة من الحاويات لنشر سحابي قابل للتوسع
غطت هذه الدروس:
- تحويل تطبيق Node.js إلى حاوية باستخدام Docker.
- النشر إلى Google Kubernetes Engine (GKE) لاستضافة قابلة للتوسع ومدارة.
- إدارة وتوسيع الحاويات بفعالية في السحابة.
مع الحاويات في السحابة، تكتسب تطبيقاتك قابلية التوسع، والنقل، والكفاءة — مما يضمن أنها جاهزة للتعامل مع الطلب، والتكيف بسرعة، والبقاء متسقة عبر البيئات.
Source:
https://dzone.com/articles/a-step-by-step-guide-to-deploying-containers-in-the-cloud