Nextcloud¶
Die letzte und wichtigste Komponente, die noch fehlt, ist Nextcloud selbst.
In nextcloud.yaml habe ich euch ein vorgefertigtes Deployment bereitgestellt. Aber da ihr jetzt schon etwas fortgeschritten seid, fehlt noch etwas! Das Deployment verwendet nämlich kein PersistentVolume. Nach einem Update wären alle Daten weg!
nextcloud.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nextcloud
namespace: nextcloud
spec:
replicas: 1
selector:
matchLabels:
app: nextcloud
template:
metadata:
labels:
app: nextcloud
spec:
containers:
- name: nextcloud
image: nextcloud:27.1.4
ports:
- containerPort: 80
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
livenessProbe:
exec:
command: ["sh", "-c", "true"]
initialDelaySeconds: 60
periodSeconds: 20
env:
- name: MYSQL_HOST
value: "nextcloud-db"
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: nextcloud-db-secret
key: MYSQL_DATABASE
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: nextcloud-db-secret
key: MYSQL_USER
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: nextcloud-db-secret
key: MYSQL_PASSWORD
resources:
requests:
cpu: "100m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
Wir müssen uns also darum kümmern, ein PersistentVolume anzufragen und zu mounten. Als Erstes braucht ihr einen PersistentVolumeClaim:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nextcloud-pvc
namespace: nextcloud
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
Baut nun an richtiger Stelle im Manifest den Claim ein:
volumes:
- name: nextcloud-data
persistentVolumeClaim:
claimName: nextcloud-pvc
Das entstehende Volume müsst ihr schließlich noch mounten:
volumeMounts:
- name: nextcloud-data
mountPath: /var/www/html
Wo genau diese Schnipsel eingefügt werden müssen, werdet ihr selbst herausfinden. Dabei kann euch die Dokumentation helfen – oder die Aufgabe zu Volumes von gestern.
Wenn ihr fertig seid, fehlt außerdem noch ein Service, der Nextcloud nach außen verfügbar macht. Nehmt euch dazu den Service von "PhpMyAdmin" als Vorlage und passt die Namen sowie Labels an, sodass sie zum Nextcloud-Deployment passen.
Wenn alles fertig ist, könnt ihr mit kubectl die Datei anwenden und danach mit minikube einen Tunnel zu eurem Service aufbauen, um Nextcloud zu testen.
Viel Erfolg!