cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit 22c6c180b2b8d207c338c191fb2853ab8d215188
parent bfbc01b3b3c17a4dc8f252c2fb397f5f0b0f5cae
Author: MTRNord <MTRNord@users.noreply.github.com>
Date:   Mon,  4 Aug 2025 10:30:57 +0200

Prep actual budget

Diffstat:
Mapps/base/actualbudget-server/release.yaml | 64++++++++++++++++++++++++++++++++--------------------------------
Aapps/talos_cluster/actualbudget-server/kustomization.yaml | 6++++++
Aapps/talos_cluster/actualbudget-server/pvc.yaml | 13+++++++++++++
Aapps/talos_cluster/actualbudget-server/release.yaml | 91+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mapps/talos_cluster/kustomization.yaml | 1+
Aapps/talos_cluster/namespaces/actualbudget-server.yaml | 4++++
Mapps/talos_cluster/namespaces/kustomization.yaml | 1+
7 files changed, 148 insertions(+), 32 deletions(-)

diff --git a/apps/base/actualbudget-server/release.yaml b/apps/base/actualbudget-server/release.yaml @@ -32,44 +32,44 @@ spec: image: ghcr.io/actualbudget/actual:25.7.1 imagePullPolicy: IfNotPresent resources: - limits: - cpu: 100m - memory: 128Mi - requests: - cpu: 100m - memory: 128Mi + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 128Mi env: - - name: NODE_ENV - value: "production" + - name: NODE_ENV + value: "production" # - name: DEBUG # value: "*" ports: - - containerPort: 5006 + - containerPort: 5006 livenessProbe: - httpGet: - path: / - port: 5006 - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 3 + httpGet: + path: / + port: 5006 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 readinessProbe: - httpGet: - path: / - port: 5006 - initialDelaySeconds: 30 - periodSeconds: 10 - timeoutSeconds: 5 - successThreshold: 1 - failureThreshold: 3 + httpGet: + path: / + port: 5006 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 volumeMounts: - - name: actualbudget-server - mountPath: /data + - name: actualbudget-server + mountPath: /data volumes: - name: actualbudget-server persistentVolumeClaim: - claimName: actualbudget-server + claimName: actualbudget-server --- apiVersion: v1 kind: Service @@ -97,8 +97,8 @@ spec: - budget.midnightthoughts.space rules: - backendRefs: - - name: actualbudget-server-service - port: 5006 + - name: actualbudget-server-service + port: 5006 timeouts: - request: 240s - backendRequest: 0s + request: 240s + backendRequest: 0s diff --git a/apps/talos_cluster/actualbudget-server/kustomization.yaml b/apps/talos_cluster/actualbudget-server/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: actualbudget-server +resources: + - pvc.yaml + #- release.yaml diff --git a/apps/talos_cluster/actualbudget-server/pvc.yaml b/apps/talos_cluster/actualbudget-server/pvc.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: actualbudget-server + namespace: actualbudget-server +spec: + resources: + requests: + storage: 1Gi + storageClassName: ceph-filesystem + volumeMode: Filesystem + accessModes: + - ReadWriteMany diff --git a/apps/talos_cluster/actualbudget-server/release.yaml b/apps/talos_cluster/actualbudget-server/release.yaml @@ -0,0 +1,91 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: actualbudget-server + namespace: actualbudget-server +spec: + replicas: 1 + selector: + matchLabels: + app: actualbudget-server + template: + metadata: + labels: + app: actualbudget-server + spec: + containers: + - name: actualbudget-server + image: ghcr.io/actualbudget/actual:25.8.0 + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 128Mi + env: + - name: NODE_ENV + value: "production" + # - name: DEBUG + # value: "*" + ports: + - containerPort: 5006 + livenessProbe: + httpGet: + path: / + port: 5006 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: 5006 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 + volumeMounts: + - name: actualbudget-server + mountPath: /data + volumes: + - name: actualbudget-server + persistentVolumeClaim: + claimName: actualbudget-server +--- +apiVersion: v1 +kind: Service +metadata: + name: actualbudget-server-service + namespace: actualbudget-server +spec: + selector: + app: actualbudget-server + ports: + - protocol: TCP + port: 5006 + targetPort: 5006 +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: actualbudget-server + namespace: actualbudget-server +spec: + parentRefs: + - name: envoy-gateway + namespace: envoy-gateway + hostnames: + - budget.midnightthoughts.space + rules: + - backendRefs: + - name: actualbudget-server-service + port: 5006 + timeouts: + request: 240s + backendRequest: 0s diff --git a/apps/talos_cluster/kustomization.yaml b/apps/talos_cluster/kustomization.yaml @@ -8,3 +8,4 @@ resources: - ./draupnir4all - ./draupnir-synapse - ./vaultwarden + - ./actualbudget-server diff --git a/apps/talos_cluster/namespaces/actualbudget-server.yaml b/apps/talos_cluster/namespaces/actualbudget-server.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: actualbudget-server diff --git a/apps/talos_cluster/namespaces/kustomization.yaml b/apps/talos_cluster/namespaces/kustomization.yaml @@ -6,3 +6,4 @@ resources: - authentik.yaml - matrix.yaml - vaultwarden.yaml + - actualbudget-server.yaml