diff --git a/kubernetes/apps/database/influx/app/kustomization.yaml b/kubernetes/apps/database/influx/app/kustomization.yaml index e230adf20..09bc749a9 100644 --- a/kubernetes/apps/database/influx/app/kustomization.yaml +++ b/kubernetes/apps/database/influx/app/kustomization.yaml @@ -4,4 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/volsync diff --git a/kubernetes/apps/database/influx/ks.yaml b/kubernetes/apps/database/influx/ks.yaml index faab3dc11..0d5010991 100644 --- a/kubernetes/apps/database/influx/ks.yaml +++ b/kubernetes/apps/database/influx/ks.yaml @@ -10,6 +10,8 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/volsync path: ./kubernetes/apps/database/influx/app prune: true sourceRef: diff --git a/kubernetes/apps/default/atuin/app/kustomization.yaml b/kubernetes/apps/default/atuin/app/kustomization.yaml index adcaf40fc..5b48b4e26 100644 --- a/kubernetes/apps/default/atuin/app/kustomization.yaml +++ b/kubernetes/apps/default/atuin/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization namespace: default resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/atuin/ks.yaml b/kubernetes/apps/default/atuin/ks.yaml index f1381cdfe..3d4a4d87c 100644 --- a/kubernetes/apps/default/atuin/ks.yaml +++ b/kubernetes/apps/default/atuin/ks.yaml @@ -10,11 +10,15 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/atuin/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/authelia/app/kustomization.yaml b/kubernetes/apps/default/authelia/app/kustomization.yaml index 059e16abb..7b2c604f2 100644 --- a/kubernetes/apps/default/authelia/app/kustomization.yaml +++ b/kubernetes/apps/default/authelia/app/kustomization.yaml @@ -5,7 +5,6 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/external configMapGenerator: - name: authelia-configmap files: diff --git a/kubernetes/apps/default/authelia/ks.yaml b/kubernetes/apps/default/authelia/ks.yaml index e2164dd8d..d70976de3 100644 --- a/kubernetes/apps/default/authelia/ks.yaml +++ b/kubernetes/apps/default/authelia/ks.yaml @@ -12,14 +12,19 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: dragonfly-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets + components: + - ../../../../components/gatus/external path: ./kubernetes/apps/default/authelia/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/bazarr/app/kustomization.yaml b/kubernetes/apps/default/bazarr/app/kustomization.yaml index b1d0b6b73..7f0970297 100644 --- a/kubernetes/apps/default/bazarr/app/kustomization.yaml +++ b/kubernetes/apps/default/bazarr/app/kustomization.yaml @@ -6,8 +6,6 @@ namespace: default resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync configMapGenerator: - name: bazarr-scripts files: diff --git a/kubernetes/apps/default/bazarr/ks.yaml b/kubernetes/apps/default/bazarr/ks.yaml index 4aad6e616..d86df63e4 100644 --- a/kubernetes/apps/default/bazarr/ks.yaml +++ b/kubernetes/apps/default/bazarr/ks.yaml @@ -12,15 +12,22 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/bazarr/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/calibre/app/kustomization.yaml b/kubernetes/apps/default/calibre/app/kustomization.yaml index afadd96bd..4aa74b27c 100644 --- a/kubernetes/apps/default/calibre/app/kustomization.yaml +++ b/kubernetes/apps/default/calibre/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization namespace: default resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/calibre/ks.yaml b/kubernetes/apps/default/calibre/ks.yaml index 205e733d7..988a2306d 100644 --- a/kubernetes/apps/default/calibre/ks.yaml +++ b/kubernetes/apps/default/calibre/ks.yaml @@ -14,12 +14,18 @@ spec: - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/calibre/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/exercisediary/app/kustomization.yaml b/kubernetes/apps/default/exercisediary/app/kustomization.yaml index 68984b3ba..4aa74b27c 100644 --- a/kubernetes/apps/default/exercisediary/app/kustomization.yaml +++ b/kubernetes/apps/default/exercisediary/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization namespace: default resources: - ./helmrelease.yaml - - ../../../../components/gatus/external - - ../../../../components/volsync diff --git a/kubernetes/apps/default/exercisediary/ks.yaml b/kubernetes/apps/default/exercisediary/ks.yaml index 5091d6af5..df6b9e9f2 100644 --- a/kubernetes/apps/default/exercisediary/ks.yaml +++ b/kubernetes/apps/default/exercisediary/ks.yaml @@ -10,14 +10,20 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/external + - ../../../../components/volsync path: ./kubernetes/apps/default/exercisediary/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/flaresolverr/ks.yaml b/kubernetes/apps/default/flaresolverr/ks.yaml index f4d67f64b..8db7a7c28 100644 --- a/kubernetes/apps/default/flaresolverr/ks.yaml +++ b/kubernetes/apps/default/flaresolverr/ks.yaml @@ -15,6 +15,7 @@ spec: sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/flood/app/kustomization.yaml b/kubernetes/apps/default/flood/app/kustomization.yaml index 44d709772..d6adbe135 100644 --- a/kubernetes/apps/default/flood/app/kustomization.yaml +++ b/kubernetes/apps/default/flood/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/flood/ks.yaml b/kubernetes/apps/default/flood/ks.yaml index 8e2e26d8e..a5d244d50 100644 --- a/kubernetes/apps/default/flood/ks.yaml +++ b/kubernetes/apps/default/flood/ks.yaml @@ -15,11 +15,16 @@ spec: namespace: external-secrets - name: qbittorrent - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/flood/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/freshrss/app/kustomization.yaml b/kubernetes/apps/default/freshrss/app/kustomization.yaml index 44d709772..d6adbe135 100644 --- a/kubernetes/apps/default/freshrss/app/kustomization.yaml +++ b/kubernetes/apps/default/freshrss/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/freshrss/ks.yaml b/kubernetes/apps/default/freshrss/ks.yaml index b26cee199..8a04a9b51 100644 --- a/kubernetes/apps/default/freshrss/ks.yaml +++ b/kubernetes/apps/default/freshrss/ks.yaml @@ -10,15 +10,20 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/freshrss/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: external-secrets-stores namespace: external-secrets - name: volsync + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/frigate/app/kustomization.yaml b/kubernetes/apps/default/frigate/app/kustomization.yaml index b55fd838d..d1d7e42d9 100644 --- a/kubernetes/apps/default/frigate/app/kustomization.yaml +++ b/kubernetes/apps/default/frigate/app/kustomization.yaml @@ -6,8 +6,6 @@ namespace: default resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync configMapGenerator: - name: frigate-configmap files: diff --git a/kubernetes/apps/default/frigate/ks.yaml b/kubernetes/apps/default/frigate/ks.yaml index 587161b38..7d3a39501 100644 --- a/kubernetes/apps/default/frigate/ks.yaml +++ b/kubernetes/apps/default/frigate/ks.yaml @@ -14,11 +14,16 @@ spec: - name: external-secrets-stores namespace: external-secrets - name: node-feature-discovery-rules + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/frigate/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/ghostfolio/app/kustomization.yaml b/kubernetes/apps/default/ghostfolio/app/kustomization.yaml index 2740e00c8..d6adbe135 100644 --- a/kubernetes/apps/default/ghostfolio/app/kustomization.yaml +++ b/kubernetes/apps/default/ghostfolio/app/kustomization.yaml @@ -5,4 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded diff --git a/kubernetes/apps/default/ghostfolio/ks.yaml b/kubernetes/apps/default/ghostfolio/ks.yaml index 30ed5b913..fdc2bfc42 100644 --- a/kubernetes/apps/default/ghostfolio/ks.yaml +++ b/kubernetes/apps/default/ghostfolio/ks.yaml @@ -10,16 +10,21 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded path: ./kubernetes/apps/default/ghostfolio/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: dragonfly-cluster + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/hajimari/app/kustomization.yaml b/kubernetes/apps/default/hajimari/app/kustomization.yaml index db575b725..09bc749a9 100644 --- a/kubernetes/apps/default/hajimari/app/kustomization.yaml +++ b/kubernetes/apps/default/hajimari/app/kustomization.yaml @@ -4,4 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded diff --git a/kubernetes/apps/default/hajimari/ks.yaml b/kubernetes/apps/default/hajimari/ks.yaml index b9a5db6ad..89f7acce6 100644 --- a/kubernetes/apps/default/hajimari/ks.yaml +++ b/kubernetes/apps/default/hajimari/ks.yaml @@ -10,11 +10,14 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded path: ./kubernetes/apps/default/hajimari/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/home-assistant/app/kustomization.yaml b/kubernetes/apps/default/home-assistant/app/kustomization.yaml index 876d58a8e..0736b1247 100644 --- a/kubernetes/apps/default/home-assistant/app/kustomization.yaml +++ b/kubernetes/apps/default/home-assistant/app/kustomization.yaml @@ -5,5 +5,3 @@ resources: - ./externalsecret.yaml - ./helmrelease.yaml - ./podmonitor.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/home-assistant/code/kustomization.yaml b/kubernetes/apps/default/home-assistant/code/kustomization.yaml index bd3d4e9c7..5b48b4e26 100644 --- a/kubernetes/apps/default/home-assistant/code/kustomization.yaml +++ b/kubernetes/apps/default/home-assistant/code/kustomization.yaml @@ -5,4 +5,3 @@ kind: Kustomization namespace: default resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded diff --git a/kubernetes/apps/default/home-assistant/ks.yaml b/kubernetes/apps/default/home-assistant/ks.yaml index 097ddc348..6eed093cc 100644 --- a/kubernetes/apps/default/home-assistant/ks.yaml +++ b/kubernetes/apps/default/home-assistant/ks.yaml @@ -12,14 +12,20 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/home-assistant/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m @@ -43,11 +49,14 @@ spec: app.kubernetes.io/name: &app home-assistant dependsOn: - name: home-assistant + components: + - ../../../../components/gatus/guarded path: ./kubernetes/apps/default/home-assistant/code prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/homebox/app/kustomization.yaml b/kubernetes/apps/default/homebox/app/kustomization.yaml index a102b1c1a..09bc749a9 100644 --- a/kubernetes/apps/default/homebox/app/kustomization.yaml +++ b/kubernetes/apps/default/homebox/app/kustomization.yaml @@ -4,5 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/homebox/ks.yaml b/kubernetes/apps/default/homebox/ks.yaml index 77d14e8fe..fa73dd7fb 100644 --- a/kubernetes/apps/default/homebox/ks.yaml +++ b/kubernetes/apps/default/homebox/ks.yaml @@ -10,11 +10,15 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/homebox/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/homelab/ks.yaml b/kubernetes/apps/default/homelab/ks.yaml index bdd86a132..cdf3d6141 100644 --- a/kubernetes/apps/default/homelab/ks.yaml +++ b/kubernetes/apps/default/homelab/ks.yaml @@ -15,6 +15,7 @@ spec: sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m @@ -39,6 +40,7 @@ spec: sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m @@ -63,6 +65,7 @@ spec: sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m @@ -87,6 +90,7 @@ spec: sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/homepage/app/kustomization.yaml b/kubernetes/apps/default/homepage/app/kustomization.yaml index e1825ebc1..741d66326 100644 --- a/kubernetes/apps/default/homepage/app/kustomization.yaml +++ b/kubernetes/apps/default/homepage/app/kustomization.yaml @@ -6,7 +6,6 @@ resources: - ./externalsecret.yaml - ./helmrelease.yaml - ./rbac.yaml - - ../../../../components/gatus/guarded configMapGenerator: - name: homepage-config files: diff --git a/kubernetes/apps/default/homepage/ks.yaml b/kubernetes/apps/default/homepage/ks.yaml index 1086bc87c..7a3509ee1 100644 --- a/kubernetes/apps/default/homepage/ks.yaml +++ b/kubernetes/apps/default/homepage/ks.yaml @@ -10,11 +10,14 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded path: ./kubernetes/apps/default/homepage/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/jellyfin/app/kustomization.yaml b/kubernetes/apps/default/jellyfin/app/kustomization.yaml index 68984b3ba..4aa74b27c 100644 --- a/kubernetes/apps/default/jellyfin/app/kustomization.yaml +++ b/kubernetes/apps/default/jellyfin/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization namespace: default resources: - ./helmrelease.yaml - - ../../../../components/gatus/external - - ../../../../components/volsync diff --git a/kubernetes/apps/default/jellyfin/ks.yaml b/kubernetes/apps/default/jellyfin/ks.yaml index a9540505f..94ee73e7d 100644 --- a/kubernetes/apps/default/jellyfin/ks.yaml +++ b/kubernetes/apps/default/jellyfin/ks.yaml @@ -12,14 +12,20 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: rook-ceph-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/external + - ../../../../components/volsync path: ./kubernetes/apps/default/jellyfin/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/jellyseerr/app/kustomization.yaml b/kubernetes/apps/default/jellyseerr/app/kustomization.yaml index 293b99756..f7b65fc38 100644 --- a/kubernetes/apps/default/jellyseerr/app/kustomization.yaml +++ b/kubernetes/apps/default/jellyseerr/app/kustomization.yaml @@ -6,6 +6,4 @@ namespace: default resources: # - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/external - - ../../../../components/volsync - ./pvc.yaml diff --git a/kubernetes/apps/default/jellyseerr/ks.yaml b/kubernetes/apps/default/jellyseerr/ks.yaml index fdef7b83a..dfe7df04d 100644 --- a/kubernetes/apps/default/jellyseerr/ks.yaml +++ b/kubernetes/apps/default/jellyseerr/ks.yaml @@ -12,14 +12,20 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: rook-ceph-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/jellyseerr/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/joplin/app/kustomization.yaml b/kubernetes/apps/default/joplin/app/kustomization.yaml index b09ca642e..d6adbe135 100644 --- a/kubernetes/apps/default/joplin/app/kustomization.yaml +++ b/kubernetes/apps/default/joplin/app/kustomization.yaml @@ -5,4 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/external diff --git a/kubernetes/apps/default/joplin/ks.yaml b/kubernetes/apps/default/joplin/ks.yaml index 49ab7dccf..dbf09d70e 100644 --- a/kubernetes/apps/default/joplin/ks.yaml +++ b/kubernetes/apps/default/joplin/ks.yaml @@ -10,13 +10,17 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/external path: ./kubernetes/apps/default/joplin/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets wait: false diff --git a/kubernetes/apps/default/komf/app/kustomization.yaml b/kubernetes/apps/default/komf/app/kustomization.yaml index 46ea563dc..239f74391 100644 --- a/kubernetes/apps/default/komf/app/kustomization.yaml +++ b/kubernetes/apps/default/komf/app/kustomization.yaml @@ -6,7 +6,6 @@ namespace: default resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/volsync configMapGenerator: - name: komf-configmap files: diff --git a/kubernetes/apps/default/komf/ks.yaml b/kubernetes/apps/default/komf/ks.yaml index 9efb722e4..0a5ef37ee 100644 --- a/kubernetes/apps/default/komf/ks.yaml +++ b/kubernetes/apps/default/komf/ks.yaml @@ -14,12 +14,17 @@ spec: - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/volsync path: ./kubernetes/apps/default/komf/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/komga/app/kustomization.yaml b/kubernetes/apps/default/komga/app/kustomization.yaml index afadd96bd..4aa74b27c 100644 --- a/kubernetes/apps/default/komga/app/kustomization.yaml +++ b/kubernetes/apps/default/komga/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization namespace: default resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/komga/ks.yaml b/kubernetes/apps/default/komga/ks.yaml index b93ec27c9..1f109a8c0 100644 --- a/kubernetes/apps/default/komga/ks.yaml +++ b/kubernetes/apps/default/komga/ks.yaml @@ -14,12 +14,18 @@ spec: - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/komga/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/kustomization.yaml b/kubernetes/apps/default/kustomization.yaml index e0a2140cf..20940cc1b 100644 --- a/kubernetes/apps/default/kustomization.yaml +++ b/kubernetes/apps/default/kustomization.yaml @@ -2,10 +2,10 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/kustomization.json apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization +namespace: default +components: + - ../../components/common resources: - # Pre Flux-Kustomizations - - ./namespace.yaml - # Flux-Kustomizations - ./atuin/ks.yaml - ./authelia/ks.yaml - ./bazarr/ks.yaml @@ -50,6 +50,7 @@ resources: - ./unifi/ks.yaml - ./vaultwarden/ks.yaml - ./vikunja/ks.yaml + - ./webhook/ks.yaml - ./zigbee2mqtt/ks.yaml - ./zwave-js-ui/ks.yaml # Default resources diff --git a/kubernetes/apps/default/libmedium/app/kustomization.yaml b/kubernetes/apps/default/libmedium/app/kustomization.yaml index b1ba7d5c4..c2ec1a871 100644 --- a/kubernetes/apps/default/libmedium/app/kustomization.yaml +++ b/kubernetes/apps/default/libmedium/app/kustomization.yaml @@ -4,7 +4,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/external configMapGenerator: - name: libmedium-configmap files: diff --git a/kubernetes/apps/default/libmedium/ks.yaml b/kubernetes/apps/default/libmedium/ks.yaml index d5e940763..80c969deb 100644 --- a/kubernetes/apps/default/libmedium/ks.yaml +++ b/kubernetes/apps/default/libmedium/ks.yaml @@ -10,7 +10,8 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app - + components: + - ../../../../components/gatus/external path: ./kubernetes/apps/default/libmedium/app dependsOn: - name: external-secrets-stores @@ -19,6 +20,7 @@ spec: sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/lidarr/app/externalsecret.yaml b/kubernetes/apps/default/lidarr/app/externalsecret.yaml index 068f2b134..e3d3db7b2 100644 --- a/kubernetes/apps/default/lidarr/app/externalsecret.yaml +++ b/kubernetes/apps/default/lidarr/app/externalsecret.yaml @@ -15,7 +15,7 @@ spec: engineVersion: v2 data: LIDARR__API_KEY: "{{ .LIDARR__API_KEY }}" - PUSHOVER_API_TOKEN: "{{ .PUSHOVER_API_TOKEN }}" + PUSHOVER_API_TOKEN: "{{ .LIDARR_PUSHOVER_TOKEN }}" PUSHOVER_USER_KEY: "{{ .PUSHOVER_USER_KEY }}" dataFrom: - extract: diff --git a/kubernetes/apps/default/lidarr/app/kustomization.yaml b/kubernetes/apps/default/lidarr/app/kustomization.yaml index 7ce718111..0ba97d235 100644 --- a/kubernetes/apps/default/lidarr/app/kustomization.yaml +++ b/kubernetes/apps/default/lidarr/app/kustomization.yaml @@ -6,8 +6,6 @@ namespace: default resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync configMapGenerator: - name: lidarr-pushover files: diff --git a/kubernetes/apps/default/lidarr/ks.yaml b/kubernetes/apps/default/lidarr/ks.yaml index 581e703f9..ebeeaf615 100644 --- a/kubernetes/apps/default/lidarr/ks.yaml +++ b/kubernetes/apps/default/lidarr/ks.yaml @@ -10,18 +10,24 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app - dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/lidarr/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/linkding/app/kustomization.yaml b/kubernetes/apps/default/linkding/app/kustomization.yaml index 44d709772..d6adbe135 100644 --- a/kubernetes/apps/default/linkding/app/kustomization.yaml +++ b/kubernetes/apps/default/linkding/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/linkding/ks.yaml b/kubernetes/apps/default/linkding/ks.yaml index e6f164905..1f65b9494 100644 --- a/kubernetes/apps/default/linkding/ks.yaml +++ b/kubernetes/apps/default/linkding/ks.yaml @@ -10,11 +10,15 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/linkding/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: external-secrets-stores namespace: external-secrets diff --git a/kubernetes/apps/default/lldap/app/kustomization.yaml b/kubernetes/apps/default/lldap/app/kustomization.yaml index 2740e00c8..d6adbe135 100644 --- a/kubernetes/apps/default/lldap/app/kustomization.yaml +++ b/kubernetes/apps/default/lldap/app/kustomization.yaml @@ -5,4 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded diff --git a/kubernetes/apps/default/lldap/ks.yaml b/kubernetes/apps/default/lldap/ks.yaml index fe1066c3f..2ee98cd9c 100644 --- a/kubernetes/apps/default/lldap/ks.yaml +++ b/kubernetes/apps/default/lldap/ks.yaml @@ -10,13 +10,17 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded path: ./kubernetes/apps/default/lldap/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/lms/app/kustomization.yaml b/kubernetes/apps/default/lms/app/kustomization.yaml index a102b1c1a..09bc749a9 100644 --- a/kubernetes/apps/default/lms/app/kustomization.yaml +++ b/kubernetes/apps/default/lms/app/kustomization.yaml @@ -4,5 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/lms/ks.yaml b/kubernetes/apps/default/lms/ks.yaml index 5a804e4c9..46539ad98 100644 --- a/kubernetes/apps/default/lms/ks.yaml +++ b/kubernetes/apps/default/lms/ks.yaml @@ -12,11 +12,16 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/lms/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/lychee/app/kustomization.yaml b/kubernetes/apps/default/lychee/app/kustomization.yaml index fe1cab0c3..8bdcc99a0 100644 --- a/kubernetes/apps/default/lychee/app/kustomization.yaml +++ b/kubernetes/apps/default/lychee/app/kustomization.yaml @@ -6,5 +6,3 @@ resources: - ./externalsecret.yaml - ./helmrelease.yaml - ./sync - - ../../../../components/gatus/external - - ../../../../components/volsync diff --git a/kubernetes/apps/default/lychee/ks.yaml b/kubernetes/apps/default/lychee/ks.yaml index f4c0d590e..b631203b8 100644 --- a/kubernetes/apps/default/lychee/ks.yaml +++ b/kubernetes/apps/default/lychee/ks.yaml @@ -10,18 +10,26 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/external + - ../../../../components/volsync path: ./kubernetes/apps/default/lychee/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: dragonfly-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/namespace.yaml b/kubernetes/apps/default/namespace.yaml deleted file mode 100644 index 01c3e5f0f..000000000 --- a/kubernetes/apps/default/namespace.yaml +++ /dev/null @@ -1,38 +0,0 @@ ---- -apiVersion: v1 -kind: Namespace -metadata: - name: default - labels: - kustomize.toolkit.fluxcd.io/prune: disabled - volsync.backube/privileged-movers: "true" ---- -# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/notification.toolkit.fluxcd.io/provider_v1beta3.json -apiVersion: notification.toolkit.fluxcd.io/v1beta3 -kind: Provider -metadata: - name: alert-manager - namespace: default -spec: - type: alertmanager - address: http://kube-prometheus-stack-alertmanager.observability:9093/api/v2/alerts/ ---- -# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/notification.toolkit.fluxcd.io/alert_v1beta3.json -apiVersion: notification.toolkit.fluxcd.io/v1beta3 -kind: Alert -metadata: - name: alert-manager - namespace: default -spec: - providerRef: - name: alert-manager - eventSeverity: error - eventSources: - - kind: HelmRelease - name: "*" - exclusionList: - - "error.*lookup github\\.com" - - "error.*lookup raw\\.githubusercontent\\.com" - - "dial.*tcp.*timeout" - - "waiting.*socket" - suspend: false diff --git a/kubernetes/apps/default/navidrome/app/kustomization.yaml b/kubernetes/apps/default/navidrome/app/kustomization.yaml index 68984b3ba..4aa74b27c 100644 --- a/kubernetes/apps/default/navidrome/app/kustomization.yaml +++ b/kubernetes/apps/default/navidrome/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization namespace: default resources: - ./helmrelease.yaml - - ../../../../components/gatus/external - - ../../../../components/volsync diff --git a/kubernetes/apps/default/navidrome/ks.yaml b/kubernetes/apps/default/navidrome/ks.yaml index e304acdb5..3f8da9c5b 100644 --- a/kubernetes/apps/default/navidrome/ks.yaml +++ b/kubernetes/apps/default/navidrome/ks.yaml @@ -14,12 +14,18 @@ spec: - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/external + - ../../../../components/volsync path: ./kubernetes/apps/default/navidrome/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/outline/app/kustomization.yaml b/kubernetes/apps/default/outline/app/kustomization.yaml index 2740e00c8..d6adbe135 100644 --- a/kubernetes/apps/default/outline/app/kustomization.yaml +++ b/kubernetes/apps/default/outline/app/kustomization.yaml @@ -5,4 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded diff --git a/kubernetes/apps/default/outline/ks.yaml b/kubernetes/apps/default/outline/ks.yaml index c0ec21774..59ee78161 100644 --- a/kubernetes/apps/default/outline/ks.yaml +++ b/kubernetes/apps/default/outline/ks.yaml @@ -10,14 +10,19 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded path: ./kubernetes/apps/default/outline/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: dragonfly-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets wait: false diff --git a/kubernetes/apps/default/paperless/app/kustomization.yaml b/kubernetes/apps/default/paperless/app/kustomization.yaml index 2740e00c8..d6adbe135 100644 --- a/kubernetes/apps/default/paperless/app/kustomization.yaml +++ b/kubernetes/apps/default/paperless/app/kustomization.yaml @@ -5,4 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded diff --git a/kubernetes/apps/default/paperless/ks.yaml b/kubernetes/apps/default/paperless/ks.yaml index 699f5e487..431cf60da 100644 --- a/kubernetes/apps/default/paperless/ks.yaml +++ b/kubernetes/apps/default/paperless/ks.yaml @@ -10,14 +10,19 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded path: ./kubernetes/apps/default/paperless/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: dragonfly-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets wait: false diff --git a/kubernetes/apps/default/prowlarr/app/externalsecret.yaml b/kubernetes/apps/default/prowlarr/app/externalsecret.yaml index 96a6242aa..9adb8e5c9 100644 --- a/kubernetes/apps/default/prowlarr/app/externalsecret.yaml +++ b/kubernetes/apps/default/prowlarr/app/externalsecret.yaml @@ -13,7 +13,7 @@ spec: template: data: PROWLARR__AUTH__APIKEY: "{{ .PROWLARR__API_KEY }}" - PUSHOVER_API_TOKEN: "{{ .PUSHOVER_API_TOKEN }}" + PUSHOVER_API_TOKEN: "{{ .PROWLARR_PUSHOVER_TOKEN }}" PUSHOVER_USER_KEY: "{{ .PUSHOVER_USER_KEY }}" dataFrom: - extract: diff --git a/kubernetes/apps/default/prowlarr/app/kustomization.yaml b/kubernetes/apps/default/prowlarr/app/kustomization.yaml index 2740e00c8..d6adbe135 100644 --- a/kubernetes/apps/default/prowlarr/app/kustomization.yaml +++ b/kubernetes/apps/default/prowlarr/app/kustomization.yaml @@ -5,4 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded diff --git a/kubernetes/apps/default/prowlarr/ks.yaml b/kubernetes/apps/default/prowlarr/ks.yaml index b99f89d53..017ec751f 100644 --- a/kubernetes/apps/default/prowlarr/ks.yaml +++ b/kubernetes/apps/default/prowlarr/ks.yaml @@ -12,13 +12,17 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets + components: + - ../../../../components/gatus/guarded path: ./kubernetes/apps/default/prowlarr/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/qbittorrent/app/kustomization.yaml b/kubernetes/apps/default/qbittorrent/app/kustomization.yaml index deca5380c..d275ad833 100644 --- a/kubernetes/apps/default/qbittorrent/app/kustomization.yaml +++ b/kubernetes/apps/default/qbittorrent/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization resources: - ./helmrelease.yaml - ./upgrade-p2pblocklist - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/qbittorrent/ks.yaml b/kubernetes/apps/default/qbittorrent/ks.yaml index 809defc15..f4235d049 100644 --- a/kubernetes/apps/default/qbittorrent/ks.yaml +++ b/kubernetes/apps/default/qbittorrent/ks.yaml @@ -12,12 +12,18 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/qbittorrent/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/radarr/app/externalsecret.yaml b/kubernetes/apps/default/radarr/app/externalsecret.yaml index d645ba056..ab4bd011e 100644 --- a/kubernetes/apps/default/radarr/app/externalsecret.yaml +++ b/kubernetes/apps/default/radarr/app/externalsecret.yaml @@ -14,7 +14,7 @@ spec: template: data: RADARR__AUTH__APIKEY: "{{ .RADARR__API_KEY }}" - PUSHOVER_API_TOKEN: "{{ .PUSHOVER_API_TOKEN }}" + PUSHOVER_API_TOKEN: "{{ .RADARR_PUSHOVER_TOKEN }}" PUSHOVER_USER_KEY: "{{ .PUSHOVER_USER_KEY }}" dataFrom: - extract: diff --git a/kubernetes/apps/default/radarr/app/kustomization.yaml b/kubernetes/apps/default/radarr/app/kustomization.yaml index 4783298dc..04e8fa80c 100644 --- a/kubernetes/apps/default/radarr/app/kustomization.yaml +++ b/kubernetes/apps/default/radarr/app/kustomization.yaml @@ -6,8 +6,6 @@ namespace: default resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync configMapGenerator: - name: radarr-pushover files: diff --git a/kubernetes/apps/default/radarr/ks.yaml b/kubernetes/apps/default/radarr/ks.yaml index 201924752..49534be36 100644 --- a/kubernetes/apps/default/radarr/ks.yaml +++ b/kubernetes/apps/default/radarr/ks.yaml @@ -12,15 +12,22 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/radarr/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/readeck/app/kustomization.yaml b/kubernetes/apps/default/readeck/app/kustomization.yaml index a102b1c1a..09bc749a9 100644 --- a/kubernetes/apps/default/readeck/app/kustomization.yaml +++ b/kubernetes/apps/default/readeck/app/kustomization.yaml @@ -4,5 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/readeck/ks.yaml b/kubernetes/apps/default/readeck/ks.yaml index a06c1270f..5088ef83a 100644 --- a/kubernetes/apps/default/readeck/ks.yaml +++ b/kubernetes/apps/default/readeck/ks.yaml @@ -12,12 +12,18 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/readeck/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/recyclarr/app/externalsecret.yaml b/kubernetes/apps/default/recyclarr/app/externalsecret.yaml index cfbec49e6..7a70d7dde 100644 --- a/kubernetes/apps/default/recyclarr/app/externalsecret.yaml +++ b/kubernetes/apps/default/recyclarr/app/externalsecret.yaml @@ -13,7 +13,7 @@ spec: template: engineVersion: v2 data: - PUSHOVER_URL: pover://{{ .PUSHOVER_USER_KEY }}@{{ .PUSHOVER_API_TOKEN }} + PUSHOVER_URL: pover://{{ .PUSHOVER_USER_KEY }}@{{ .RECYCLARR_PUSHOVER_TOKEN }} RADARR_API_KEY: "{{ .RADARR__API_KEY }}" SONARR_API_KEY: "{{ .SONARR__API_KEY }}" dataFrom: @@ -25,7 +25,7 @@ spec: property: SONARR__API_KEY - extract: key: recyclarr - property: PUSHOVER_API_TOKEN + property: RECYCLARR_PUSHOVER_TOKEN - extract: key: pushover property: PUSHOVER_USER_KEY diff --git a/kubernetes/apps/default/recyclarr/app/kustomization.yaml b/kubernetes/apps/default/recyclarr/app/kustomization.yaml index 0ecfcb95f..4b74d94f8 100644 --- a/kubernetes/apps/default/recyclarr/app/kustomization.yaml +++ b/kubernetes/apps/default/recyclarr/app/kustomization.yaml @@ -5,7 +5,6 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/volsync configMapGenerator: - name: recyclarr-configmap files: diff --git a/kubernetes/apps/default/recyclarr/ks.yaml b/kubernetes/apps/default/recyclarr/ks.yaml index 085a1640b..3d5512a15 100644 --- a/kubernetes/apps/default/recyclarr/ks.yaml +++ b/kubernetes/apps/default/recyclarr/ks.yaml @@ -13,11 +13,14 @@ spec: dependsOn: - name: radarr - name: sonarr + components: + - ../../../../components/volsync path: ./kubernetes/apps/default/recyclarr/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/redlib/app/kustomization.yaml b/kubernetes/apps/default/redlib/app/kustomization.yaml index 197a01a14..4aa74b27c 100644 --- a/kubernetes/apps/default/redlib/app/kustomization.yaml +++ b/kubernetes/apps/default/redlib/app/kustomization.yaml @@ -5,4 +5,3 @@ kind: Kustomization namespace: default resources: - ./helmrelease.yaml - - ../../../../components/gatus/external diff --git a/kubernetes/apps/default/redlib/ks.yaml b/kubernetes/apps/default/redlib/ks.yaml index 164c950f4..6db6eaa8c 100644 --- a/kubernetes/apps/default/redlib/ks.yaml +++ b/kubernetes/apps/default/redlib/ks.yaml @@ -10,11 +10,14 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/external path: ./kubernetes/apps/default/redlib/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/sabnzbd/app/kustomization.yaml b/kubernetes/apps/default/sabnzbd/app/kustomization.yaml index 44d709772..d6adbe135 100644 --- a/kubernetes/apps/default/sabnzbd/app/kustomization.yaml +++ b/kubernetes/apps/default/sabnzbd/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/sabnzbd/ks.yaml b/kubernetes/apps/default/sabnzbd/ks.yaml index 22e426aca..a15a266e1 100644 --- a/kubernetes/apps/default/sabnzbd/ks.yaml +++ b/kubernetes/apps/default/sabnzbd/ks.yaml @@ -14,12 +14,18 @@ spec: - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/sabnzbd/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/sharry/app/kustomization.yaml b/kubernetes/apps/default/sharry/app/kustomization.yaml index 8a4eed78a..2c4ba0af9 100644 --- a/kubernetes/apps/default/sharry/app/kustomization.yaml +++ b/kubernetes/apps/default/sharry/app/kustomization.yaml @@ -5,8 +5,6 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/external - - ../../../../components/volsync configMapGenerator: - name: sharry-configmap files: diff --git a/kubernetes/apps/default/sharry/ks.yaml b/kubernetes/apps/default/sharry/ks.yaml index 11792490e..0b79d8da9 100644 --- a/kubernetes/apps/default/sharry/ks.yaml +++ b/kubernetes/apps/default/sharry/ks.yaml @@ -10,11 +10,15 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/external + - ../../../../components/volsync path: ./kubernetes/apps/default/sharry/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/smtp-relay/ks.yaml b/kubernetes/apps/default/smtp-relay/ks.yaml index 9ee38bba3..83baaf0e8 100644 --- a/kubernetes/apps/default/smtp-relay/ks.yaml +++ b/kubernetes/apps/default/smtp-relay/ks.yaml @@ -18,6 +18,7 @@ spec: sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/sonarr/app/externalsecret.yaml b/kubernetes/apps/default/sonarr/app/externalsecret.yaml index 02fb62e4d..8277acb01 100644 --- a/kubernetes/apps/default/sonarr/app/externalsecret.yaml +++ b/kubernetes/apps/default/sonarr/app/externalsecret.yaml @@ -14,7 +14,7 @@ spec: template: data: SONARR__AUTH__APIKEY: "{{ .SONARR__API_KEY }}" - PUSHOVER_TOKEN: "{{ .PUSHOVER_API_TOKEN }}" + PUSHOVER_TOKEN: "{{ .SONARR_PUSHOVER_TOKEN }}" PUSHOVER_USER_KEY: "{{ .PUSHOVER_USER_KEY }}" dataFrom: - extract: diff --git a/kubernetes/apps/default/sonarr/app/kustomization.yaml b/kubernetes/apps/default/sonarr/app/kustomization.yaml index 1d24cd29f..73ff2e563 100644 --- a/kubernetes/apps/default/sonarr/app/kustomization.yaml +++ b/kubernetes/apps/default/sonarr/app/kustomization.yaml @@ -6,8 +6,6 @@ namespace: default resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync configMapGenerator: - name: sonarr-pushover files: diff --git a/kubernetes/apps/default/sonarr/ks.yaml b/kubernetes/apps/default/sonarr/ks.yaml index 006ef4ebd..06ff03730 100644 --- a/kubernetes/apps/default/sonarr/ks.yaml +++ b/kubernetes/apps/default/sonarr/ks.yaml @@ -12,15 +12,22 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/sonarr/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/tandoor/app/kustomization.yaml b/kubernetes/apps/default/tandoor/app/kustomization.yaml index 4110c45d4..5b0fd1916 100644 --- a/kubernetes/apps/default/tandoor/app/kustomization.yaml +++ b/kubernetes/apps/default/tandoor/app/kustomization.yaml @@ -6,8 +6,6 @@ namespace: default resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync configMapGenerator: - name: tandoor-configmap files: diff --git a/kubernetes/apps/default/tandoor/ks.yaml b/kubernetes/apps/default/tandoor/ks.yaml index a2875903a..b99810ba7 100644 --- a/kubernetes/apps/default/tandoor/ks.yaml +++ b/kubernetes/apps/default/tandoor/ks.yaml @@ -10,17 +10,24 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/tandoor/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/tdarr/app/kustomization.yaml b/kubernetes/apps/default/tdarr/app/kustomization.yaml index a102b1c1a..09bc749a9 100644 --- a/kubernetes/apps/default/tdarr/app/kustomization.yaml +++ b/kubernetes/apps/default/tdarr/app/kustomization.yaml @@ -4,5 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/tdarr/ks.yaml b/kubernetes/apps/default/tdarr/ks.yaml index b1141cf65..c466b32d2 100644 --- a/kubernetes/apps/default/tdarr/ks.yaml +++ b/kubernetes/apps/default/tdarr/ks.yaml @@ -13,12 +13,18 @@ spec: dependsOn: - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/tdarr/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m @@ -47,6 +53,7 @@ spec: sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/unifi/app/kustomization.yaml b/kubernetes/apps/default/unifi/app/kustomization.yaml index a102b1c1a..09bc749a9 100644 --- a/kubernetes/apps/default/unifi/app/kustomization.yaml +++ b/kubernetes/apps/default/unifi/app/kustomization.yaml @@ -4,5 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/unifi/ks.yaml b/kubernetes/apps/default/unifi/ks.yaml index 220c9d2c9..7bdff9624 100644 --- a/kubernetes/apps/default/unifi/ks.yaml +++ b/kubernetes/apps/default/unifi/ks.yaml @@ -12,12 +12,18 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/unifi/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/vaultwarden/app/kustomization.yaml b/kubernetes/apps/default/vaultwarden/app/kustomization.yaml index 6af961030..d6adbe135 100644 --- a/kubernetes/apps/default/vaultwarden/app/kustomization.yaml +++ b/kubernetes/apps/default/vaultwarden/app/kustomization.yaml @@ -5,5 +5,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/external - - ../../../../components/volsync diff --git a/kubernetes/apps/default/vaultwarden/ks.yaml b/kubernetes/apps/default/vaultwarden/ks.yaml index db697dfbc..e2713c2df 100644 --- a/kubernetes/apps/default/vaultwarden/ks.yaml +++ b/kubernetes/apps/default/vaultwarden/ks.yaml @@ -10,17 +10,24 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/external + - ../../../../components/volsync path: ./kubernetes/apps/default/vaultwarden/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/vikunja/app/kustomization.yaml b/kubernetes/apps/default/vikunja/app/kustomization.yaml index 8766572f9..de6b65489 100644 --- a/kubernetes/apps/default/vikunja/app/kustomization.yaml +++ b/kubernetes/apps/default/vikunja/app/kustomization.yaml @@ -5,7 +5,5 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/external - - ../../../../components/volsync generatorOptions: disableNameSuffixHash: true diff --git a/kubernetes/apps/default/vikunja/ks.yaml b/kubernetes/apps/default/vikunja/ks.yaml index 30826af02..3df0998c5 100644 --- a/kubernetes/apps/default/vikunja/ks.yaml +++ b/kubernetes/apps/default/vikunja/ks.yaml @@ -10,17 +10,24 @@ spec: commonMetadata: labels: app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/external + - ../../../../components/volsync path: ./kubernetes/apps/default/vikunja/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system dependsOn: - name: crunchy-postgres-operator-cluster + namespace: flux-system - name: external-secrets-stores namespace: external-secrets - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/webhook/app/externalsecret.yaml b/kubernetes/apps/default/webhook/app/externalsecret.yaml new file mode 100644 index 000000000..69cfb9d11 --- /dev/null +++ b/kubernetes/apps/default/webhook/app/externalsecret.yaml @@ -0,0 +1,27 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/external-secrets.io/externalsecret_v1.json +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: webhook +spec: + secretStoreRef: + kind: ClusterSecretStore + name: onepassword-connect + target: + name: webhook-secret + template: + data: + JELLYSEERR_PUSHOVER_URL: pover://{{ .PUSHOVER_USER_KEY }}@{{ .JELLYSEERR_PUSHOVER_TOKEN }} + RADARR_PUSHOVER_URL: pover://{{ .PUSHOVER_USER_KEY }}@{{ .RADARR_PUSHOVER_TOKEN }} + SONARR_PUSHOVER_URL: pover://{{ .PUSHOVER_USER_KEY }}@{{ .SONARR_PUSHOVER_TOKEN }} + SONARR_API_KEY: "{{ .SONARR__API_KEY }}" + dataFrom: + - extract: + key: jellyseerr + - extract: + key: radarr + - extract: + key: sonarr + - extract: + key: pushover diff --git a/kubernetes/apps/default/webhook/app/helmrelease.yaml b/kubernetes/apps/default/webhook/app/helmrelease.yaml new file mode 100644 index 000000000..1a7023457 --- /dev/null +++ b/kubernetes/apps/default/webhook/app/helmrelease.yaml @@ -0,0 +1,79 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/bjw-s/helm-charts/main/charts/other/app-template/schemas/helmrelease-helm-v2.schema.json +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: &app webhook +spec: + interval: 1h + chartRef: + kind: OCIRepository + name: app-template + install: + remediation: + retries: -1 + upgrade: + cleanupOnFail: true + remediation: + retries: 3 + values: + controllers: + webhook: + replicas: 2 + strategy: RollingUpdate + annotations: + reloader.stakater.com/auto: "true" + containers: + app: + image: + repository: ghcr.io/home-operations/webhook + tag: 2.8.2@sha256:052e3d82aa13091459faa75550943faf06309c0ca71253ea1cece7880b1d5faa + env: + WEBHOOK__PORT: &port 8080 + TZ: ${TIMEZONE} + envFrom: + - secretRef: + name: webhook-secret + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: { drop: ["ALL"] } + resources: + requests: + cpu: 100m + limits: + memory: 256Mi + defaultPodOptions: + securityContext: + runAsNonRoot: true + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + service: + app: + controller: webhook + ports: + http: + port: *port + ingress: + app: + enabled: true + className: internal + hosts: + - host: &host "{{ .Release.Name }}.${SECRET_EXTERNAL_DOMAIN}" + paths: + - path: / + service: + identifier: app + port: *port + tls: + - hosts: + - *host + persistence: + config: + type: configMap + name: webhook-configmap + defaultMode: 0775 + globalMounts: + - readOnly: true diff --git a/kubernetes/apps/default/webhook/app/kustomization.yaml b/kubernetes/apps/default/webhook/app/kustomization.yaml new file mode 100644 index 000000000..23e7a0a56 --- /dev/null +++ b/kubernetes/apps/default/webhook/app/kustomization.yaml @@ -0,0 +1,20 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./externalsecret.yaml + - ./helmrelease.yaml +configMapGenerator: + - name: webhook-configmap + files: + - hooks.yaml=./resources/hooks.yaml + - jellyseerr-pushover.sh=./resources/jellyseerr-pushover.sh + - radarr-pushover.sh=./resources/radarr-pushover.sh + - sonarr-pushover.sh=./resources/sonarr-pushover.sh + - sonarr-refresh-series.sh=./resources/sonarr-refresh-series.sh + - sonarr-tag-codecs.sh=./resources/sonarr-tag-codecs.sh +generatorOptions: + disableNameSuffixHash: true + annotations: + kustomize.toolkit.fluxcd.io/substitute: disabled diff --git a/kubernetes/apps/default/webhook/app/resources/hooks.yaml b/kubernetes/apps/default/webhook/app/resources/hooks.yaml new file mode 100644 index 000000000..87ba998ef --- /dev/null +++ b/kubernetes/apps/default/webhook/app/resources/hooks.yaml @@ -0,0 +1,109 @@ +--- +- id: jellyseerr-pushover + execute-command: /config/jellyseerr-pushover.sh + command-working-directory: /config + pass-arguments-to-command: + - source: string + name: '{{ getenv "JELLYSEERR_PUSHOVER_URL" }}' + - source: entire-payload + +- id: radarr-pushover + execute-command: /config/radarr-pushover.sh + command-working-directory: /config + pass-environment-to-command: + - envname: RADARR_PUSHOVER_URL + source: string + name: '{{ getenv "RADARR_PUSHOVER_URL" }}' + - envname: RADARR_EVENT_TYPE + source: payload + name: eventType + - envname: RADARR_APPLICATION_URL + source: payload + name: applicationUrl + - envname: RADARR_MOVIE_TITLE + source: payload + name: movie.title + - envname: RADARR_MOVIE_YEAR + source: payload + name: movie.year + - envname: RADARR_MOVIE_OVERVIEW + source: payload + name: movie.overview + - envname: RADARR_MOVIE_TMDB_ID + source: payload + name: movie.tmdbId + - envname: RADARR_DOWNLOAD_CLIENT + source: payload + name: downloadClient + +- id: sonarr-pushover + execute-command: /config/sonarr-pushover.sh + command-working-directory: /config + pass-environment-to-command: + - envname: SONARR_PUSHOVER_URL + source: string + name: '{{ getenv "SONARR_PUSHOVER_URL" }}' + - envname: SONARR_EVENT_TYPE + source: payload + name: eventType + - envname: SONARR_APPLICATION_URL + source: payload + name: applicationUrl + - envname: SONARR_SERIES_TITLE + source: payload + name: series.title + - envname: SONARR_SERIES_TITLE_SLUG + source: payload + name: series.titleSlug + - envname: SONARR_EPISODE_TITLE + source: payload + name: episodes.0.title + - envname: SONARR_EPISODE_SEASON_NUMBER + source: payload + name: episodes.0.seasonNumber + - envname: SONARR_EPISODE_NUMBER + source: payload + name: episodes.0.episodeNumber + - envname: SONARR_DOWNLOAD_CLIENT + source: payload + name: downloadClient + +- id: sonarr-refresh-series + execute-command: /config/sonarr-refresh-series.sh + command-working-directory: /config + pass-environment-to-command: + - envname: SONARR_REMOTE_ADDR + source: request + name: remote-addr + - envname: SONARR_API_KEY + source: string + name: '{{ getenv "SONARR_API_KEY" }}' + - envname: SONARR_EVENT_TYPE + source: payload + name: eventType + - envname: SONARR_SERIES_ID + source: payload + name: series.id + - envname: SONARR_SERIES_TITLE + source: payload + name: series.title + +- id: sonarr-tag-codecs + execute-command: /config/sonarr-tag-codecs.sh + command-working-directory: /config + pass-environment-to-command: + - envname: SONARR_REMOTE_ADDR + source: request + name: remote-addr + - envname: SONARR_API_KEY + source: string + name: '{{ getenv "SONARR_API_KEY" }}' + - envname: SONARR_EVENT_TYPE + source: payload + name: eventType + - envname: SONARR_SERIES_ID + source: payload + name: series.id + - envname: SONARR_SERIES_TITLE + source: payload + name: series.title diff --git a/kubernetes/apps/default/webhook/app/resources/jellyseerr-pushover.sh b/kubernetes/apps/default/webhook/app/resources/jellyseerr-pushover.sh new file mode 100644 index 000000000..9f1d65df9 --- /dev/null +++ b/kubernetes/apps/default/webhook/app/resources/jellyseerr-pushover.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +JELLYSEERR_PUSHOVER_URL=${1:?} +PAYLOAD=${2:?} + +echo "[DEBUG] Payload: ${PAYLOAD}" + +function _jq() { + jq --raw-output "${1:?}" <<<"${PAYLOAD}" +} + +function notify() { + local type="$(_jq '.notification_type')" + + if [[ "${type}" == "TEST_NOTIFICATION" ]]; then + printf -v PUSHOVER_TITLE "Test Notification" + printf -v PUSHOVER_MESSAGE "Howdy this is a test notification from %s" "Jellyseerr" + printf -v PUSHOVER_URL "%s" "https://requests.devbu.io" + printf -v PUSHOVER_URL_TITLE "Open %s" "Jellyseerr" + printf -v PUSHOVER_PRIORITY "%s" "low" + fi + + apprise -vv --title "${PUSHOVER_TITLE}" --body "${PUSHOVER_MESSAGE}" --input-format html \ + "${JELLYSEERR_PUSHOVER_URL}?url=${PUSHOVER_URL}&url_title=${PUSHOVER_URL_TITLE}&priority=${PUSHOVER_PRIORITY}&format=html" +} + +function main() { + notify +} + +main "$@" diff --git a/kubernetes/apps/default/webhook/app/resources/radarr-pushover.sh b/kubernetes/apps/default/webhook/app/resources/radarr-pushover.sh new file mode 100644 index 000000000..6ca00ba74 --- /dev/null +++ b/kubernetes/apps/default/webhook/app/resources/radarr-pushover.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +function notify() { + if [[ "${RADARR_EVENT_TYPE}" == "Test" ]]; then + printf -v PUSHOVER_TITLE "Test Notification" + printf -v PUSHOVER_MESSAGE "Howdy this is a test notification" + printf -v PUSHOVER_URL "%s" "${RADARR_APPLICATION_URL}" + printf -v PUSHOVER_URL_TITLE "View Movies" + printf -v PUSHOVER_PRIORITY "low" + elif [[ "${RADARR_EVENT_TYPE}" == "ManualInteractionRequired" ]]; then + printf -v PUSHOVER_TITLE "Movie Requires Manual Interaction" + printf -v PUSHOVER_MESSAGE "%s (%s)\nClient: %s" \ + "${RADARR_MOVIE_TITLE}" \ + "${RADARR_MOVIE_YEAR}" \ + "${RADARR_DOWNLOAD_CLIENT}" + printf -v PUSHOVER_URL "%s/activity/queue" "${RADARR_APPLICATION_URL}" + printf -v PUSHOVER_URL_TITLE "View Queue" + printf -v PUSHOVER_PRIORITY "high" + elif [[ "${RADARR_EVENT_TYPE}" == "Download" ]]; then + printf -v PUSHOVER_TITLE "Movie Added" + printf -v PUSHOVER_MESSAGE "%s (%s)\n%s\n\nClient: %s" \ + "${RADARR_MOVIE_TITLE}" \ + "${RADARR_MOVIE_YEAR}" \ + "${RADARR_MOVIE_OVERVIEW}" \ + "${RADARR_DOWNLOAD_CLIENT}" + printf -v PUSHOVER_URL "%s/movie/%s" \ + "${RADARR_APPLICATION_URL}" \ + "${RADARR_MOVIE_TMDB_ID}" + printf -v PUSHOVER_URL_TITLE "View Movie" + printf -v PUSHOVER_PRIORITY "low" + fi + + apprise -vv --title "${PUSHOVER_TITLE}" --body "${PUSHOVER_MESSAGE}" --input-format html \ + "${RADARR_PUSHOVER_URL}?url=${PUSHOVER_URL}&url_title=${PUSHOVER_URL_TITLE}&priority=${PUSHOVER_PRIORITY}&format=html" +} + +function main() { + notify +} + +main "$@" diff --git a/kubernetes/apps/default/webhook/app/resources/sonarr-pushover.sh b/kubernetes/apps/default/webhook/app/resources/sonarr-pushover.sh new file mode 100644 index 000000000..aa078ab4e --- /dev/null +++ b/kubernetes/apps/default/webhook/app/resources/sonarr-pushover.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +function notify() { + if [[ "${SONARR_EVENT_TYPE}" == "Test" ]]; then + printf -v PUSHOVER_TITLE "Test Notification" + printf -v PUSHOVER_MESSAGE "Howdy this is a test notification" + printf -v PUSHOVER_URL "%s" "${SONARR_APPLICATION_URL}" + printf -v PUSHOVER_URL_TITLE "View Series" + printf -v PUSHOVER_PRIORITY "low" + elif [[ "${SONARR_EVENT_TYPE}" == "ManualInteractionRequired" ]]; then + printf -v PUSHOVER_TITLE "Episode Requires Manual Interaction" + printf -v PUSHOVER_MESSAGE "%s\nClient: %s" \ + "${SONARR_SERIES_TITLE}" \ + "${SONARR_DOWNLOAD_CLIENT}" + printf -v PUSHOVER_URL "%s/activity/queue" "${SONARR_APPLICATION_URL}" + printf -v PUSHOVER_URL_TITLE "View Queue" + printf -v PUSHOVER_PRIORITY "high" + elif [[ "${SONARR_EVENT_TYPE}" == "Download" ]]; then + printf -v PUSHOVER_TITLE "Episode Added" + printf -v PUSHOVER_MESSAGE "%s (S%02dE%02d)\n%s\n\nClient: %s" \ + "${SONARR_SERIES_TITLE}" \ + "${SONARR_EPISODE_SEASON_NUMBER}" \ + "${SONARR_EPISODE_NUMBER}" \ + "${SONARR_EPISODE_TITLE}" \ + "${SONARR_DOWNLOAD_CLIENT}" + printf -v PUSHOVER_URL "%s/series/%s" \ + "${SONARR_APPLICATION_URL}" \ + "${SONARR_SERIES_TITLE_SLUG}" + printf -v PUSHOVER_URL_TITLE "View Series" + printf -v PUSHOVER_PRIORITY "low" + fi + + apprise -vv --title "${PUSHOVER_TITLE}" --body "${PUSHOVER_MESSAGE}" --input-format html \ + "${SONARR_PUSHOVER_URL}?url=${PUSHOVER_URL}&url_title=${PUSHOVER_URL_TITLE}&priority=${PUSHOVER_PRIORITY}&format=html" +} + +function main() { + notify +} + +main "$@" diff --git a/kubernetes/apps/default/webhook/app/resources/sonarr-refresh-series.sh b/kubernetes/apps/default/webhook/app/resources/sonarr-refresh-series.sh new file mode 100644 index 000000000..9655bd8e8 --- /dev/null +++ b/kubernetes/apps/default/webhook/app/resources/sonarr-refresh-series.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +function refresh() { + if [[ "${SONARR_EVENT_TYPE}" == "Test" ]]; then + echo "[DEBUG] test event received from ${SONARR_REMOTE_ADDR}, nothing to do ..." + elif [[ "${SONARR_EVENT_TYPE}" == "Grab" ]]; then + episodes=$( + curl -fsSL --header "X-Api-Key: ${SONARR_API_KEY}" "http://${SONARR_REMOTE_ADDR}/api/v3/episode?seriesId=${SERIES_ID}" | + jq --raw-output '[.[] | select((.title == "TBA") or (.title == "TBD"))] | length' + ) + if ((episodes > 0)); then + echo "[INFO] episode titles found with TBA/TBD titles, refreshing series ${SONARR_SERIES_TITLE} ..." + curl -fsSL --request POST \ + --header "X-Api-Key: ${SONARR_API_KEY}" \ + --header "Content-Type: application/json" \ + --data-binary "$(jo name=RefreshSeries seriesId="${SERIES_ID}")" \ + "http://${SONARR_REMOTE_ADDR}/api/v3/command" &>/dev/null + fi + fi +} + +function main() { + refresh +} + +main "$@" diff --git a/kubernetes/apps/default/webhook/app/resources/sonarr-tag-codecs.sh b/kubernetes/apps/default/webhook/app/resources/sonarr-tag-codecs.sh new file mode 100644 index 000000000..906077281 --- /dev/null +++ b/kubernetes/apps/default/webhook/app/resources/sonarr-tag-codecs.sh @@ -0,0 +1,148 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +# Cache existing tags once at the start +declare -A TAG_CACHE + +# Function to cache existing tags +function cache_existing_tags() { + existing_tags_cache=$(curl -fsSL --header "X-Api-Key: ${SONARR_API_KEY}" "http://${SONARR_REMOTE_ADDR}/api/v3/tag") + while IFS=":" read -r id label; do + TAG_CACHE["$id"]="$label" + done < <(echo "${existing_tags_cache}" | jq --raw-output '.[] | "\(.id):\(.label)"') +} + +# Function to get codec tags for a series +function get_codec_tags() { + local series_id=$1 + + # Extract and map codecs in one pass + local codecs + codecs=$( + curl -fsSL --header "X-Api-Key: ${SONARR_API_KEY}" "http://${SONARR_REMOTE_ADDR}/api/v3/episodefile?seriesId=${series_id}" | jq --raw-output ' + [ + .[] | + (.mediaInfo.videoCodec // "other" | + gsub("x"; "h") | ascii_downcase | + if test("hevc") then "h265" + elif test("divx|mpeg2|xvid") then "h264" + elif test("av1") then "av1" + elif test("h264|h265") then . else "other" end + ) | "codec:" + . + ] | unique | .[]' + ) + + echo "${codecs[@]}" +} + +# Function to check if a tag exists, if not create it and return the tag ID +function get_or_create_tag_id() { + local tag_label=$1 + local tag_id + + # Search cached tags + tag_id=$(echo "${existing_tags_cache}" | jq --raw-output ".[] | select(.label == \"${tag_label}\") | .id") + + # If tag doesn't exist, create it + if [[ -z "${tag_id}" ]]; then + local new_tag + new_tag=$(curl -fsSL --request POST --header "X-Api-Key: ${SONARR_API_KEY}" --header "Content-Type: application/json" --data "$(jo label="${tag_label}")" "http://${SONARR_REMOTE_ADDR}/api/v3/tag") + tag_id=$(echo "${new_tag}" | jq --raw-output '.id') + + # Update cache + existing_tags_cache=$(echo "${existing_tags_cache}" | jq ". += [{\"id\": ${tag_id}, \"label\": \"${tag_label}\"}]") + TAG_CACHE["$tag_id"]="${tag_label}" + fi + + echo "${tag_id}" +} + +# Function to update series tags in bulk +function update_series_tags() { + local series_data="$1" + local codecs="$2" + + # Get the current series tags + local series_tags + series_tags=$(echo "$series_data" | jq --raw-output '.tags') + + # Track tags to add/remove + local tags_to_add=() + local tags_to_remove=() + + # Identify tags to add + for codec in $codecs; do + local tag_id + tag_id=$(get_or_create_tag_id "${codec}") + if ! echo "${series_tags}" | jq --exit-status ". | index(${tag_id})" &>/dev/null; then + tags_to_add+=("$tag_id") + fi + done + + # Identify tags to remove + for tag_id in $(echo "${series_tags}" | jq --raw-output '.[]'); do + local tag_label="${TAG_CACHE[$tag_id]}" + if [[ -n "${tag_label}" && ! " ${codecs} " =~ ${tag_label} ]] && [[ "${tag_label}" =~ codec:.* ]]; then + tags_to_remove+=("$tag_id") + fi + done + + if [[ ${#tags_to_add[@]} -gt 0 ]]; then + series_data=$(echo "${series_data}" | jq --argjson add_tags "$(printf '%s\n' "${tags_to_add[@]}" | jq --raw-input . | jq --slurp 'map(tonumber)')" '.tags = (.tags + $add_tags | unique)') + fi + + if [[ ${#tags_to_remove[@]} -gt 0 ]]; then + series_data=$(echo "${series_data}" | jq --argjson remove_tags "$(printf '%s\n' "${tags_to_remove[@]}" | jq --raw-input . | jq --slurp 'map(tonumber)')" '.tags |= map(select(. as $tag | $remove_tags | index($tag) | not))') + fi + + echo "${series_data}" +} + +function tag() { + if [[ "${SONARR_EVENT_TYPE}" == "Test" ]]; then + echo "[DEBUG] test event received from ${SONARR_REMOTE_ADDR}, nothing to do ..." + elif [[ "${SONARR_EVENT_TYPE}" == "Download" ]]; then + cache_existing_tags + + local orig_series_data + orig_series_data=$(curl -fsSL --header "X-Api-Key: ${SONARR_API_KEY}" "http://${SONARR_REMOTE_ADDR}/api/v3/series/${SONARR_SERIES_ID}") + + local series_episode_file_count + series_episode_file_count=$(echo "${orig_series_data}" | jq --raw-output '.statistics.episodeFileCount') + + if [[ "${series_episode_file_count}" == "null" || "${series_episode_file_count}" -eq 0 ]]; then + echo "Skipping ${SONARR_SERIES_TITLE} (ID: ${SONARR_SERIES_ID}) due to no episode files" + exit 0 + fi + + # Get unique codecs for the series + local codecs + codecs=$(get_codec_tags "${SONARR_SERIES_ID}") + + # Update the series tags + local updated_series_data + updated_series_data=$(update_series_tags "${orig_series_data}" "${codecs}") + + local orig_tags updated_tags + orig_tags=$(echo "${orig_series_data}" | jq --compact-output '.tags') + updated_tags=$(echo "${updated_series_data}" | jq --compact-output '.tags') + + if [[ "${orig_tags}" == "${updated_tags}" ]]; then + echo "[INFO] skipping ${SONARR_SERIES_TITLE} (ID: ${SONARR_SERIES_ID}, Tags: [${codecs//$'\n'/,}]) due to no changes" + exit 0 + fi + + echo "[INFO] updating ${SONARR_SERIES_TITLE} (ID: ${SONARR_SERIES_ID}, Tags: [${codecs//$'\n'/,}])" + + curl -fsSL --header "X-Api-Key: ${SONARR_API_KEY}" \ + --request PUT \ + --header "Content-Type: application/json" \ + --data "${updated_series_data}" "http://${SONARR_REMOTE_ADDR}/api/v3/series" &>/dev/null + fi +} + +function main() { + tag +} + +main "$@" diff --git a/kubernetes/apps/default/webhook/ks.yaml b/kubernetes/apps/default/webhook/ks.yaml new file mode 100644 index 000000000..b2c5307ed --- /dev/null +++ b/kubernetes/apps/default/webhook/ks.yaml @@ -0,0 +1,27 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/kustomize.toolkit.fluxcd.io/kustomization_v1.json +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app webhook + namespace: &namespace default +spec: + commonMetadata: + labels: + app.kubernetes.io/name: *app + components: + - ../../../../components/gatus/guarded + interval: 1h + path: ./kubernetes/apps/default/webhook/app + postBuild: + substitute: + APP: *app + prune: true + retryInterval: 2m + sourceRef: + kind: GitRepository + name: home-ops-kubernetes + namespace: flux-system + targetNamespace: *namespace + timeout: 5m + wait: false diff --git a/kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml b/kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml index adc4cd03c..f06a8e56e 100644 --- a/kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml +++ b/kubernetes/apps/default/zigbee2mqtt/app/kustomization.yaml @@ -4,5 +4,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/zigbee2mqtt/ks.yaml b/kubernetes/apps/default/zigbee2mqtt/ks.yaml index e39245054..00047bba1 100644 --- a/kubernetes/apps/default/zigbee2mqtt/ks.yaml +++ b/kubernetes/apps/default/zigbee2mqtt/ks.yaml @@ -11,14 +11,21 @@ spec: labels: app.kubernetes.io/name: *app dependsOn: - - name: node-feature-discovery + - name: node-feature-discovery-rules + namespace: flux-system - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/zigbee2mqtt/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/default/zwave-js-ui/app/kustomization.yaml b/kubernetes/apps/default/zwave-js-ui/app/kustomization.yaml index a102b1c1a..09bc749a9 100644 --- a/kubernetes/apps/default/zwave-js-ui/app/kustomization.yaml +++ b/kubernetes/apps/default/zwave-js-ui/app/kustomization.yaml @@ -4,5 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/default/zwave-js-ui/ks.yaml b/kubernetes/apps/default/zwave-js-ui/ks.yaml index cf79b2b7b..1b228f4da 100644 --- a/kubernetes/apps/default/zwave-js-ui/ks.yaml +++ b/kubernetes/apps/default/zwave-js-ui/ks.yaml @@ -11,14 +11,21 @@ spec: labels: app.kubernetes.io/name: *app dependsOn: - - name: node-feature-discovery + - name: node-feature-discovery-rules + namespace: flux-system - name: rook-ceph-cluster + namespace: flux-system - name: volsync + namespace: flux-system + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/default/zwave-js-ui/app prune: true sourceRef: kind: GitRepository name: home-ops-kubernetes + namespace: flux-system wait: false interval: 30m retryInterval: 1m diff --git a/kubernetes/apps/ngnode/landing-page/app-staging/kustomization.yaml b/kubernetes/apps/ngnode/landing-page/app-staging/kustomization.yaml index 66135adf0..2e933f55d 100644 --- a/kubernetes/apps/ngnode/landing-page/app-staging/kustomization.yaml +++ b/kubernetes/apps/ngnode/landing-page/app-staging/kustomization.yaml @@ -4,6 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/external generatorOptions: disableNameSuffixHash: true diff --git a/kubernetes/apps/ngnode/landing-page/app/kustomization.yaml b/kubernetes/apps/ngnode/landing-page/app/kustomization.yaml index 66135adf0..2e933f55d 100644 --- a/kubernetes/apps/ngnode/landing-page/app/kustomization.yaml +++ b/kubernetes/apps/ngnode/landing-page/app/kustomization.yaml @@ -4,6 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/external generatorOptions: disableNameSuffixHash: true diff --git a/kubernetes/apps/observability/apprise/app/kustomization.yaml b/kubernetes/apps/observability/apprise/app/kustomization.yaml index a102b1c1a..09bc749a9 100644 --- a/kubernetes/apps/observability/apprise/app/kustomization.yaml +++ b/kubernetes/apps/observability/apprise/app/kustomization.yaml @@ -4,5 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded - - ../../../../components/volsync diff --git a/kubernetes/apps/observability/apprise/ks.yaml b/kubernetes/apps/observability/apprise/ks.yaml index b4df25469..919812b52 100644 --- a/kubernetes/apps/observability/apprise/ks.yaml +++ b/kubernetes/apps/observability/apprise/ks.yaml @@ -13,6 +13,9 @@ spec: dependsOn: - name: rook-ceph-cluster - name: volsync + components: + - ../../../../components/gatus/guarded + - ../../../../components/volsync path: ./kubernetes/apps/observability/apprise/app prune: true sourceRef: diff --git a/kubernetes/apps/observability/gatus/app/helmrelease.yaml b/kubernetes/apps/observability/gatus/app/helmrelease.yaml index 94df22b67..b547470e7 100644 --- a/kubernetes/apps/observability/gatus/app/helmrelease.yaml +++ b/kubernetes/apps/observability/gatus/app/helmrelease.yaml @@ -29,8 +29,8 @@ spec: initContainers: init-config: image: - repository: ghcr.io/kiwigrid/k8s-sidecar - tag: 1.30.3@sha256:49dcce269568b1645b0050f296da787c99119647965229919a136614123f0627 + repository: ghcr.io/home-operations/k8s-sidecar + tag: 1.30.3@sha256:39cca7abcad8f1621b9462d95f7d0e60301b92fcb0ff4de0ad4561859011cddf env: FOLDER: /config LABEL: gatus.io/enabled @@ -69,7 +69,7 @@ spec: initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 1 - failureThreshold: 3 + failureThreshold: 6 readiness: *probes securityContext: allowPrivilegeEscalation: false diff --git a/kubernetes/apps/observability/pushgateway/app/kustomization.yaml b/kubernetes/apps/observability/pushgateway/app/kustomization.yaml index db575b725..09bc749a9 100644 --- a/kubernetes/apps/observability/pushgateway/app/kustomization.yaml +++ b/kubernetes/apps/observability/pushgateway/app/kustomization.yaml @@ -4,4 +4,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./helmrelease.yaml - - ../../../../components/gatus/guarded diff --git a/kubernetes/apps/observability/pushgateway/ks.yaml b/kubernetes/apps/observability/pushgateway/ks.yaml index 4342c0fd2..b6e4854c4 100644 --- a/kubernetes/apps/observability/pushgateway/ks.yaml +++ b/kubernetes/apps/observability/pushgateway/ks.yaml @@ -12,6 +12,8 @@ spec: app.kubernetes.io/name: *app dependsOn: - name: kube-prometheus-stack-crds + components: + - ../../../../components/gatus/guarded path: ./kubernetes/apps/observability/pushgateway/app prune: true sourceRef: diff --git a/kubernetes/apps/observability/scrutiny/app/externalsecret.yaml b/kubernetes/apps/observability/scrutiny/app/externalsecret.yaml index c6587d827..f355a7db5 100644 --- a/kubernetes/apps/observability/scrutiny/app/externalsecret.yaml +++ b/kubernetes/apps/observability/scrutiny/app/externalsecret.yaml @@ -13,7 +13,7 @@ spec: template: engineVersion: v2 data: - SCRUTINY_NOTIFY_URLS: pushover://shoutrrr:{{ .PUSHOVER_API_TOKEN }}@{{ .PUSHOVER_USER_KEY }} + SCRUTINY_NOTIFY_URLS: pushover://shoutrrr:{{ .SCRUTINY_PUSHOVER_TOKEN }}@{{ .PUSHOVER_USER_KEY }} dataFrom: - extract: key: pushover diff --git a/kubernetes/apps/observability/scrutiny/app/kustomization.yaml b/kubernetes/apps/observability/scrutiny/app/kustomization.yaml index d4e51b18b..c70f0af66 100644 --- a/kubernetes/apps/observability/scrutiny/app/kustomization.yaml +++ b/kubernetes/apps/observability/scrutiny/app/kustomization.yaml @@ -3,4 +3,3 @@ kind: Kustomization resources: - ./externalsecret.yaml - helmrelease.yaml - - ../../../../components/volsync diff --git a/kubernetes/apps/observability/scrutiny/ks.yaml b/kubernetes/apps/observability/scrutiny/ks.yaml index fc908f260..a6a214c1f 100644 --- a/kubernetes/apps/observability/scrutiny/ks.yaml +++ b/kubernetes/apps/observability/scrutiny/ks.yaml @@ -15,6 +15,8 @@ spec: namespace: external-secrets - name: rook-ceph-cluster - name: volsync + components: + - ../../../../components/volsync path: ./kubernetes/apps/observability/scrutiny/app prune: true sourceRef: diff --git a/kubernetes/components/common/alerts/github-status/externalsecret.yaml b/kubernetes/components/common/alerts/github-status/externalsecret.yaml index 3e0a33190..a532a6438 100644 --- a/kubernetes/components/common/alerts/github-status/externalsecret.yaml +++ b/kubernetes/components/common/alerts/github-status/externalsecret.yaml @@ -7,7 +7,7 @@ metadata: spec: secretStoreRef: kind: ClusterSecretStore - name: onepassword + name: onepassword-connect target: name: github-status-token-secret template: diff --git a/kubernetes/components/common/alerts/github-status/provider.yaml b/kubernetes/components/common/alerts/github-status/provider.yaml index 99297aebd..95379cdd7 100644 --- a/kubernetes/components/common/alerts/github-status/provider.yaml +++ b/kubernetes/components/common/alerts/github-status/provider.yaml @@ -6,6 +6,6 @@ metadata: name: github-status spec: type: github - address: https://github.com/onedr0p/home-ops + address: https://github.com/auricom/home-ops secretRef: name: github-status-token-secret diff --git a/kubernetes/components/gatus/external/config.yaml b/kubernetes/components/gatus/external/config.yaml new file mode 100644 index 000000000..bd6cd766f --- /dev/null +++ b/kubernetes/components/gatus/external/config.yaml @@ -0,0 +1,11 @@ +endpoints: + - name: "${APP}" + group: external + url: "https://${GATUS_SUBDOMAIN:-${APP}}.${SECRET_EXTERNAL_DOMAIN}${GATUS_PATH:-/}" + interval: 1m + client: + dns-resolver: tcp://192.168.8.1:53 + conditions: + - "[STATUS] == ${GATUS_STATUS:-200}" + alerts: + - type: pushover diff --git a/kubernetes/components/gatus/external/configmap.yaml b/kubernetes/components/gatus/external/configmap.yaml deleted file mode 100644 index a5548ca90..000000000 --- a/kubernetes/components/gatus/external/configmap.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: "${APP}-gatus-ep" - labels: - gatus.io/enabled: "true" -data: - config.yaml: | - endpoints: - - name: "${APP}" - group: external - url: "https://${GATUS_SUBDOMAIN:-${APP}}.${SECRET_EXTERNAL_DOMAIN}${GATUS_PATH:-/}" - interval: 1m - client: - dns-resolver: tcp://192.168.8.1:53 - conditions: - - "[STATUS] == ${GATUS_STATUS:-200}" - alerts: - - type: pushover diff --git a/kubernetes/components/gatus/external/kustomization.yaml b/kubernetes/components/gatus/external/kustomization.yaml index e09060b99..3c51aa7bf 100644 --- a/kubernetes/components/gatus/external/kustomization.yaml +++ b/kubernetes/components/gatus/external/kustomization.yaml @@ -1,6 +1,13 @@ --- # yaml-language-server: $schema=https://json.schemastore.org/kustomization -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - - ./configmap.yaml +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component +configMapGenerator: + - name: ${APP}-gatus-ep + files: + - config.yaml=./config.yaml + options: + labels: + gatus.io/enabled: "true" +generatorOptions: + disableNameSuffixHash: true diff --git a/kubernetes/components/gatus/guarded/config.yaml b/kubernetes/components/gatus/guarded/config.yaml new file mode 100644 index 000000000..f4f307a9e --- /dev/null +++ b/kubernetes/components/gatus/guarded/config.yaml @@ -0,0 +1,12 @@ +endpoints: + - name: "${APP}" + group: guarded + url: "https://${GATUS_SUBDOMAIN:-${APP}}.${GATUS_DOMAIN:-${SECRET_EXTERNAL_DOMAIN}}${GATUS_PATH:-/}" + interval: 1m + ui: + hide-hostname: true + hide-url: true + conditions: + - "[STATUS] == ${GATUS_STATUS:-200}" + alerts: + - type: pushover diff --git a/kubernetes/components/gatus/guarded/configmap.yaml b/kubernetes/components/gatus/guarded/configmap.yaml deleted file mode 100644 index 9160729e7..000000000 --- a/kubernetes/components/gatus/guarded/configmap.yaml +++ /dev/null @@ -1,21 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: "${APP}-gatus-ep" - labels: - gatus.io/enabled: "true" -data: - config.yaml: | - endpoints: - - name: "${APP}" - group: guarded - url: "https://${GATUS_SUBDOMAIN:-${APP}}.${GATUS_DOMAIN:-${SECRET_EXTERNAL_DOMAIN}}${GATUS_PATH:-/}" - interval: 1m - ui: - hide-hostname: true - hide-url: true - conditions: - - "[STATUS] == ${GATUS_STATUS:-200}" - alerts: - - type: pushover diff --git a/kubernetes/components/gatus/guarded/kustomization.yaml b/kubernetes/components/gatus/guarded/kustomization.yaml index e09060b99..3c51aa7bf 100644 --- a/kubernetes/components/gatus/guarded/kustomization.yaml +++ b/kubernetes/components/gatus/guarded/kustomization.yaml @@ -1,6 +1,13 @@ --- # yaml-language-server: $schema=https://json.schemastore.org/kustomization -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - - ./configmap.yaml +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component +configMapGenerator: + - name: ${APP}-gatus-ep + files: + - config.yaml=./config.yaml + options: + labels: + gatus.io/enabled: "true" +generatorOptions: + disableNameSuffixHash: true diff --git a/kubernetes/components/volsync/kustomization.yaml b/kubernetes/components/volsync/kustomization.yaml index 8b8cd32d8..65041fdaa 100644 --- a/kubernetes/components/volsync/kustomization.yaml +++ b/kubernetes/components/volsync/kustomization.yaml @@ -1,7 +1,7 @@ --- # yaml-language-server: $schema=https://json.schemastore.org/kustomization -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component resources: - - ./claim.yaml - - ./minio.yaml + - ./minio + - ./pvc.yaml diff --git a/kubernetes/components/volsync/minio.yaml b/kubernetes/components/volsync/minio.yaml deleted file mode 100644 index af6d4087c..000000000 --- a/kubernetes/components/volsync/minio.yaml +++ /dev/null @@ -1,73 +0,0 @@ ---- -# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/external-secrets.io/externalsecret_v1.json -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: "${APP}-volsync" -spec: - secretStoreRef: - kind: ClusterSecretStore - name: onepassword-connect - target: - name: "${APP}-volsync-secret" - template: - engineVersion: v2 - data: - RESTIC_REPOSITORY: s3:https://s3.${SECRET_INTERNAL_DOMAIN}/volsync/${APP} - RESTIC_PASSWORD: "{{ .RESTIC_PASSWORD }}" - AWS_ACCESS_KEY_ID: "{{ .AWS_ACCESS_KEY_ID }}" - AWS_SECRET_ACCESS_KEY: "{{ .AWS_SECRET_ACCESS_KEY }}" - dataFrom: - - extract: - key: volsync-restic-template ---- -# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/volsync.backube/replicationsource_v1alpha1.json -apiVersion: volsync.backube/v1alpha1 -kind: ReplicationSource -metadata: - name: "${APP}" -spec: - sourcePVC: "${APP}" - trigger: - schedule: 0 7 * * * - restic: - copyMethod: "${VOLSYNC_COPYMETHOD:-Snapshot}" - pruneIntervalDays: 7 - repository: "${APP}-volsync-secret" - volumeSnapshotClassName: "${VOLSYNC_SNAPSHOTCLASS:-csi-ceph-blockpool}" - cacheCapacity: "${VOLSYNC_CACHE_CAPACITY:-8Gi}" - cacheStorageClassName: "${VOLSYNC_CACHE_SNAPSHOTCLASS:-rook-ceph-block}" - cacheAccessModes: ["${VOLSYNC_CACHE_ACCESSMODES:-ReadWriteOnce}"] - storageClassName: "${VOLSYNC_STORAGECLASS:-rook-ceph-block}" - accessModes: ["${VOLSYNC_ACCESSMODES:-ReadWriteOnce}"] - moverSecurityContext: - runAsUser: ${VOLSYNC_UID:-568} - runAsGroup: ${VOLSYNC_GID:-568} - fsGroup: ${VOLSYNC_GID:-568} - retain: - hourly: 24 - daily: 7 - weekly: 5 ---- -# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/volsync.backube/replicationdestination_v1alpha1.json -apiVersion: volsync.backube/v1alpha1 -kind: ReplicationDestination -metadata: - name: "${APP}-dst" -spec: - trigger: - manual: restore-once - restic: - repository: "${APP}-volsync-secret" - copyMethod: Snapshot # must be Snapshot - volumeSnapshotClassName: "${VOLSYNC_SNAPSHOTCLASS:-csi-ceph-blockpool}" - cacheStorageClassName: "${VOLSYNC_CACHE_SNAPSHOTCLASS:-rook-ceph-block}" - cacheAccessModes: ["${VOLSYNC_CACHE_ACCESSMODES:-ReadWriteOnce}"] - cacheCapacity: "${VOLSYNC_CACHE_CAPACITY:-8Gi}" - storageClassName: "${VOLSYNC_STORAGECLASS:-rook-ceph-block}" - accessModes: ["${VOLSYNC_ACCESSMODES:-ReadWriteOnce}"] - capacity: "${VOLSYNC_CAPACITY}" - moverSecurityContext: - runAsUser: ${VOLSYNC_UID:-568} - runAsGroup: ${VOLSYNC_GID:-568} - fsGroup: ${VOLSYNC_GID:-568} diff --git a/kubernetes/components/volsync/minio/externalsecret.yaml b/kubernetes/components/volsync/minio/externalsecret.yaml new file mode 100644 index 000000000..32ba3622d --- /dev/null +++ b/kubernetes/components/volsync/minio/externalsecret.yaml @@ -0,0 +1,22 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/external-secrets.io/externalsecret_v1.json +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: "${APP}-volsync" +spec: + secretStoreRef: + kind: ClusterSecretStore + name: onepassword-connect + target: + name: "${APP}-volsync-secret" + template: + engineVersion: v2 + data: + RESTIC_REPOSITORY: s3:https://s3.${SECRET_INTERNAL_DOMAIN}/volsync/${APP} + RESTIC_PASSWORD: "{{ .RESTIC_PASSWORD }}" + AWS_ACCESS_KEY_ID: "{{ .AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "{{ .AWS_SECRET_ACCESS_KEY }}" + dataFrom: + - extract: + key: volsync-restic-template diff --git a/kubernetes/components/volsync/minio/kustomization.yaml b/kubernetes/components/volsync/minio/kustomization.yaml new file mode 100644 index 000000000..fa5885547 --- /dev/null +++ b/kubernetes/components/volsync/minio/kustomization.yaml @@ -0,0 +1,8 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./externalsecret.yaml + - ./replicationsource.yaml + - ./replicationdestination.yaml diff --git a/kubernetes/components/volsync/minio/replicationdestination.yaml b/kubernetes/components/volsync/minio/replicationdestination.yaml new file mode 100644 index 000000000..5ed8fd7e4 --- /dev/null +++ b/kubernetes/components/volsync/minio/replicationdestination.yaml @@ -0,0 +1,23 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/volsync.backube/replicationdestination_v1alpha1.json +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationDestination +metadata: + name: "${APP}-dst" +spec: + trigger: + manual: restore-once + restic: + repository: "${APP}-volsync-secret" + copyMethod: Snapshot # must be Snapshot + volumeSnapshotClassName: "${VOLSYNC_SNAPSHOTCLASS:-csi-ceph-blockpool}" + cacheStorageClassName: "${VOLSYNC_CACHE_SNAPSHOTCLASS:-rook-ceph-block}" + cacheAccessModes: ["${VOLSYNC_CACHE_ACCESSMODES:-ReadWriteOnce}"] + cacheCapacity: "${VOLSYNC_CACHE_CAPACITY:-8Gi}" + storageClassName: "${VOLSYNC_STORAGECLASS:-rook-ceph-block}" + accessModes: ["${VOLSYNC_ACCESSMODES:-ReadWriteOnce}"] + capacity: "${VOLSYNC_CAPACITY}" + moverSecurityContext: + runAsUser: ${VOLSYNC_UID:-568} + runAsGroup: ${VOLSYNC_GID:-568} + fsGroup: ${VOLSYNC_GID:-568} diff --git a/kubernetes/components/volsync/minio/replicationsource.yaml b/kubernetes/components/volsync/minio/replicationsource.yaml new file mode 100644 index 000000000..a27a0ddf8 --- /dev/null +++ b/kubernetes/components/volsync/minio/replicationsource.yaml @@ -0,0 +1,28 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/volsync.backube/replicationsource_v1alpha1.json +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: "${APP}" +spec: + sourcePVC: "${APP}" + trigger: + schedule: 0 7 * * * + restic: + copyMethod: "${VOLSYNC_COPYMETHOD:-Snapshot}" + pruneIntervalDays: 7 + repository: "${APP}-volsync-secret" + volumeSnapshotClassName: "${VOLSYNC_SNAPSHOTCLASS:-csi-ceph-blockpool}" + cacheCapacity: "${VOLSYNC_CACHE_CAPACITY:-8Gi}" + cacheStorageClassName: "${VOLSYNC_CACHE_SNAPSHOTCLASS:-rook-ceph-block}" + cacheAccessModes: ["${VOLSYNC_CACHE_ACCESSMODES:-ReadWriteOnce}"] + storageClassName: "${VOLSYNC_STORAGECLASS:-rook-ceph-block}" + accessModes: ["${VOLSYNC_ACCESSMODES:-ReadWriteOnce}"] + moverSecurityContext: + runAsUser: ${VOLSYNC_UID:-568} + runAsGroup: ${VOLSYNC_GID:-568} + fsGroup: ${VOLSYNC_GID:-568} + retain: + hourly: 24 + daily: 7 + weekly: 5 diff --git a/kubernetes/components/volsync/claim.yaml b/kubernetes/components/volsync/pvc.yaml similarity index 100% rename from kubernetes/components/volsync/claim.yaml rename to kubernetes/components/volsync/pvc.yaml