apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: finance
  name: actualbudget
  labels:
    app: actualbudget
spec:
# deployment running a single container
  selector:
    matchLabels:
      app: actualbudget
  replicas: 1
  template:
    metadata:
      labels:
        app: actualbudget
    spec:
      containers:
        - name: actualbudget
          image: actualbudget/actual-server:latest
          imagePullPolicy: Always
          env:
            - name: TZ
              value: Europe/Berlin
          volumeMounts:
            - name: actualbudget-data-nfs
              mountPath: /data
          ports:
            - containerPort: 5006
              name: http
              protocol: TCP
      volumes:
        - name: actualbudget-data-nfs
          persistentVolumeClaim:
            claimName: actualbudget-data-nfs
---
apiVersion: v1
kind: PersistentVolume
metadata:
  namespace: finance
  name: "actualbudget-data-nfs"
spec:
  # storageClassName: fast
  capacity:
    storage: "5Gi"
  accessModes:
    - ReadWriteOnce
  nfs:
    path: /export/kluster/actualbudget
    server: 192.168.1.157

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: finance
  name: "actualbudget-data-nfs"
spec:
  storageClassName: "fast"
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: "5Gi"
  # selector:
  #   matchLabels:
  #     directory: "journal-data"

---
apiVersion: v1
kind: Service
metadata:
  namespace: finance
  name: actualbudget
spec:
  selector:
    app: actualbudget
  ports:
    - protocol: TCP
      port: 5006
      targetPort: 5006
  type: ClusterIP
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  namespace: finance
  name: actualbudget
spec:
  entryPoints:
    - websecure
  routes:
  - match: Host(`actualbudget.kluster.moll.re`)
    kind: Rule
    services:
    - name: actualbudget
      port: 5006
  tls:
    certResolver: default-tls