WordPress هو أحد أشهر أنظمة إدارة المحتوى المستخدمة لنشر المدونات والمواقع الإلكترونية على الإنترنت. وهو متاح أيضًا كـ Docker صورة على DockerHub سجل. يمكنك استخدام صورة Docker هذه لبناء منصة مواقع إلكترونية موثوقة وقابلة للتوسع على Kubernetes عنقود. سيساعدك نشر WordPress على Kubernetes في تنفيذ خط أنابيب CI/CD وتقليل الوقت المستغرق لإصدار تحديثات جديدة. يمكنك أيضًا تمكين التوسع الأفقي لموقع WordPress للتعامل مع طفرات حركة المرور على الموقع.
سيوضح لك هذا الدليل كيفية نشر WordPress و MySQL مع Persistent Volume على عنقود Kubernetes.
المتطلبات الأساسية
- فهم أساسي لـ Kubernetes (k8s) وكائناته. ارجع إلى هذا الدليل للحصول على نظرة عامة مفصلة على نظام Kubernetes البيئي.
- عنقود Kubernetes يعمل وجاهز. اتبع هذا البرنامج التعليمي لـ تثبيت عنقود Kubernetes على Ubuntu 20.04.
التحقق من عنقود Kubernetes
قبل البدء، يوصى بالتحقق من حالة عنقود Kubernetes. يمكنك استخدام الأمر kubectl للتحقق من Kubernetes.
|
1 |
kubectl get nodes |
إذا كان كل شيء على ما يرام، يجب أن تحصل على المخرجات التالية.

إنشاء Secret لـ MySQL
الـ Secret هو كائن يسمح لك بتخزين البيانات الحساسة مثل كلمة المرور أو المفتاح. في هذا المنشور، سنستخدم Secret لتخزين كلمة مرور MySQL.
أولاً، قم بإنشاء كلمة مرور مشفرة بـ base64 باستخدام الأمر التالي.
|
1 |
echo -n 'your_secure_password' | base64 |
ستحصل على كلمة المرور السرية الخاصة بك في المخرجات التالية.
|
1 |
eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
بعد ذلك، قم بإنشاء ملف secret.yaml لـ MySQL و WordPress.
|
1 |
nano secret.yaml |
أضف التكوين التالي.
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
احفظ الملف وأغلقه. ثم قم بتطبيق التكوين أعلاه على عنقود Kubernetes باستخدام الأمر التالي.
|
1 |
kubectl apply -f secret.yaml |
ستحصل على المخرجات التالية.
|
1 |
secret/mysql-pass created |
إنشاء PersistentVolume لـ MySQL و WordPress
ستحتاج أيضًا إلى إنشاء PersistentVolume لتخزين بيانات MySQL و WordPress.
دعنا ننشئ ملف pvc-mysql-wp.yaml .
|
1 |
nano pvc-mysql-wp.yaml |
أضف التكوينات التالية.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 40Gi |
احفظ الملف وأغلقه عند الانتهاء.
بعد ذلك، قم بإنشاء PersistentVolumes لكل من MySQL و WordPress على عنقود Kubernetes باستخدام الأمر التالي.
|
1 |
kubectl apply -f pvc-mysql-wp.yaml |
يجب أن ترى كلا الـ PersistentVolumes في المخرجات التالية.
|
1 2 |
persistentvolumeclaim/mysql-pv-claim created persistentvolumeclaim/wp-pv-claim created |
يمكنك الآن التحقق من كلا الـ PersistentVolumes باستخدام الأمر التالي.
|
1 |
kubectl get pv |
يجب أن ترى المخرجات التالية.
|
1 2 3 |
الاسم السعة الوصول الأوضاع الاسترداد السياسة الحالة المطالبة فئة التخزين السبب العمر pvc-873a458352594103 40Gi RWO حذف مرتبط default/wp-pv-مطالبة الخاص بك-كتلة-تخزين 3s pvc-de7d7de5e53a40e8 40Gi RWO حذف مرتبط default/mysql-pv-مطالبة الخاص بك-كتلة-تخزين 3s |
إنشاء نشر MySQL
بعد ذلك، قم بإنشاء ملف تكوين نشر MySQL لتنزيل صورة Docker لـ MySQL، وإنشاء حاوية وتركيب PersistentVolume في /var/lib/mysql.
|
1 |
nano mysql-deployment.yaml |
أضف التكوين التالي.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-mysql labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: mysql strategy: type: Recreate template: metadata: labels: app: wordpress tier: mysql spec: containers: - image: mysql:5.6 name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim |
احفظ الملف وأغلقه عند الانتهاء. ثم قم بنشر التكوين أعلاه في مجموعة Kubernetes.
|
1 |
kubectl apply -f mysql-deployment.yaml |
يجب أن تشاهد المخرجات التالية.

