WordPress is een van de meest populaire content management systemen die worden gebruikt om blogs en websites op het internet te implementeren. Het is ook beschikbaar als een Docker image op de DockerHub registry. Je kunt deze Docker image gebruiken om een betrouwbaar en schaalbaar websiteplatform te bouwen op het Kubernetes cluster. Het implementeren van WordPress op Kubernetes helpt je om een CI/CD-pipeline te implementeren en verkort de tijd die nodig is om nieuwe updates uit te brengen. Je kunt ook horizontale schaling van de WordPress-website inschakelen om pieken in het websiteverkeer op te vangen.
Deze gids laat je zien hoe je WordPress en MySQL met een Persistent Volume op het Kubernetes-cluster implementeert.
Vereisten
- Een basisbegrip van Kubernetes (k8s) en de bijbehorende objecten. Raadpleeg deze gids voor een gedetailleerd overzicht van het Kubernetes-ecosysteem.
- Een Kubernetes-cluster is actief en draait. Volg deze handleiding om het Kubernetes-cluster te installeren op Ubuntu 20.04.
Kubernetes-cluster verifiëren
Voordat je begint, wordt het aanbevolen om de status van het Kubernetes-cluster te verifiëren. Je kunt het kubectl commando gebruiken om Kubernetes te verifiëren.
|
1 |
kubectl get nodes |
Als alles in orde is, zou je de volgende uitvoer moeten krijgen.

Maak een Secret voor MySQL
Een Secret is een object waarmee je gevoelige gegevens zoals een wachtwoord of sleutel kunt opslaan. In dit bericht gebruiken we Secret om het MySQL-wachtwoord op te slaan.
Maak eerst een base64 gecodeerd wachtwoord met het volgende commando.
|
1 |
echo -n 'your_secure_password' | base64 |
Je krijgt je geheime wachtwoord in de volgende uitvoer.
|
1 |
eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Next, create a secret.yaml-bestand voor MySQL en WordPress.
|
1 |
nano secret.yaml |
Voeg de volgende configuratie toe.
|
1 2 3 4 5 6 7 |
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: eW91cl9zZWN1cmVfcGFzc3dvcmQ= |
Sla het bestand op en sluit het. Pas vervolgens de bovenstaande configuratie toe op het Kubernetes-cluster met het volgende commando.
|
1 |
kubectl apply -f secret.yaml |
Je krijgt de volgende uitvoer.
|
1 |
secret/mysql-pass created |
Maak een PersistentVolume voor MySQL en WordPress
Je moet ook een PersistentVolume maken om MySQL- en WordPress-gegevens op te slaan.
Laten we een pvc-mysql-wp.yaml-bestand maken.
|
1 |
nano pvc-mysql-wp.yaml |
Voeg de volgende configuraties toe.
|
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 |
Sla het bestand op en sluit het als je klaar bent.
Maak vervolgens PersistentVolumes voor zowel MySQL als WordPress op het Kubernetes-cluster met het volgende commando.
|
1 |
kubectl apply -f pvc-mysql-wp.yaml |
Je zou beide PersistentVolumes in de volgende uitvoer moeten zien.
|
1 2 |
persistentvolumeclaim/mysql-pv-claim created persistentvolumeclaim/wp-pv-claim created |
Je kunt nu beide PersistentVolumes verifiëren met het volgende commando.
|
1 |
kubectl get pv |
Je zou de volgende uitvoer moeten zien.
|
1 2 3 |
NAAM CAPACITEIT TOEGANGS MODI RECLAIM BELEID STATUS CLAIM STORAGECLASS REDEN LEEFTIJD pvc-873a458352594103 40Gi RWO Delete Bound default/wp-pv-claim jouw-block-opslag 3s pvc-de7d7de5e53a40e8 40Gi RWO Delete Bound default/mysql-pv-claim jouw-block-opslag 3s |
MySQL-deployment maken
Maak vervolgens een MySQL-deploymentconfiguratiebestand aan om de MySQL-Docker-image te downloaden, een container te maken en de PersistentVolume te koppelen op /var/lib/mysql.
|
1 |
nano mysql-deployment.yaml |
Voeg de volgende configuratie toe.
|
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 |
Sla het bestand op en sluit het als u klaar bent. Implementeer vervolgens de bovenstaande configuratie in het Kubernetes-cluster.
|
1 |
kubectl apply -f mysql-deployment.yaml |
U zou de volgende uitvoer moeten zien.

U kunt de MySQL-implementatie verifiëren met de volgende opdracht.
|
1 |
kubectl get deployments |
U zou de status van de MySQL-implementatie in de volgende uitvoer moeten zien.

WordPress-implementatie maken
Maak nu een WordPress-implementatieconfiguratiebestand om de WordPress-image te downloaden, een container te maken en de PersistentVolume te koppelen op /var/www/html voor websitedatabestanden. Dit bestand maakt ook de WORDPRESS_DB_HOST en WORDPRESS_DB_PASSWORD omgevingsvariabelen om toegang te krijgen tot de database.
|
1 |
nano wordpress-deployment.yaml |
Voeg de volgende configuratie toe.
|
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 # gebruik apps/v1beta2 voor versies van vóór 1.9.0 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 |
Sla het bestand op als je klaar bent. Pas vervolgens de bovenstaande configuratie toe op de Kubernetes-cluster met behulp van de volgende opdracht.
|
1 |
kubectl apply -f wordpress-deployment.yaml |
Je zou een bericht over een succesvolle implementatie moeten zien in de volgende uitvoer.
|
1 2 |
service/wordpress created deployment.apps/wordpress created |
Voer de volgende opdracht uit om de WordPress-implementatie te controleren.
|
1 |
kubectl get deployments |
Je zou de status van de WordPress-implementatie in de volgende uitvoer moeten zien.

Toegang tot WordPress Web UI
Om toegang te krijgen tot het WordPress-dashboard, heb je het externe IP-adres en poortnummer van de LoadBalancer nodig. Je kunt deze informatie ophalen met de volgende opdracht.
|
1 |
kubectl get svc |
Je krijgt het IP-adres en de poort van de LoadBalancer in de volgende uitvoer.
|
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 |
Voer de volgende opdracht uit om gedetailleerde informatie over je WordPress-pods te krijgen.
|
1 |
kubectl describe svc wordpress |
Je zou gedetailleerde informatie over WordPress moeten krijgen in de volgende uitvoer.
|
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 |
Open nu je webbrowser en ga naar de WordPress-installatiepagina via de URL http://78.141.194.181:3162. Je zou de WordPress-installatiepagina op het volgende scherm moeten zien.

Selecteer je taal en voltooi de vereiste stappen om het installatieproces af te ronden.
Conclusie
In dit bericht hebben we uitgelegd hoe je MySQL en WordPress met het persistent volume op het Kubernetes-cluster implementeert. Je kunt je WordPress-implementatie ook schalen op basis van je websiteverkeer. Je kunt de bovenstaande implementatie nu gebruiken afhankelijk van je ontwikkelingsbehoeften.
Neem daarnaast een kijkje bij onze andere tutorials over Docker en Kubernetes die je op onze blog kunt vinden:
Reacties
Nog geen reacties. Wees de eerste.