From 7cee092bb8c47059dd3c45e0a4147d565d8fe440 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 18 Oct 2026 17:19:03 +0200 Subject: [PATCH] Use direct Helm sources for existing Argo applications --- apps/argocd/Chart.yaml | 9 --- apps/argocd/values.yaml | 13 ++-- apps/brgkepler-com/Chart.yaml | 8 --- apps/brgkepler-com/values.yaml | 41 ++++++------ apps/brunner-ninja/Chart.yaml | 8 --- apps/brunner-ninja/values.yaml | 41 ++++++------ apps/flaresolverr/Chart.yaml | 8 --- apps/flaresolverr/values.yaml | 25 ++++--- apps/gschissenes-equipment/Chart.yaml | 8 --- apps/gschissenes-equipment/values.yaml | 41 ++++++------ apps/immich-crack/Chart.yaml | 8 --- apps/immich-crack/values.yaml | 35 +++++----- apps/immichframe/Chart.yaml | 9 --- .../immichframe-api.yaml | 1 - apps/immichframe/values.yaml | 19 +++--- apps/metallb/kustomization.yaml | 5 -- .../address-pool.yaml} | 0 apps/ombi/Chart.yaml | 8 --- apps/ombi/values.yaml | 43 ++++++------ apps/pfostendynamics-com/Chart.yaml | 8 --- apps/pfostendynamics-com/values.yaml | 25 ++++--- apps/tautulli/Chart.yaml | 8 --- apps/tautulli/values.yaml | 65 +++++++++---------- apps/uptime-kuma/Chart.yaml | 8 --- apps/uptime-kuma/values.yaml | 61 +++++++++-------- apps/watschn-studio/Chart.yaml | 8 --- apps/watschn-studio/values.yaml | 41 ++++++------ apps/wiki-js/Chart.yaml | 8 --- apps/wiki-js/values.yaml | 53 ++++++++------- bootstrap/argocd.yaml | 13 ++-- bootstrap/brgkepler-com.yaml | 13 ++-- bootstrap/brunner-ninja.yaml | 13 ++-- bootstrap/flaresolverr.yaml | 13 ++-- bootstrap/gschissenes-equipment.yaml | 13 ++-- bootstrap/immich-crack.yaml | 13 ++-- bootstrap/immichframe.yaml | 16 ++++- bootstrap/metallb-project.yaml | 1 + bootstrap/metallb.yaml | 11 +++- bootstrap/ombi.yaml | 13 ++-- bootstrap/pfostendynamics-com.yaml | 13 ++-- bootstrap/project.yaml | 4 ++ bootstrap/tautulli.yaml | 13 ++-- bootstrap/uptime-kuma.yaml | 13 ++-- bootstrap/watschn-studio.yaml | 13 ++-- bootstrap/wiki-js.yaml | 13 ++-- docs/chart-ownership.md | 29 +++++++++ scripts/update-chart-version.sh | 33 ++++++++++ scripts/update-immichframe-chart.sh | 36 ---------- 48 files changed, 441 insertions(+), 460 deletions(-) delete mode 100644 apps/argocd/Chart.yaml delete mode 100644 apps/brgkepler-com/Chart.yaml delete mode 100644 apps/brunner-ninja/Chart.yaml delete mode 100644 apps/flaresolverr/Chart.yaml delete mode 100644 apps/gschissenes-equipment/Chart.yaml delete mode 100644 apps/immich-crack/Chart.yaml delete mode 100644 apps/immichframe/Chart.yaml rename apps/immichframe/{templates => resources}/immichframe-api.yaml (99%) delete mode 100644 apps/metallb/kustomization.yaml rename apps/metallb/{resources.yaml => resources/address-pool.yaml} (100%) delete mode 100644 apps/ombi/Chart.yaml delete mode 100644 apps/pfostendynamics-com/Chart.yaml delete mode 100644 apps/tautulli/Chart.yaml delete mode 100644 apps/uptime-kuma/Chart.yaml delete mode 100644 apps/watschn-studio/Chart.yaml delete mode 100644 apps/wiki-js/Chart.yaml create mode 100644 docs/chart-ownership.md create mode 100644 scripts/update-chart-version.sh delete mode 100755 scripts/update-immichframe-chart.sh diff --git a/apps/argocd/Chart.yaml b/apps/argocd/Chart.yaml deleted file mode 100644 index d8b50bf..0000000 --- a/apps/argocd/Chart.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v2 -name: argocd -description: Self-managed Argo CD deployment for the homelab cluster -type: application -version: 0.1.0 -dependencies: -- name: argo-cd - version: 10.10.5 - repository: https://argoproj.github.io/argo-helm diff --git a/apps/argocd/values.yaml b/apps/argocd/values.yaml index 67b893b..702657b 100644 --- a/apps/argocd/values.yaml +++ b/apps/argocd/values.yaml @@ -1,11 +1,10 @@ -argo-cd: - global: +global: domain: cd.brunner.ninja - crds: +crds: install: true - configs: +configs: cm: oidc.config: | name: Authentik @@ -26,14 +25,14 @@ argo-cd: params: server.insecure: true - notifications: +notifications: secret: create: false - redisSecretInit: +redisSecretInit: enabled: false - server: +server: ingress: enabled: true annotations: diff --git a/apps/brgkepler-com/Chart.yaml b/apps/brgkepler-com/Chart.yaml deleted file mode 100644 index 7a87237..0000000 --- a/apps/brgkepler-com/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: brgkepler-com -type: application -version: 0.1.0 -dependencies: -- name: php-homepage - version: 0.10.1 - repository: https://brunner.ninja/charts diff --git a/apps/brgkepler-com/values.yaml b/apps/brgkepler-com/values.yaml index 34ad051..b0238e9 100644 --- a/apps/brgkepler-com/values.yaml +++ b/apps/brgkepler-com/values.yaml @@ -1,23 +1,22 @@ -php-homepage: - fullnameOverride: brgkepler-com - apache: - serverAdmin: daniel@brunner.ninja - metrics: +fullnameOverride: brgkepler-com +apache: + serverAdmin: daniel@brunner.ninja +metrics: + enabled: true + serviceMonitor: enabled: true - serviceMonitor: - enabled: true - prometheusRule: - enabled: true - persistence: - existingClaim: brgkepler-com - ingress: + prometheusRule: enabled: true - hosts: - - host: brgkepler.com - paths: - - path: / - pathType: Prefix - tls: - - hosts: - - brgkepler.com - secretName: brgkepler-com-tls +persistence: + existingClaim: brgkepler-com +ingress: + enabled: true + hosts: + - host: brgkepler.com + paths: + - path: / + pathType: Prefix + tls: + - hosts: + - brgkepler.com + secretName: brgkepler-com-tls diff --git a/apps/brunner-ninja/Chart.yaml b/apps/brunner-ninja/Chart.yaml deleted file mode 100644 index b339d93..0000000 --- a/apps/brunner-ninja/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: brunner-ninja -type: application -version: 0.1.0 -dependencies: -- name: php-homepage - version: 0.10.1 - repository: https://brunner.ninja/charts diff --git a/apps/brunner-ninja/values.yaml b/apps/brunner-ninja/values.yaml index df52fe8..08710f9 100644 --- a/apps/brunner-ninja/values.yaml +++ b/apps/brunner-ninja/values.yaml @@ -1,23 +1,22 @@ -php-homepage: - fullnameOverride: brunner-ninja - apache: - serverAdmin: daniel@brunner.ninja - metrics: +fullnameOverride: brunner-ninja +apache: + serverAdmin: daniel@brunner.ninja +metrics: + enabled: true + serviceMonitor: enabled: true - serviceMonitor: - enabled: true - prometheusRule: - enabled: true - persistence: - existingClaim: brunner-ninja - ingress: + prometheusRule: enabled: true - hosts: - - host: brunner.ninja - paths: - - path: / - pathType: Prefix - tls: - - hosts: - - brunner.ninja - secretName: brunner-ninja-tls +persistence: + existingClaim: brunner-ninja +ingress: + enabled: true + hosts: + - host: brunner.ninja + paths: + - path: / + pathType: Prefix + tls: + - hosts: + - brunner.ninja + secretName: brunner-ninja-tls diff --git a/apps/flaresolverr/Chart.yaml b/apps/flaresolverr/Chart.yaml deleted file mode 100644 index 494108f..0000000 --- a/apps/flaresolverr/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: flaresolverr-homelab -type: application -version: 0.1.0 -dependencies: -- name: flaresolverr - version: 6.2.0 - repository: https://k8s-home-lab.github.io/helm-charts/ diff --git a/apps/flaresolverr/values.yaml b/apps/flaresolverr/values.yaml index 3fcf885..04b6e06 100644 --- a/apps/flaresolverr/values.yaml +++ b/apps/flaresolverr/values.yaml @@ -1,13 +1,12 @@ -flaresolverr: - image: - tag: v3.5.2 - ingress: - main: - enabled: true - ingressClassName: traefik - hosts: - - host: flaresolverr.brunner.ninja - paths: - - path: / - annotations: - traefik.ingress.kubernetes.io/router.entrypoints: websecure +image: + tag: v3.5.2 +ingress: + main: + enabled: true + ingressClassName: traefik + hosts: + - host: flaresolverr.brunner.ninja + paths: + - path: / + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: websecure diff --git a/apps/gschissenes-equipment/Chart.yaml b/apps/gschissenes-equipment/Chart.yaml deleted file mode 100644 index 6f8ecc2..0000000 --- a/apps/gschissenes-equipment/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: gschissenes-equipment -type: application -version: 0.1.0 -dependencies: -- name: php-homepage - version: 0.10.1 - repository: https://brunner.ninja/charts diff --git a/apps/gschissenes-equipment/values.yaml b/apps/gschissenes-equipment/values.yaml index 8b5a003..3651350 100644 --- a/apps/gschissenes-equipment/values.yaml +++ b/apps/gschissenes-equipment/values.yaml @@ -1,23 +1,22 @@ -php-homepage: - fullnameOverride: gschissenes-equipment - apache: - serverAdmin: daniel@brunner.ninja - metrics: +fullnameOverride: gschissenes-equipment +apache: + serverAdmin: daniel@brunner.ninja +metrics: + enabled: true + serviceMonitor: enabled: true - serviceMonitor: - enabled: true - prometheusRule: - enabled: true - persistence: - existingClaim: gschissenes-equipment - ingress: + prometheusRule: enabled: true - hosts: - - host: gschissenes.equipment - paths: - - path: / - pathType: Prefix - tls: - - hosts: - - gschissenes.equipment - secretName: gschissenes-equipment-tls +persistence: + existingClaim: gschissenes-equipment +ingress: + enabled: true + hosts: + - host: gschissenes.equipment + paths: + - path: / + pathType: Prefix + tls: + - hosts: + - gschissenes.equipment + secretName: gschissenes-equipment-tls diff --git a/apps/immich-crack/Chart.yaml b/apps/immich-crack/Chart.yaml deleted file mode 100644 index bec004c..0000000 --- a/apps/immich-crack/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: immich-crack -type: application -version: 0.1.0 -dependencies: -- name: php-homepage - version: 0.10.1 - repository: https://brunner.ninja/charts diff --git a/apps/immich-crack/values.yaml b/apps/immich-crack/values.yaml index 319c159..5fb89df 100644 --- a/apps/immich-crack/values.yaml +++ b/apps/immich-crack/values.yaml @@ -1,20 +1,19 @@ -php-homepage: - fullnameOverride: immich-crack - apache: - serverAdmin: daniel@brunner.ninja - metrics: +fullnameOverride: immich-crack +apache: + serverAdmin: daniel@brunner.ninja +metrics: + enabled: true + serviceMonitor: enabled: true - serviceMonitor: - enabled: true - prometheusRule: - enabled: true - persistence: - existingClaim: immich-crack - ingress: + prometheusRule: enabled: true - hosts: - - host: immich-crack.brunner.ninja - paths: - - path: / - pathType: Prefix - tls: [] +persistence: + existingClaim: immich-crack +ingress: + enabled: true + hosts: + - host: immich-crack.brunner.ninja + paths: + - path: / + pathType: Prefix + tls: [] diff --git a/apps/immichframe/Chart.yaml b/apps/immichframe/Chart.yaml deleted file mode 100644 index 6bd983f..0000000 --- a/apps/immichframe/Chart.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v2 -name: immichframe -description: Cluster-specific ImmichFrame deployment -type: application -version: 0.1.0 -dependencies: -- name: immichframe - version: 0.2.1 - repository: https://brunner.ninja/charts diff --git a/apps/immichframe/templates/immichframe-api.yaml b/apps/immichframe/resources/immichframe-api.yaml similarity index 99% rename from apps/immichframe/templates/immichframe-api.yaml rename to apps/immichframe/resources/immichframe-api.yaml index 8988446..b567ab7 100644 --- a/apps/immichframe/templates/immichframe-api.yaml +++ b/apps/immichframe/resources/immichframe-api.yaml @@ -1,4 +1,3 @@ ---- apiVersion: bitnami.com/v1alpha1 kind: SealedSecret metadata: diff --git a/apps/immichframe/values.yaml b/apps/immichframe/values.yaml index 5b16ed1..babe639 100644 --- a/apps/immichframe/values.yaml +++ b/apps/immichframe/values.yaml @@ -1,13 +1,12 @@ -immichframe: - fullnameOverride: immichframe - replicaCount: 2 +fullnameOverride: immichframe +replicaCount: 2 - image: +image: pullPolicy: Always - timezone: Europe/Vienna +timezone: Europe/Vienna - config: +config: general: Interval: 15 ShowClock: false @@ -20,7 +19,7 @@ immichframe: Albums: - 489d6c4d-d175-45e0-aeae-e2791dfc9658 - ingress: +ingress: enabled: true className: traefik annotations: @@ -31,16 +30,16 @@ immichframe: - path: / pathType: Prefix - podDisruptionBudget: +podDisruptionBudget: enabled: true minAvailable: 1 - prometheusRule: +prometheusRule: enabled: true labels: release: prometheus - resources: +resources: requests: cpu: 10m memory: 256Mi diff --git a/apps/metallb/kustomization.yaml b/apps/metallb/kustomization.yaml deleted file mode 100644 index 0d22c38..0000000 --- a/apps/metallb/kustomization.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: -- https://raw.githubusercontent.com/metallb/metallb/v0.16.0/config/manifests/metallb-native.yaml -- resources.yaml diff --git a/apps/metallb/resources.yaml b/apps/metallb/resources/address-pool.yaml similarity index 100% rename from apps/metallb/resources.yaml rename to apps/metallb/resources/address-pool.yaml diff --git a/apps/ombi/Chart.yaml b/apps/ombi/Chart.yaml deleted file mode 100644 index c6386c2..0000000 --- a/apps/ombi/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: ombi-homelab -type: application -version: 0.1.0 -dependencies: -- name: ombi - version: 12.2.1 - repository: https://k8s-home-lab.github.io/helm-charts/ diff --git a/apps/ombi/values.yaml b/apps/ombi/values.yaml index fbf22a6..4070168 100644 --- a/apps/ombi/values.yaml +++ b/apps/ombi/values.yaml @@ -1,22 +1,21 @@ -ombi: - image: - tag: 4.53.10 - env: - TZ: Europe/Vienna - ingress: - main: - enabled: true - ingressClassName: traefik - hosts: - - host: ombi.brunner.ninja - paths: - - path: / - annotations: - traefik.ingress.kubernetes.io/router.middlewares: default-authentik@kubernetescrd - traefik.ingress.kubernetes.io/router.entrypoints: websecure - persistence: - config: - enabled: true - size: 1Gi - storageClass: rook-ceph-block - accessMode: ReadWriteOnce +image: + tag: 4.53.10 +env: + TZ: Europe/Vienna +ingress: + main: + enabled: true + ingressClassName: traefik + hosts: + - host: ombi.brunner.ninja + paths: + - path: / + annotations: + traefik.ingress.kubernetes.io/router.middlewares: default-authentik@kubernetescrd + traefik.ingress.kubernetes.io/router.entrypoints: websecure +persistence: + config: + enabled: true + size: 1Gi + storageClass: rook-ceph-block + accessMode: ReadWriteOnce diff --git a/apps/pfostendynamics-com/Chart.yaml b/apps/pfostendynamics-com/Chart.yaml deleted file mode 100644 index 9eeab2e..0000000 --- a/apps/pfostendynamics-com/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: pfostendynamics-com -type: application -version: 0.1.0 -dependencies: -- name: php-homepage - version: 0.10.1 - repository: https://brunner.ninja/charts diff --git a/apps/pfostendynamics-com/values.yaml b/apps/pfostendynamics-com/values.yaml index b1f5366..e998f85 100644 --- a/apps/pfostendynamics-com/values.yaml +++ b/apps/pfostendynamics-com/values.yaml @@ -1,14 +1,13 @@ -php-homepage: - fullnameOverride: pfostendynamics-com - apache: - serverAdmin: daniel@brunner.ninja - metrics: +fullnameOverride: pfostendynamics-com +apache: + serverAdmin: daniel@brunner.ninja +metrics: + enabled: true + serviceMonitor: enabled: true - serviceMonitor: - enabled: true - prometheusRule: - enabled: true - persistence: - existingClaim: pfostendynamics-com - ingress: - enabled: false + prometheusRule: + enabled: true +persistence: + existingClaim: pfostendynamics-com +ingress: + enabled: false diff --git a/apps/tautulli/Chart.yaml b/apps/tautulli/Chart.yaml deleted file mode 100644 index 12493cf..0000000 --- a/apps/tautulli/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: tautulli-homelab -type: application -version: 0.1.0 -dependencies: -- name: tautulli - version: 12.3.0 - repository: https://k8s-home-lab.github.io/helm-charts/ diff --git a/apps/tautulli/values.yaml b/apps/tautulli/values.yaml index d72db8e..8e44606 100644 --- a/apps/tautulli/values.yaml +++ b/apps/tautulli/values.yaml @@ -1,33 +1,32 @@ -tautulli: - image: - repository: lscr.io/linuxserver/tautulli - tag: 2.18.2 - env: - TZ: Europe/Vienna - ingress: - main: - enabled: true - ingressClassName: traefik - service: - name: main - port: http - hosts: - - host: tautulli.brunner.ninja - paths: - - path: / - pathType: Prefix - annotations: - traefik.ingress.kubernetes.io/router.middlewares: default-authentik@kubernetescrd - traefik.ingress.kubernetes.io/router.entrypoints: websecure - service: - main: - enabled: true - ports: - http: - port: 8181 - persistence: - config: - enabled: true - size: 60Gi - storageClass: rook-ceph-block - accessMode: ReadWriteOnce +image: + repository: lscr.io/linuxserver/tautulli + tag: 2.18.2 +env: + TZ: Europe/Vienna +ingress: + main: + enabled: true + ingressClassName: traefik + service: + name: main + port: http + hosts: + - host: tautulli.brunner.ninja + paths: + - path: / + pathType: Prefix + annotations: + traefik.ingress.kubernetes.io/router.middlewares: default-authentik@kubernetescrd + traefik.ingress.kubernetes.io/router.entrypoints: websecure +service: + main: + enabled: true + ports: + http: + port: 8181 +persistence: + config: + enabled: true + size: 60Gi + storageClass: rook-ceph-block + accessMode: ReadWriteOnce diff --git a/apps/uptime-kuma/Chart.yaml b/apps/uptime-kuma/Chart.yaml deleted file mode 100644 index e007df7..0000000 --- a/apps/uptime-kuma/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: uptime-kuma-homelab -type: application -version: 0.1.0 -dependencies: -- name: uptime-kuma - version: 4.2.0 - repository: https://helm.irsigler.cloud diff --git a/apps/uptime-kuma/values.yaml b/apps/uptime-kuma/values.yaml index a490226..4a295b4 100644 --- a/apps/uptime-kuma/values.yaml +++ b/apps/uptime-kuma/values.yaml @@ -1,31 +1,30 @@ -uptime-kuma: - image: - pullPolicy: Always - tag: 2.5.6-rootless - imagePullSecrets: - - name: quay-pull-secret - ingress: - enabled: true - className: traefik - annotations: - traefik.ingress.kubernetes.io/router.middlewares: default-authentik@kubernetescrd - traefik.ingress.kubernetes.io/router.entrypoints: websecure - hosts: - - host: status.brunner.ninja - paths: - - path: / - pathType: ImplementationSpecific - volume: - storageClassName: rook-ceph-block - strategy: - type: Recreate - readinessProbe: - timeoutSeconds: 5 - resources: - requests: - cpu: 100m - memory: 256Mi - ephemeral-storage: 128Mi - limits: - memory: 1Gi - ephemeral-storage: 1Gi +image: + pullPolicy: Always + tag: 2.5.6-rootless +imagePullSecrets: +- name: quay-pull-secret +ingress: + enabled: true + className: traefik + annotations: + traefik.ingress.kubernetes.io/router.middlewares: default-authentik@kubernetescrd + traefik.ingress.kubernetes.io/router.entrypoints: websecure + hosts: + - host: status.brunner.ninja + paths: + - path: / + pathType: ImplementationSpecific +volume: + storageClassName: rook-ceph-block +strategy: + type: Recreate +readinessProbe: + timeoutSeconds: 5 +resources: + requests: + cpu: 100m + memory: 256Mi + ephemeral-storage: 128Mi + limits: + memory: 1Gi + ephemeral-storage: 1Gi diff --git a/apps/watschn-studio/Chart.yaml b/apps/watschn-studio/Chart.yaml deleted file mode 100644 index 433a9fa..0000000 --- a/apps/watschn-studio/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: watschn-studio -type: application -version: 0.1.0 -dependencies: -- name: php-homepage - version: 0.10.1 - repository: https://brunner.ninja/charts diff --git a/apps/watschn-studio/values.yaml b/apps/watschn-studio/values.yaml index f2df959..720fd98 100644 --- a/apps/watschn-studio/values.yaml +++ b/apps/watschn-studio/values.yaml @@ -1,23 +1,22 @@ -php-homepage: - fullnameOverride: watschn-studio - apache: - serverAdmin: daniel@brunner.ninja - metrics: +fullnameOverride: watschn-studio +apache: + serverAdmin: daniel@brunner.ninja +metrics: + enabled: true + serviceMonitor: enabled: true - serviceMonitor: - enabled: true - prometheusRule: - enabled: true - persistence: - existingClaim: watschn-studio - ingress: + prometheusRule: enabled: true - hosts: - - host: watschn.studio - paths: - - path: / - pathType: Prefix - tls: - - hosts: - - watschn.studio - secretName: watschn-studio-tls +persistence: + existingClaim: watschn-studio +ingress: + enabled: true + hosts: + - host: watschn.studio + paths: + - path: / + pathType: Prefix + tls: + - hosts: + - watschn.studio + secretName: watschn-studio-tls diff --git a/apps/wiki-js/Chart.yaml b/apps/wiki-js/Chart.yaml deleted file mode 100644 index a32546b..0000000 --- a/apps/wiki-js/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: wiki-js-homelab -type: application -version: 0.1.0 -dependencies: -- name: wiki - version: 3.0.0 - repository: https://charts.js.wiki diff --git a/apps/wiki-js/values.yaml b/apps/wiki-js/values.yaml index 08012c7..92dc081 100644 --- a/apps/wiki-js/values.yaml +++ b/apps/wiki-js/values.yaml @@ -1,28 +1,27 @@ -wiki: - imagePullSecrets: - - name: quay-pull-secret - image: - repository: docker.io/requarks/wiki - tag: 2.5.316 - ingress: - enabled: true - className: traefik - hosts: - - host: wiki.brunner.ninja - paths: - - path: / - pathType: Prefix - annotations: - traefik.ingress.kubernetes.io/router.entrypoints: websecure - postgresql: +imagePullSecrets: +- name: quay-pull-secret +image: + repository: docker.io/requarks/wiki + tag: 2.5.316 +ingress: + enabled: true + className: traefik + hosts: + - host: wiki.brunner.ninja + paths: + - path: / + pathType: Prefix + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: websecure +postgresql: + enabled: false + persistence: enabled: false - persistence: - enabled: false - externalPostgresql: - host: postgresql.default.svc.cluster.local - port: "5432" - database: wikijs - username: wikijs - existingSecret: wiki-js - existingSecretKey: postgresql-password - ssl: false +externalPostgresql: + host: postgresql.default.svc.cluster.local + port: "5432" + database: wikijs + username: wikijs + existingSecret: wiki-js + existingSecretKey: postgresql-password + ssl: false diff --git a/bootstrap/argocd.yaml b/bootstrap/argocd.yaml index d9a5653..2dac7cc 100644 --- a/bootstrap/argocd.yaml +++ b/bootstrap/argocd.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: argocd - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/argocd + sources: + - repoURL: https://argoproj.github.io/argo-helm + chart: argo-cd + targetRevision: 10.10.5 helm: releaseName: argocd + valueFiles: + - $values/apps/argocd/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: argocd diff --git a/bootstrap/brgkepler-com.yaml b/bootstrap/brgkepler-com.yaml index 0d1b4e0..7b62160 100644 --- a/bootstrap/brgkepler-com.yaml +++ b/bootstrap/brgkepler-com.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/brgkepler-com + sources: + - repoURL: https://brunner.ninja/charts + chart: php-homepage + targetRevision: 0.10.1 helm: releaseName: brgkepler-com + valueFiles: + - \$values/apps/brgkepler-com/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/brunner-ninja.yaml b/bootstrap/brunner-ninja.yaml index 07e7fcc..f0fe13f 100644 --- a/bootstrap/brunner-ninja.yaml +++ b/bootstrap/brunner-ninja.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/brunner-ninja + sources: + - repoURL: https://brunner.ninja/charts + chart: php-homepage + targetRevision: 0.10.1 helm: releaseName: brunner-ninja + valueFiles: + - \$values/apps/brunner-ninja/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/flaresolverr.yaml b/bootstrap/flaresolverr.yaml index 49d7410..8bf119d 100644 --- a/bootstrap/flaresolverr.yaml +++ b/bootstrap/flaresolverr.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/flaresolverr + sources: + - repoURL: https://k8s-home-lab.github.io/helm-charts/ + chart: flaresolverr + targetRevision: 6.2.0 helm: releaseName: flaresolverr + valueFiles: + - \$values/apps/flaresolverr/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/gschissenes-equipment.yaml b/bootstrap/gschissenes-equipment.yaml index f77f037..df0bcb0 100644 --- a/bootstrap/gschissenes-equipment.yaml +++ b/bootstrap/gschissenes-equipment.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/gschissenes-equipment + sources: + - repoURL: https://brunner.ninja/charts + chart: php-homepage + targetRevision: 0.10.1 helm: releaseName: gschissenes-equipment + valueFiles: + - \$values/apps/gschissenes-equipment/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/immich-crack.yaml b/bootstrap/immich-crack.yaml index 30262c1..bd18aee 100644 --- a/bootstrap/immich-crack.yaml +++ b/bootstrap/immich-crack.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/immich-crack + sources: + - repoURL: https://brunner.ninja/charts + chart: php-homepage + targetRevision: 0.10.1 helm: releaseName: immich-crack + valueFiles: + - \$values/apps/immich-crack/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/immichframe.yaml b/bootstrap/immichframe.yaml index d581e80..eb147d1 100644 --- a/bootstrap/immichframe.yaml +++ b/bootstrap/immichframe.yaml @@ -5,10 +5,20 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + sources: + - repoURL: https://brunner.ninja/charts + chart: immichframe + targetRevision: 0.2.1 + helm: + releaseName: immichframe + valueFiles: + - $values/apps/immichframe/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git targetRevision: main - path: apps/immichframe + ref: values + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + path: apps/immichframe/resources destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/metallb-project.yaml b/bootstrap/metallb-project.yaml index 8c12e24..4d6a8a9 100644 --- a/bootstrap/metallb-project.yaml +++ b/bootstrap/metallb-project.yaml @@ -7,6 +7,7 @@ spec: description: MetalLB controller and site-specific L2 configuration sourceRepos: - https://code.brunner.ninja/feedc0de/homelab-gitops.git + - https://metallb.github.io/metallb destinations: - namespace: metallb-system server: https://kubernetes.default.svc diff --git a/bootstrap/metallb.yaml b/bootstrap/metallb.yaml index 575ce30..f9a6100 100644 --- a/bootstrap/metallb.yaml +++ b/bootstrap/metallb.yaml @@ -5,10 +5,15 @@ metadata: namespace: argocd spec: project: metallb - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + sources: + - repoURL: https://metallb.github.io/metallb + chart: metallb + targetRevision: 0.16.0 + helm: + releaseName: metallb + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git targetRevision: main - path: apps/metallb + path: apps/metallb/resources destination: server: https://kubernetes.default.svc namespace: metallb-system diff --git a/bootstrap/ombi.yaml b/bootstrap/ombi.yaml index 542fb97..a57656f 100644 --- a/bootstrap/ombi.yaml +++ b/bootstrap/ombi.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/ombi + sources: + - repoURL: https://k8s-home-lab.github.io/helm-charts/ + chart: ombi + targetRevision: 12.2.1 helm: releaseName: ombi + valueFiles: + - \$values/apps/ombi/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/pfostendynamics-com.yaml b/bootstrap/pfostendynamics-com.yaml index 4969add..ea0fb58 100644 --- a/bootstrap/pfostendynamics-com.yaml +++ b/bootstrap/pfostendynamics-com.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/pfostendynamics-com + sources: + - repoURL: https://brunner.ninja/charts + chart: php-homepage + targetRevision: 0.10.1 helm: releaseName: pfostendynamics-com + valueFiles: + - \$values/apps/pfostendynamics-com/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/project.yaml b/bootstrap/project.yaml index c55e0f1..3dd6ec2 100644 --- a/bootstrap/project.yaml +++ b/bootstrap/project.yaml @@ -7,6 +7,10 @@ spec: description: Applications managed from the public homelab GitOps repository sourceRepos: - https://code.brunner.ninja/feedc0de/homelab-gitops.git + - https://brunner.ninja/charts + - https://charts.js.wiki + - https://helm.irsigler.cloud + - https://k8s-home-lab.github.io/helm-charts/ destinations: - namespace: default server: https://kubernetes.default.svc diff --git a/bootstrap/tautulli.yaml b/bootstrap/tautulli.yaml index ab362a5..01544fe 100644 --- a/bootstrap/tautulli.yaml +++ b/bootstrap/tautulli.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/tautulli + sources: + - repoURL: https://k8s-home-lab.github.io/helm-charts/ + chart: tautulli + targetRevision: 12.3.0 helm: releaseName: tautulli + valueFiles: + - \$values/apps/tautulli/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/uptime-kuma.yaml b/bootstrap/uptime-kuma.yaml index 936b277..45f5288 100644 --- a/bootstrap/uptime-kuma.yaml +++ b/bootstrap/uptime-kuma.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/uptime-kuma + sources: + - repoURL: https://helm.irsigler.cloud + chart: uptime-kuma + targetRevision: 4.2.0 helm: releaseName: uptime-kuma + valueFiles: + - \$values/apps/uptime-kuma/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/watschn-studio.yaml b/bootstrap/watschn-studio.yaml index 8bab586..cbaa6ce 100644 --- a/bootstrap/watschn-studio.yaml +++ b/bootstrap/watschn-studio.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/watschn-studio + sources: + - repoURL: https://brunner.ninja/charts + chart: php-homepage + targetRevision: 0.10.1 helm: releaseName: watschn-studio + valueFiles: + - \$values/apps/watschn-studio/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/bootstrap/wiki-js.yaml b/bootstrap/wiki-js.yaml index ee15bcb..71d10ce 100644 --- a/bootstrap/wiki-js.yaml +++ b/bootstrap/wiki-js.yaml @@ -5,12 +5,17 @@ metadata: namespace: argocd spec: project: homelab - source: - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git - targetRevision: main - path: apps/wiki-js + sources: + - repoURL: https://charts.js.wiki + chart: wiki + targetRevision: 3.0.0 helm: releaseName: wiki-js + valueFiles: + - \$values/apps/wiki-js/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values destination: server: https://kubernetes.default.svc namespace: default diff --git a/docs/chart-ownership.md b/docs/chart-ownership.md new file mode 100644 index 0000000..004bbbc --- /dev/null +++ b/docs/chart-ownership.md @@ -0,0 +1,29 @@ +# Helm chart ownership and promotion + +This repository contains cluster policy and values, not application workload +implementations. Deployments, StatefulSets, Services, ports, probes, mount +paths, and configuration wiring belong to a published upstream or maintained +Helm chart outside this repository. + +Each independently versioned application has one chart and one Argo CD +Application. This includes each Artcraft application: WordCraft, GridCraft, +DeckCraft, PhotoCraft, LightCraft, VectorCraft, FilmCraft, EffectCraft, +DesignCraft, FigCraft, PdfCraft, SoundCraft, and CADCraft are separate releases, +not one suite chart. + +Maintained chart repositories set `Chart.yaml.appVersion` to the tested +application/image version. CI derives the chart package version from Git: + +- tag `v1.0.0` produces chart `1.0.0`; +- the next commit produces a unique version such as + `1.0.0-1-g41627abcdef`. + +The hash is retained to prevent package-version collisions. CI publishes to +`https://brunner.ninja/charts`, then uses `GITOPS_TOKEN` to update only the +matching Argo Application's exact Helm `targetRevision`. Argo CD performs the +deployment; chart CI never receives Kubernetes credentials. + +GitOps values may select namespaces, hostnames, ingress integration, existing +claims or storage classes/sizes, resource sizing, replica counts, monitoring +labels, and names of existing Secrets. They must not duplicate chart-owned +image versions or resource topology. diff --git a/scripts/update-chart-version.sh b/scripts/update-chart-version.sh new file mode 100644 index 0000000..905cc21 --- /dev/null +++ b/scripts/update-chart-version.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -eu + +if [ "$#" -ne 2 ]; then + echo "usage: $0 APPLICATION CHART_VERSION" >&2 + exit 2 +fi + +application=$1 +version=$2 +case "$application" in + ''|*[!a-z0-9-]*) echo "invalid application name: $application" >&2; exit 2 ;; +esac +case "$version" in + ''|*[!0-9A-Za-z.+-]*) echo "invalid chart version: $version" >&2; exit 2 ;; +esac + +file="bootstrap/${application}.yaml" +test -f "$file" +tmp=$(mktemp) +trap 'rm -f "$tmp"' EXIT + +awk -v version="$version" ' + $1 == "chart:" && !chart { chart=1 } + chart && $1 == "targetRevision:" && !updated { + sub(/targetRevision:.*/, "targetRevision: " version) + updated=1 + } + { print } + END { if (!updated) exit 3 } +' "$file" > "$tmp" +mv "$tmp" "$file" +trap - EXIT diff --git a/scripts/update-immichframe-chart.sh b/scripts/update-immichframe-chart.sh deleted file mode 100755 index bc0979a..0000000 --- a/scripts/update-immichframe-chart.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -set -eu - -if [ "$#" -ne 1 ] || ! printf '%s\n' "$1" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+([+-][0-9A-Za-z.-]+)?$'; then - echo "usage: $0 " >&2 - exit 2 -fi - -script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) -repository_dir=$(dirname -- "${script_dir}") -chart="${repository_dir}/apps/immichframe/Chart.yaml" -temporary="${chart}.tmp" - -awk -v version="$1" ' - /^- name: immichframe$/ { - dependency = 1 - } - dependency && /^ version: / { - if (updated) { - print "multiple immichframe dependency versions found" > "/dev/stderr" - exit 1 - } - print " version: " version - updated = 1 - dependency = 0 - next - } - { print } - END { - if (!updated) { - print "immichframe dependency version not found" > "/dev/stderr" - exit 1 - } - } -' "${chart}" > "${temporary}" -mv "${temporary}" "${chart}"