2026-07-30 12:18:12 +01:00
|
|
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
|
|
|
kind: Kustomization
|
|
|
|
|
|
|
|
|
|
resources:
|
|
|
|
|
- app.yaml
|
2026-07-30 15:44:58 +01:00
|
|
|
- data-importer.yaml
|
2026-07-30 16:19:37 +01:00
|
|
|
- data-importer-ingress.yaml
|
2026-07-30 12:18:12 +01:00
|
|
|
- external-secrets.yaml
|
|
|
|
|
- postgres.yaml
|
|
|
|
|
- storage.yaml
|
2026-07-30 12:21:52 +01:00
|
|
|
- storage-prep.yaml
|
2026-07-30 12:18:12 +01:00
|
|
|
- traefik-ai.yaml
|
|
|
|
|
- network-policy.yaml
|
|
|
|
|
|
|
|
|
|
helmCharts:
|
|
|
|
|
- name: firefly-iii
|
|
|
|
|
repo: https://harish2k01.github.io/helm-charts
|
|
|
|
|
version: 0.1.2
|
|
|
|
|
releaseName: firefly-iii
|
|
|
|
|
namespace: firefly-iii
|
|
|
|
|
valuesFile: values.yaml
|
|
|
|
|
includeCRDs: true
|
|
|
|
|
|
|
|
|
|
patches:
|
|
|
|
|
# Chart 0.1.2 requires postgres.enabled=true. Remove its StatefulSet and
|
2026-07-30 12:25:17 +01:00
|
|
|
# make the generated database Service select the CloudNativePG instance.
|
2026-07-30 12:18:12 +01:00
|
|
|
- target:
|
|
|
|
|
group: apps
|
|
|
|
|
version: v1
|
|
|
|
|
kind: StatefulSet
|
|
|
|
|
name: firefly-iii-postgres
|
|
|
|
|
patch: |-
|
|
|
|
|
$patch: delete
|
|
|
|
|
apiVersion: apps/v1
|
|
|
|
|
kind: StatefulSet
|
|
|
|
|
metadata:
|
|
|
|
|
name: firefly-iii-postgres
|
|
|
|
|
- target:
|
|
|
|
|
version: v1
|
|
|
|
|
kind: Service
|
|
|
|
|
name: firefly-iii-postgres
|
|
|
|
|
patch: |-
|
|
|
|
|
- op: replace
|
2026-07-30 12:25:17 +01:00
|
|
|
path: /spec/selector
|
|
|
|
|
value:
|
|
|
|
|
cnpg.io/cluster: firefly-postgres
|
2026-07-30 12:18:12 +01:00
|
|
|
# The upstream chart does not expose scheduling settings for its CronJob.
|
|
|
|
|
- target:
|
|
|
|
|
group: batch
|
|
|
|
|
version: v1
|
|
|
|
|
kind: CronJob
|
|
|
|
|
name: firefly-iii-cron
|
|
|
|
|
patch: |-
|
2026-07-30 16:00:32 +01:00
|
|
|
- op: add
|
|
|
|
|
path: /spec/concurrencyPolicy
|
|
|
|
|
value: Forbid
|
|
|
|
|
- op: add
|
|
|
|
|
path: /spec/jobTemplate/spec/backoffLimit
|
|
|
|
|
value: 1
|
|
|
|
|
- op: add
|
|
|
|
|
path: /spec/jobTemplate/spec/activeDeadlineSeconds
|
|
|
|
|
value: 600
|
2026-07-30 12:18:12 +01:00
|
|
|
- op: add
|
|
|
|
|
path: /spec/jobTemplate/spec/template/spec/nodeSelector
|
|
|
|
|
value:
|
|
|
|
|
kubernetes.io/hostname: ai.tail2fe2d.ts.net
|
|
|
|
|
- op: add
|
|
|
|
|
path: /spec/jobTemplate/spec/template/spec/tolerations
|
|
|
|
|
value:
|
|
|
|
|
- key: workload
|
|
|
|
|
operator: Equal
|
|
|
|
|
value: ai
|
|
|
|
|
effect: NoSchedule
|
2026-07-30 16:00:32 +01:00
|
|
|
- op: replace
|
|
|
|
|
path: /spec/jobTemplate/spec/template/spec/containers/0/command
|
|
|
|
|
value:
|
|
|
|
|
- /bin/sh
|
|
|
|
|
- -ec
|
|
|
|
|
- >-
|
|
|
|
|
curl --fail --silent --show-error
|
|
|
|
|
--retry 30 --retry-delay 10 --retry-all-errors
|
|
|
|
|
--connect-timeout 5 --max-time 30
|
|
|
|
|
"http://firefly-iii:80/api/v1/cron/${STATIC_CRON_TOKEN}"
|
2026-07-30 12:18:12 +01:00
|
|
|
# A second independent filter in addition to ingressClassName.
|
|
|
|
|
- target:
|
|
|
|
|
group: networking.k8s.io
|
|
|
|
|
version: v1
|
|
|
|
|
kind: Ingress
|
|
|
|
|
name: firefly-iii
|
|
|
|
|
patch: |-
|
|
|
|
|
- op: add
|
|
|
|
|
path: /metadata/labels/firefly.hexor.cy~1private-ai
|
|
|
|
|
value: "true"
|
2026-07-30 13:57:55 +01:00
|
|
|
# The shared Traefik has the same controller identifier and can discover
|
|
|
|
|
# IngressClass objects. The explicit annotation partitions this Ingress
|
|
|
|
|
# so only the instance configured with ingressclass=traefik-ai accepts it.
|
|
|
|
|
- op: add
|
|
|
|
|
path: /metadata/annotations/kubernetes.io~1ingress.class
|
|
|
|
|
value: traefik-ai
|
|
|
|
|
- op: remove
|
|
|
|
|
path: /spec/ingressClassName
|