WordPress ist eines der beliebtesten Content-Management-Systeme, die zur Bereitstellung von Blogs und Websites im Internet verwendet werden. Es ist auch als Docker-Image in der DockerHub-Registry verfügbar. Sie können dieses Docker-Image verwenden, um eine zuverlässige und skalierbare Website-Plattform auf dem Kubernetes-Cluster aufzubauen. Die Bereitstellung von WordPress auf Kubernetes hilft Ihnen bei der Implementierung einer CI/CD-Pipeline und verkürzt die Zeit für die Veröffentlichung neuer Updates. Sie können auch die horizontale Skalierung der WordPress-Website aktivieren, um Datenverkehrsspitzen zu bewältigen.
Diese Anleitung zeigt Ihnen, wie Sie WordPress und MySQL mit einem Persistent Volume auf dem Kubernetes-Cluster bereitstellen.
Voraussetzungen
- Ein grundlegendes Verständnis von Kubernetes (k8s) und seinen Objekten. In dieser Anleitung finden Sie eine detaillierte Übersicht über das Kubernetes-Ökosystem.
- Ein Kubernetes-Cluster ist eingerichtet und läuft. Folgen Sie diesem Tutorial, um den Kubernetes-Cluster auf Ubuntu 20.04 zu installieren.
Kubernetes-Cluster überprüfen
Vor dem Start wird empfohlen, den Status des Kubernetes-Clusters zu überprüfen. Sie können den Befehl kubectl verwenden, um Kubernetes zu überprüfen.
|
1 |
kubectl get nodes |
Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten.

Ein Secret für MySQL erstellen
Ein Secret ist ein Objekt, mit dem Sie sensible Daten wie ein Passwort oder einen Schlüssel speichern können. In diesem Beitrag verwenden wir ein Secret, um das MySQL-Passwort zu speichern.
Erstellen Sie zuerst ein base64-codiertes Passwort mit dem folgenden Befehl.
|
1 |
echo -n 'your_secure_password' | base64 |
Sie erhalten Ihr geheimes Passwort in der folgenden Ausgabe.
|
1 |
eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Erstellen Sie als Nächstes eine secret.yaml Datei für MySQL und WordPress.
|
1 |
nano secret.yaml |
Fügen Sie die folgende Konfiguration hinzu.
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Speichern und schließen Sie die Datei. Wenden Sie dann die obige Konfiguration mit dem folgenden Befehl auf den Kubernetes-Cluster an.
|
1 |
kubectl apply -f secret.yaml |
Sie erhalten die folgende Ausgabe.
|
1 |
secret/mysql-pass created |
Erstellen Sie ein PersistentVolume für MySQL und WordPress
Sie müssen auch ein PersistentVolume erstellen, um MySQL- und WordPress-Daten zu speichern.
Erstellen wir eine pvc-mysql-wp.yaml Datei.
|
1 |
nano pvc-mysql-wp.yaml |
Fügen Sie die folgende Konfigurationen hinzu.
|
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 |
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Erstellen Sie als Nächstes mit dem folgenden Befehl PersistentVolumes für MySQL und WordPress auf dem Kubernetes-Cluster.
|
1 |
kubectl apply -f pvc-mysql-wp.yaml |
Sie sollten beide PersistentVolumes in der folgenden Ausgabe sehen.
|
1 2 |
persistentvolumeclaim/mysql-pv-claim created persistentvolumeclaim/wp-pv-claim created |
Sie können nun beide PersistentVolumes mit dem folgenden Befehl überprüfen.
|
1 |
kubectl get pv |
Sie sollten die folgende Ausgabe sehen.
|
1 2 3 |
NAME KAPAZITÄT ZUGRIFFS MODI RÜCKGEWINNUNGS RICHTLINIE STATUS CLAIM STORAGECLASS GRUND ALTER pvc-873a458352594103 40Gi RWO Delete Bound default/wp-pv-claim ihr-block-storage 3s pvc-de7d7de5e53a40e8 40Gi RWO Delete Bound default/mysql-pv-claim ihr-block-storage 3s |
MySQL-Deployment erstellen
Erstellen Sie als Nächstes eine MySQL-Deployment-Konfigurationsdatei, um das MySQL-Docker-Image herunterzuladen, einen Container zu erstellen und das PersistentVolume unter einzubinden/var/lib/mysql.
|
1 |
nano mysql-deployment.yaml |
Fügen Sie die folgende Konfiguration hinzu.
|
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 |
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Stellen Sie dann die obige Konfiguration im Kubernetes-Cluster bereit.
|
1 |
kubectl apply -f mysql-deployment.yaml |
Sie sollten die folgende Ausgabe sehen.