يمكنك التحقق من نشر MySQL باستخدام الأمر التالي.
|
1 |
kubectl get deployments |
يجب أن تشاهد حالة نشر MySQL في المخرجات التالية.

إنشاء نشر WordPress
الآن، قم بإنشاء ملف تكوين نشر WordPress لتنزيل صورة WordPress، وإنشاء حاوية، وتركيب PersistentVolume في /var/www/html لملفات بيانات موقع الويب. سيقوم هذا الملف أيضًا بإنشاء WORDPRESS_DB_HOST و WORDPRESS_DB_PASSWORD متغيرات البيئة للوصول إلى قاعدة البيانات.
|
1 |
nano wordpress-deployment.yaml |
أضف التكوين التالي.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer --- apiVersion: apps/v1 # للإصدارات السابقة لـ 1.9.0 استخدم apps/v1beta2 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress tier: frontend spec: containers: - image: wordpress:4.8-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-pv-claim |
احفظ الملف بعد الانتهاء. ثم قم بتطبيق التكوين أعلاه على عنقود Kubernetes باستخدام الأمر التالي.
|
1 |
kubectl apply -f wordpress-deployment.yaml |
يجب أن تظهر لك رسالة نجاح النشر في المخرجات التالية.
|
1 2 |
service/wordpress created deployment.apps/wordpress created |
للتحقق من نشر WordPress، قم بتشغيل الأمر التالي.
|
1 |
kubectl get deployments |
يجب أن تظهر لك حالة نشر WordPress في المخرجات التالية.

الوصول إلى واجهة مستخدم ويب WordPress
للوصول إلى لوحة تحكم WordPress، ستحتاج إلى عنوان IP الخارجي ورقم المنفذ الخاص بـ LoadBalancer. يمكنك استرداد هذه المعلومات باستخدام الأمر التالي.
|
1 |
kubectl get svc |
ستحصل على عنوان IP والمنفذ الخاص بـ LoadBalancer في المخرجات التالية.
|
1 2 3 4 |
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 29m wordpress LoadBalancer 10.100.80.70 78.141.194.181 80:31624/TCP 3m6s wordpress-mysql ClusterIP None <none> 3306/TCP 4m14s |
للحصول على معلومات مفصلة حول pods الخاصة بـ WordPress، قم بتشغيل الأمر التالي.
|
1 |
kubectl describe svc wordpress |
يجب أن تحصل على معلومات مفصلة عن WordPress في المخرجات التالية.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Name: wordpress Namespace: default Labels: app=wordpress Annotations: <none> Selector: app=wordpress,tier=frontend Type: LoadBalancer IP Family Policy: SingleStack IP Families: IPv4 IP: 10.100.80.70 IPs: 10.100.80.70 LoadBalancer Ingress: 78.141.194.181 Port: <unset> 80/TCP TargetPort: 80/TCP NodePort: <unset> 31624/TCP Endpoints: 10.244.23.66:80 Session Affinity: None External Traffic Policy: Cluster |
الآن، افتح متصفح الويب الخاص بك وانتقل إلى صفحة تثبيت WordPress باستخدام عنوان URL http://78.141.194.181:3162. يجب أن تظهر لك صفحة تثبيت WordPress على الشاشة التالية.

اختر لغتك وأكمل الخطوات المطلوبة لإنهاء عملية التثبيت.
الخاتمة
في هذا المقال، شرحنا كيفية نشر MySQL و WordPress مع وحدة التخزين الدائمة على عنقود Kubernetes. يمكنك أيضًا توسيع نطاق نشر WordPress بناءً على حركة المرور على موقعك الإلكتروني. يمكنك الآن استخدام النشر أعلاه اعتمادًا على احتياجات التطوير الخاصة بك.
علاوة على ذلك، ألقِ نظرة على البرامج التعليمية الأخرى التي تركز على Docker و Kubernetes والتي يمكنك العثور عليها في مدونتنا:
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.