Kubernetes Tutorial – Deployment Definition
In unserer Kubernetes Artikel-Serie haben wir es und zum Ziel gesetzt, zu erklären wie Kubernetes funktioniert, um Ihnen ein besseres Verständnis von Kubernetes zu vermitteln. Wir erstellen dafür in unseren Beispielen eine eigene lokale, kleine Kubernetes-Installation. Die Beispiele sind jedoch auch in vielen Fällen auf größere Kubernetes-Installationen übertragbar, wie wir sie für unsere Kunden bereitstellen.
Im letzten Artikel unserer Kubernetes-Serie haben wir erklärt, wie man WordPress in einem Cluster installiert. Wenn Sie mitgemacht haben, haben Sie zwei YAML-Dateien heruntergeladen, die die Ressourcen für Ihre WordPress-Bereitstellung definiert haben. In diesem Artikel gehen wir genauer auf diese Konfigurationsdateien ein. Wir schauen uns die wordpress-deployment.yaml an, welche 3 Definitionen enthält: einen LoadBalancer-Service, eine PersistentVolumeClaim und das eigentliche WordPress-Deployment.
Load Balancer
Der Load Balancer leitet Netzwerk Pakete an Ihre App (in diesem Fall WordPress) weiter. Dies sollte nicht mit einer Ingress-Route verwechselt werden, da er keine Filterung oder Reverse-Proxying macht.
Unserer Load-Balancer wurde so konfiguriert, dass er Datenverkehr auf Port 80 annimmt und an die WordPress-App weiterleitet:
spec:
ports:
- port: 80
selector:
app: wordpress
tier: frontend
type: LoadBalancer
Persistent Volume Claim
Persistent Volume Claims bieten unseren Apps Speicherplatz im Cluster. Dieser Speicher wird bei einem Container Neustart nicht gelöscht.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wp-pv-claim
labels:
app: wordpress
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
Dieser Claim garantiert 20 GB Speicherplatz und ist im "ReadWriteOnce"-Modus eingestellt. Der "ReadWriteOnce" Modus stellt sicher, dass nur ein Node gleichzeitig das Volume für Lese-/Schreibzugriff mounten kann.
App Deployment
Wir werden uns auf die Template-Spezifikation unserer Bereitstellung beschränken und sie in kleinere Teile aufteilen, beginnend mit dem Container:
Hier definieren wir das Container-Image, das verwendet werden soll (in diesem Fall ein WordPress Container von DockerHub):
containers:
- image: wordpress:6.2.1-apache
name: wordpress
Außerdem setzen wir auch einige Umgebungsvariablen spezifisch für WordPress. Diese setzen die relevanten Datenbankkonfigurationen, die von WordPress benötigt werden.
env:
- name: WORDPRESS_DB_HOST
value: wordpress-mysql
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-pass
key: password
Die nächsten Blöcke hängen unser Volume ein und öffnen einen Port in unserem Container:
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: wordpress-persistent-storage
mountPath: /var/www/html
Außerdem verbinden wir den zuvor erstellten PVC mit unserem Deployment:
volumes:
- name: wordpress-persistent-storage
persistentVolumeClaim:
claimName: wp-pv-claim
Fazit
Diese Bereitstellung ist recht typisch und bietet uns eine WordPress-Installation, Speicher-Ressourcen für den Betrieb, sowie einen Netzwerkzugang.
Die nächsten Schritte beinhalten die Einrichtung der Secret-Verwaltung, eines Ingress Controllers und eines verteilten Speichers. Lesen Sie dazu mehr in den folgenden Artikeln.