WordPress είναι ένα από τα πιο δημοφιλή συστήματα διαχείρισης περιεχομένου που χρησιμοποιούνται για την ανάπτυξη ιστολογίων και ιστότοπων στο διαδίκτυο. Είναι επίσης διαθέσιμο ως Docker εικόνα στο DockerHub μητρώο. Μπορείτε να χρησιμοποιήσετε αυτήν την εικόνα Docker για να δημιουργήσετε μια αξιόπιστη και επεκτάσιμη πλατφόρμα ιστότοπου στο Kubernetes cluster. Η ανάπτυξη του WordPress στο Kubernetes θα σας βοηθήσει να εφαρμόσετε μια ροή εργασιών CI/CD και μειώνει τον χρόνο που απαιτείται για την κυκλοφορία νέων ενημερώσεων. Μπορείτε επίσης να ενεργοποιήσετε την οριζόντια κλιμάκωση του ιστότοπου WordPress για να διαχειριστείτε τις αυξήσεις της επισκεψιμότητας του ιστότοπου.
Αυτός ο οδηγός θα σας δείξει πώς να αναπτύξετε το WordPress και το MySQL με ένα Persistent Volume στο Kubernetes cluster.
Προαπαιτούμενα
- Μια βασική κατανόηση του Kubernetes (k8s) και των αντικειμένων του. Ανατρέξτε σε αυτόν τον οδηγό για μια λεπτομερή επισκόπηση του οικοσυστήματος του Kubernetes.
- Ένα Kubernetes cluster είναι σε λειτουργία. Ακολουθήστε αυτό το σεμινάριο για να εγκαταστήσετε το Kubernetes cluster σε Ubuntu 20.04.
Επαλήθευση του Kubernetes Cluster
Πριν ξεκινήσετε, συνιστάται να επαληθεύσετε την κατάσταση του Kubernetes cluster. Μπορείτε να χρησιμοποιήσετε την εντολή 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 cluster χρησιμοποιώντας την ακόλουθη εντολή.
|
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 cluster χρησιμοποιώντας την ακόλουθη εντολή.
|
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 |
ΟΝΟΜΑ ΧΩΡΗΤΙΚΟΤΗΤΑ ΠΡΟΣΒΑΣΗ ΤΡΟΠΟΙ ΑΝΑΚΤΗΣΗ ΠΟΛΙΤΙΚΗ ΚΑΤΑΣΤΑΣΗ ΔΕΣΜΕΥΣΗ STORAGECLASS ΑΙΤΙΑ ΗΛΙΚΙΑ pvc-873a458352594103 40Gi RWO Delete Bound default/wp-pv-claim your-block-storage 3s pvc-de7d7de5e53a40e8 40Gi RWO Delete Bound default/mysql-pv-claim your-block-storage 3s |
Δημιουργία MySQL Deployment
Στη συνέχεια, δημιουργήστε ένα αρχείο ρυθμίσεων MySQL deployment για να κάνετε λήψη της εικόνας docker του MySQL, να δημιουργήσετε ένα container και να προσαρτήσετε το 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 στο ακόλουθο αποτέλεσμα.

Πρόσβαση στο Web UI του WordPress
Για να αποκτήσετε πρόσβαση στον πίνακα ελέγχου του WordPress, θα χρειαστείτε την εξωτερική IP και τον αριθμό θύρας του LoadBalancer. Μπορείτε να ανακτήσετε αυτές τις πληροφορίες χρησιμοποιώντας την ακόλουθη εντολή.
|
1 |
kubectl get svc |
Θα λάβετε την IP και τη θύρα του LoadBalancer στο ακόλουθο αποτέλεσμα.
|
1 2 3 4 |
ΟΝΟΜΑ ΤΥΠΟΣ CLUSTER-IP EXTERNAL-IP ΘΥΡΑ(S) ΗΛΙΚΙΑ 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 |
Για να λάβετε λεπτομερείς πληροφορίες σχετικά με τα pod του WordPress, εκτελέστε την ακόλουθη εντολή.
|
1 |
kubectl describe svc wordpress |
Θα πρέπει να λάβετε λεπτομερείς πληροφορίες για το WordPress στο ακόλουθο αποτέλεσμα.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Όνομα: wordpress Namespace: default Ετικέτες: app=wordpress Annotations: <none> Selector: app=wordpress,tier=frontend Τύπος: LoadBalancer IP Family Policy: SingleStack IP Families: IPv4 IP: 10.100.80.70 IPs: 10.100.80.70 LoadBalancer Ingress: 78.141.194.181 Θύρα: <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 με τον μόνιμο τόμο στο cluster του Kubernetes. Μπορείτε επίσης να κλιμακώσετε την ανάπτυξη του WordPress με βάση την επισκεψιμότητα του ιστότοπού σας. Μπορείτε τώρα να χρησιμοποιήσετε την παραπάνω ανάπτυξη ανάλογα με τις ανάγκες ανάπτυξής σας.
Επιπλέον, ρίξτε μια ματιά στα άλλα σεμινάριά μας που εστιάζουν στα Docker και Kubernetes και τα οποία μπορείτε να βρείτε στο ιστολόγιό μας:
Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.