Kubernetes Tutorial – WordPress Installation
In diesem Beitrag der Kubernetes Artikel-Reihe geben wir eine Anleitung für die Installation von WordPress und die dazugehörige MySQL-Datenbank in einem Kubernetes Cluster. Um dies zu erreichen werden wir
- PersistentVolumeClaims und PersistentVolumes erstellen
- Eine kustomization.yaml erstellen mit
- einem Secret Generator
- MySQL resource configs
- WordPress resource configs
Persistent Volumes und Claims
MySQL und WordPress benötigen beide permanenten Speicherplatz. Hier kommen Persistent Volumes (PV) und Persistent Volume Claims (PVC) ins Spiel. Ein PV ist ein Teil des Speichers im Cluster. Ein PVC ist eine Speicheranforderung durch einen Benutzer, die von einem PV erfüllt werden kann. PVs und PVCs sind unabhängig von Pod-Lebenszyklen und bewahren Daten durch Neustart, Neuplanung und sogar Löschen von Pods.
Secret Storage
Ein Secret ist ein Objekt, das sensible Daten wie ein Passwort oder einen Schlüssel speichert. Sie können ein Secret durch Generatoren in kustomization.yaml erstellen. Fügen Sie mit der folgenden Konfiguration einen Secret-Generator in kustomization.yaml ein. Ersetzen Sie IHR_PASSWORT durch das Passwort, das Sie verwenden möchten.
secretGenerator:
- name: mysql-pass
literals:
- password=password123
resources:
- mysql-deployment.yaml
- wordpress-deployment.yaml
Resource Configs
In mysql-deployment.yaml wird der MySQL Container definiert. Der Container hängt das MYSQL PV unter /var/lib/mysql ein. Es wird eine Environment Variable namens MYSQL_ROOT_PASSWORD gesetzt, welche vom Secret Generator ein Passwort bekommt.
Wordpress-deployment.yaml definiert dann den WordPress Container. Dieser Container hängt auch ein PV unter /var/www/html ein. Die WORDPRESS_DB_HOST Environment Variable definiert den Datenbank Host für WordPress (Die MySQL deployment).
Laden sie die Ressource Config Dateien, im gleichen Ordner wie die kustomization.yaml, runter:
curl -LO https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/application/wordpress/wordpress-deployment.yaml
curl -LO https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/application/wordpress/mysql-deployment.yaml
Instanz Starten
Mit "kubectl apply -k ./
" werden die yaml Datein in Minikube eingespielt und es sollte bald eine WordPress Instanz geben.
Um zu prüfen, ob die Konfigurationen auch richtig eingelesen wurden, kann man die folgenden Befehle nutzen:
kubectl get secrets # Zeigt obfuscated Secrets an.
kubectl get pvc # Zeigt den Status von PVCs an. Hiermit kann man überprüfen, ob die PVCs auch mit den PVs, die wir angelegt haben, gefüllt sind.
kubectl get pods # Zeigt den Status von unserem WordPress/MySQL Pod an.
kubectl get services wordpress # Zeigt den Status des eigentlichen WordPress Programms an. EXTERNAL-IP wird immer <pending> sein da Minikube Services exposed mit NodePort
./minikube service wordpress --url # Gibt uns die IP Adresse, wo wir unsere WordPress Installation finden können
Nun haben Sie eine lokal gehostete WordPress Instanz.
Achtung!
Diese Instanz ist für alle Benutzer im lokalen Netz erreichbar. Es wäre unsicher, wenn die Installationsseite unverändert unter dieser Adresse bleibt.
Deshalb sollten sie entweder einen Benutzer erstellen oder den ganzen Cluster wieder mit dem folgenden Befehl löschen:
kubectl delete -k ./