Sie können das MySQL-Deployment mit dem folgenden Befehl überprüfen.
|
1 |
kubectl get deployments |
Sie sollten den Status des MySQL-Deployments in der folgenden Ausgabe sehen.

WordPress-Deployment erstellen
Erstellen Sie nun eine WordPress-Deployment-Konfigurationsdatei, um das WordPress-Image herunterzuladen, einen Container zu erstellen und das PersistentVolume unter /var/www/html für Website-Datendateien zu mounten. Diese Datei erstellt auch die Umgebungsvariablen WORDPRESS_DB_HOST und WORDPRESS_DB_PASSWORD , um auf die Datenbank zuzugreifen.
|
1 |
nano wordpress-deployment.yaml |
Fügen Sie die folgende Konfiguration hinzu.
|
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 # für Versionen vor 1.9.0 verwenden Sie 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 |
Speichern Sie die Datei, wenn Sie fertig sind. Wenden Sie dann die obige Konfiguration mit dem folgenden Befehl auf den Kubernetes-Cluster an.
|
1 |
kubectl apply -f wordpress-deployment.yaml |
In der folgenden Ausgabe sollten Sie eine Meldung über eine erfolgreiche Bereitstellung sehen.
|
1 2 |
service/wordpress created deployment.apps/wordpress created |
Um die WordPress-Bereitstellung zu überprüfen, führen Sie den folgenden Befehl aus.
|
1 |
kubectl get deployments |
In der folgenden Ausgabe sollten Sie den Status der WordPress-Bereitstellung sehen.

WordPress-Web-UI aufrufen
Um auf das WordPress-Dashboard zuzugreifen, benötigen Sie die externe IP-Adresse und die Portnummer des LoadBalancers. Sie können diese Informationen mit dem folgenden Befehl abrufen.
|
1 |
kubectl get svc |
In der folgenden Ausgabe erhalten Sie die IP und den Port des LoadBalancers.
|
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 |
Um detaillierte Informationen über Ihre WordPress-Pods zu erhalten, führen Sie den folgenden Befehl aus.
|
1 |
kubectl describe svc wordpress |
In der folgenden Ausgabe sollten Sie detaillierte Informationen zu WordPress erhalten.
|
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 |
Öffnen Sie nun Ihren Webbrowser und rufen Sie die WordPress-Installationsseite über die URL auf http://78.141.194.181:3162. Sie sollten die WordPress-Installationsseite auf dem folgenden Bildschirm sehen.

Wählen Sie Ihre Sprache aus und führen Sie die erforderlichen Schritte aus, um den Installationsvorgang abzuschließen.
Fazit
In diesem Beitrag haben wir erklärt, wie Sie MySQL und WordPress mit dem persistenten Volume auf dem Kubernetes-Cluster bereitstellen. Sie können Ihr WordPress-Deployment auch basierend auf Ihrem Website-Traffic skalieren. Sie können das obige Deployment nun je nach Ihren Entwicklungsanforderungen verwenden.
Werfen Sie außerdem einen Blick auf unsere anderen Tutorials zu Docker und Kubernetes, die Sie auf unserem Blog finden:
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.