تخطَّ إلى المحتوى

🏗️ شرح المايكروسيرفيس (Microservices)

نشر المايكروسيرفيس على Kubernetes

الدرس 20 من 25· ⏱ 2 دقائق قراءة

ما هو Kubernetes؟

منصة مفتوحة المصدر لإدارة وتشغيل الحاويات — توفر التوسع التلقائي، اكتشاف الخدمات، وإدارة الحالة.

المفاهيم الأساسية

Kubernetes Components:
  Pod:      أصغر وحدة  حاوية أو أكثر
  Service:  عنوان ثابت للتواصل مع الـ Pods
  Deployment: إدارة النسخ والتحديثات
  ConfigMap: إعدادات غير حساسة
  Secret:   إعدادات حساسة (passwords, keys)
  Ingress:  دخول خارجي للنظام

Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: user-service
  labels:
    app: user-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: user-service
  template:
    metadata:
      labels:
        app: user-service
    spec:
      containers:
        - name: user-service
          image: myregistry/user-service:1.2.0
          ports:
            - containerPort: 3001
          env:
            - name: DB_HOST
              value: "postgres-service"
            - name: DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: db-secret
                  key: password
          resources:
            requests:
              memory: "128Mi"
              cpu: "100m"
            limits:
              memory: "256Mi"
              cpu: "200m"
          livenessProbe:
            httpGet:
              path: /health
              port: 3001
            initialDelaySeconds: 10
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /ready
              port: 3001
            initialDelaySeconds: 5
            periodSeconds: 5

Service

apiVersion: v1
kind: Service
metadata:
  name: user-service
spec:
  selector:
    app: user-service
  ports:
    - port: 3001
      targetPort: 3001
  type: ClusterIP

ConfigMap و Secret

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  NODE_ENV: "production"
  LOG_LEVEL: "info"
  RABBITMQ_HOST: "rabbitmq-service"
---

apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  password: c3VwZXJzZWNyZXQ=  # base64
  username: YWRtaW4=

Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-ingress
  annotations:
    nginx.ingress.kubernetes.io/rate-limit: "10r/s"
spec:
  rules:
    - host: api.example.com
      http:
        paths:
          - path: /users
            pathType: Prefix
            backend:
              service:
                name: user-service
                port:
                  number: 3001
          - path: /orders
            pathType: Prefix
            backend:
              service:
                name: order-service
                port:
                  number: 3002

HPA (Horizontal Pod Autoscaler)

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: user-service-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: user-service
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70

Commands

# تطبيق الإعدادات
kubectl apply -f deployment.yaml

# عرض حالة الـ Pods
kubectl get pods

# مشاهدة سجلات Pod معين
kubectl logs -f deployment/user-service

# توسيع يدوي
kubectl scale deployment/user-service --replicas=5

# عرض الخدمات
kubectl get services

⚠️ ابدأ بالخدمات غير الحيوية أولاً — تعلم K8s تدريجياً

🎯 التالي: 20-capstone-design

شرح نشر المايكروسيرفيس على Kubernetes — المايكروسيرفيس (Microservices) بالعربي
نشر المايكروسيرفيس على Kubernetesالمايكروسيرفيس (Microservices) بالعربي · The Code Fix

هل كان هذا الدرس مفيدًا؟