From 0f10e1238127ff13c0d9a6835fa2a93748ab5964 Mon Sep 17 00:00:00 2001 From: "azykov@mail.ru" Date: Fri, 31 Jul 2026 12:06:50 +0300 Subject: [PATCH] fava accounting viewer --- clusters/base/apps/fava/helmrelease.yaml | 86 +++++++++++++++++++ clusters/base/apps/fava/helmrepository.yaml | 10 +++ clusters/base/apps/fava/kustomization.yaml | 6 ++ clusters/base/apps/fava/pv-pvc-documents.yaml | 35 ++++++++ clusters/base/namespaces/finance.yaml | 4 + clusters/home/apps/fava.yaml | 18 ++++ clusters/home/apps/kustomization.yaml | 1 + clusters/home/namespaces/kustomization.yaml | 1 + 8 files changed, 161 insertions(+) create mode 100644 clusters/base/apps/fava/helmrelease.yaml create mode 100644 clusters/base/apps/fava/helmrepository.yaml create mode 100644 clusters/base/apps/fava/kustomization.yaml create mode 100644 clusters/base/apps/fava/pv-pvc-documents.yaml create mode 100644 clusters/base/namespaces/finance.yaml create mode 100644 clusters/home/apps/fava.yaml diff --git a/clusters/base/apps/fava/helmrelease.yaml b/clusters/base/apps/fava/helmrelease.yaml new file mode 100644 index 0000000..e2c6910 --- /dev/null +++ b/clusters/base/apps/fava/helmrelease.yaml @@ -0,0 +1,86 @@ +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: fava + namespace: finance +spec: + interval: 30m + chartRef: + kind: OCIRepository + name: fava + values: + controllers: + app: + initContainers: + seed-ledger: + image: + repository: busybox + tag: "1.36" + command: + - sh + - -c + - | + if [ ! -f /bean/main.beancount ]; then + printf '1970-01-01 open Assets:Cash\n1970-01-01 open Equity:Opening-Balances\n' > /main.beancount + fi + containers: + app: + image: + repository: yegle/fava + tag: latest + env: + TZ: Europe/Moscow + BEANCOUNT_FILE: /main.beancount + probes: + liveness: + enabled: true + readiness: + enabled: true + resources: + requests: + cpu: 50m + memory: 128Mi + limits: + memory: 512Mi + + service: + app: + controller: app + ports: + http: + port: 5000 + + ingress: + app: + className: traefik + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + traefik.ingress.kubernetes.io/router.middlewares: auth-authelia@kubernetescrd + hosts: + - host: acc.aggtaa.com + paths: + - path: / + pathType: Prefix + service: + identifier: app + port: http + tls: + - secretName: fava-tls + hosts: + - acc.aggtaa.com + + persistence: + bean: + type: persistentVolumeClaim + accessMode: ReadWriteOnce + size: 1Gi + storageClass: longhorn + retain: true + globalMounts: + - path: /bean + documents: + type: persistentVolumeClaim + existingClaim: fava-documents + globalMounts: + - path: /documents + readOnly: true diff --git a/clusters/base/apps/fava/helmrepository.yaml b/clusters/base/apps/fava/helmrepository.yaml new file mode 100644 index 0000000..93a25a8 --- /dev/null +++ b/clusters/base/apps/fava/helmrepository.yaml @@ -0,0 +1,10 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: OCIRepository +metadata: + name: fava + namespace: finance +spec: + interval: 1h + url: oci://ghcr.io/bjw-s-labs/helm/app-template + ref: + tag: "5.0.1" diff --git a/clusters/base/apps/fava/kustomization.yaml b/clusters/base/apps/fava/kustomization.yaml new file mode 100644 index 0000000..8fdfee9 --- /dev/null +++ b/clusters/base/apps/fava/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - helmrepository.yaml + - helmrelease.yaml + - pv-pvc-documents.yaml diff --git a/clusters/base/apps/fava/pv-pvc-documents.yaml b/clusters/base/apps/fava/pv-pvc-documents.yaml new file mode 100644 index 0000000..fa4cffb --- /dev/null +++ b/clusters/base/apps/fava/pv-pvc-documents.yaml @@ -0,0 +1,35 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: fava-documents-nfs +spec: + capacity: + storage: 30Gi + accessModes: + - ReadWriteMany + persistentVolumeReclaimPolicy: Retain + storageClassName: "" + mountOptions: + - nfsvers=4.1 + nfs: + server: 10.0.64.5 + path: /exports/shared/documents/accounting + claimRef: + namespace: finance + name: fava-documents +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: fava-documents + namespace: finance + annotations: + helm.sh/resource-policy: keep +spec: + accessModes: + - ReadWriteMany + storageClassName: "" + volumeName: fava-documents-nfs + resources: + requests: + storage: 30Gi diff --git a/clusters/base/namespaces/finance.yaml b/clusters/base/namespaces/finance.yaml new file mode 100644 index 0000000..3d2f837 --- /dev/null +++ b/clusters/base/namespaces/finance.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: finance diff --git a/clusters/home/apps/fava.yaml b/clusters/home/apps/fava.yaml new file mode 100644 index 0000000..97a238f --- /dev/null +++ b/clusters/home/apps/fava.yaml @@ -0,0 +1,18 @@ +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: fava + namespace: flux-system +spec: + interval: 10m + sourceRef: + kind: GitRepository + name: flux-system + path: ./clusters/base/apps/fava + prune: true + wait: true + dependsOn: + - name: namespaces + - name: infra + - name: nfs-ganesha + retryInterval: 5s diff --git a/clusters/home/apps/kustomization.yaml b/clusters/home/apps/kustomization.yaml index ce1e5db..32dd132 100644 --- a/clusters/home/apps/kustomization.yaml +++ b/clusters/home/apps/kustomization.yaml @@ -11,3 +11,4 @@ resources: - markdown-vault-mcp.yaml - nfs-ganesha.yaml - webdav.yaml + - fava.yaml \ No newline at end of file diff --git a/clusters/home/namespaces/kustomization.yaml b/clusters/home/namespaces/kustomization.yaml index 92c83dc..f01d15c 100644 --- a/clusters/home/namespaces/kustomization.yaml +++ b/clusters/home/namespaces/kustomization.yaml @@ -12,4 +12,5 @@ resources: - ../../base/namespaces/ai.yaml - ../../base/namespaces/mcp.yaml - ../../base/namespaces/webdav.yaml + - ../../base/namespaces/finance.yaml - ../../base/namespaces/nfs.yaml