homelab/k3s/mattermost/mattermost.yaml
2026-04-18 18:28:55 -04:00

98 lines
2.3 KiB
YAML

# Mattermost — team messaging
# PostgreSQL backend via cluster DNS: postgres
# Unpinned — scheduler places freely, local-path PVC
# NodePort 32374
#
# Deploy:
# kubectl create secret generic mattermost-secret \
# --from-literal=db-password='<password>'
# kubectl apply -f mattermost-db-init.yaml
# kubectl get jobs -w # wait for completion
# kubectl apply -f mattermost.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mattermost-data-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-path
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mattermost-plugins-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-path
resources:
requests:
storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mattermost
spec:
replicas: 1
selector:
matchLabels:
app: mattermost
template:
metadata:
labels:
app: mattermost
spec:
containers:
- name: mattermost
image: mattermost/mattermost-team-edition:10.11
env:
- name: MM_DB_PASSWORD
valueFrom:
secretKeyRef:
name: mattermost-secret
key: db-password
- name: MM_SQLSETTINGS_DRIVERNAME
value: postgres
- name: MM_SQLSETTINGS_DATASOURCE
value: "postgres://mattermost_user:$(MM_DB_PASSWORD)@postgres:5432/mattermost_db?sslmode=disable&connect_timeout=10"
- name: MM_SERVICESETTINGS_SITEURL
value: https://chat.the-fulfillment.org
- name: MM_SERVICESETTINGS_LISTENADDRESS
value: ":8065"
ports:
- containerPort: 8065
volumeMounts:
- name: mattermost-data
mountPath: /mattermost/data
- name: mattermost-plugins
mountPath: /mattermost/plugins
volumes:
- name: mattermost-data
persistentVolumeClaim:
claimName: mattermost-data-pvc
- name: mattermost-plugins
persistentVolumeClaim:
claimName: mattermost-plugins-pvc
---
apiVersion: v1
kind: Service
metadata:
name: mattermost
spec:
selector:
app: mattermost
ports:
- port: 8065
targetPort: 8065
nodePort: 32374
type: NodePort