Compare commits

..

54 commits

Author SHA1 Message Date
b1e2901d07 chore(deps): update helm release cilium to v1.19.4 2026-05-26 13:38:25 +00:00
8de6cb6136 Merge pull request 'chore(deps): update helm release renovate-operator to v4.8.1' (#82) from renovate/renovate-operator-4.x into main
Reviewed-on: #82
2026-05-26 15:31:45 +02:00
1b51503b0a Merge pull request 'chore(deps): update mariadb:lts docker digest to 7818535' (#81) from renovate/mariadb-lts into main
Reviewed-on: #81
2026-05-26 15:31:35 +02:00
58ac206d09 Merge pull request 'chore(deps): update linuxserver/sonarr:4.0.17 docker digest to 0b5c480' (#80) from renovate/linuxserver-sonarr-4.0.17 into main
Reviewed-on: #80
2026-05-26 15:31:28 +02:00
60ac3b2810 Merge pull request 'chore(deps): update linuxserver/prowlarr:2.3.5 docker digest to c9fe528' (#79) from renovate/linuxserver-prowlarr-2.3.5 into main
Reviewed-on: #79
2026-05-26 15:31:20 +02:00
1940bb6e84 Merge pull request 'chore(deps): update linuxserver/lidarr:3.1.2-nightly docker digest to 2643e37' (#78) from renovate/linuxserver-lidarr-3.1.2-nightly into main
Reviewed-on: #78
2026-05-26 15:31:12 +02:00
c90b50c24c Merge pull request 'chore(deps): update helm release prometheus-operator-crds to v29' (#77) from renovate/prometheus-operator-crds-29.x into main
Reviewed-on: #77
2026-05-26 15:31:07 +02:00
b8eed814c2 Merge pull request 'chore(deps): update helm release argo-workflows to v1.0.14' (#76) from renovate/argo-workflows-1.x into main
Reviewed-on: #76
2026-05-26 15:30:36 +02:00
83cd4a5324 Merge pull request 'chore(deps): update linuxserver/radarr:6.1.1 docker digest to 079e488' (#75) from renovate/linuxserver-radarr-6.1.1 into main
Reviewed-on: #75
2026-05-26 15:30:23 +02:00
38feb5d0f1 chore(deps): update helm release renovate-operator to v4.8.1 2026-05-26 00:03:46 +00:00
a9de09b440 chore(deps): update mariadb:lts docker digest to 7818535 2026-05-26 00:03:25 +00:00
51aa074d96 chore(deps): update linuxserver/sonarr:4.0.17 docker digest to 0b5c480 2026-05-26 00:03:21 +00:00
99ac0d5dc0 chore(deps): update linuxserver/prowlarr:2.3.5 docker digest to c9fe528 2026-05-26 00:03:17 +00:00
f7f84e016a chore(deps): update linuxserver/lidarr:3.1.2-nightly docker digest to 2643e37 2026-05-26 00:03:12 +00:00
54a37d74a8
chore: Update ArgoCD to 3.4.2 2026-05-24 22:35:12 +02:00
c579798214
feat(wheatley): Add metrics-server 2026-05-24 22:29:14 +02:00
e34cd57fcf
fix: add dashes 2026-05-24 22:27:14 +02:00
2540cf4429
fix: args is list 2026-05-24 22:25:17 +02:00
85a1166cd5
fix: boolean 2026-05-24 22:24:06 +02:00
59b3f725f5
fix: set correct repoUrl 2026-05-24 22:22:26 +02:00
c2802ffd12
feat: include metrics-server 2026-05-24 22:20:21 +02:00
3a09d8af0f
fix: Always deploy sonarr on worker03 2026-05-24 21:33:53 +02:00
c9a86f3fb3
fix: Always deploy soulseekd on worker01 2026-05-24 21:31:16 +02:00
755764cee4
fix: Always deploy qbittorrent to worker02 2026-05-24 21:28:30 +02:00
ed31db077a chore(deps): update helm release prometheus-operator-crds to v29 2026-05-19 00:03:46 +00:00
66b3ff3a7a chore(deps): update helm release argo-workflows to v1.0.14 2026-05-19 00:03:12 +00:00
c6c138ed8e chore(deps): update linuxserver/radarr:6.1.1 docker digest to 079e488 2026-05-19 00:03:09 +00:00
aaf9cd8792
chore(workflows): Remove placeholder image tag 2026-05-17 10:11:23 +02:00
cd042eebfe Merge pull request 'chore(deps): pin dependencies' (#66) from renovate/pin-dependencies into main
Reviewed-on: #66
2026-05-17 10:10:23 +02:00
58805857e0 Merge pull request 'chore(deps): update linuxserver/prowlarr:2.3.5 docker digest to a89f252' (#67) from renovate/linuxserver-prowlarr-2.3.5 into main
Reviewed-on: #67
2026-05-17 10:09:56 +02:00
124b4b0333 Merge pull request 'chore(deps): update linuxserver/radarr:6.1.1 docker digest to 15417a5' (#68) from renovate/linuxserver-radarr-6.1.1 into main
Reviewed-on: #68
2026-05-17 10:09:50 +02:00
dca9308047 Merge pull request 'chore(deps): update linuxserver/sonarr:4.0.17 docker digest to 60f3b6b' (#69) from renovate/linuxserver-sonarr-4.0.17 into main
Reviewed-on: #69
2026-05-17 10:09:46 +02:00
e97ec2bf16 Merge pull request 'chore(deps): update helm release alloy to v1.8.1' (#70) from renovate/alloy-1.x into main
Reviewed-on: #70
2026-05-17 10:09:36 +02:00
2ad1630fd0 Merge pull request 'chore(deps): update helm release external-secrets to v2.5.0' (#71) from renovate/external-secrets-2.x into main
Reviewed-on: #71
2026-05-17 10:09:04 +02:00
4139b3b788 Merge pull request 'chore(deps): update helm release renovate-operator to v4.8.0' (#72) from renovate/renovate-operator-4.x into main
Reviewed-on: #72
2026-05-17 10:08:57 +02:00
c7987df242 Merge pull request 'chore(deps): update quay.io/prometheus-operator/prometheus-config-reloader docker tag to v0.91.0' (#73) from renovate/quay.io-prometheus-operator-prometheus-config-reloader-0.x into main
Reviewed-on: #73
2026-05-17 10:07:41 +02:00
6d789c5eb8 Merge pull request 'chore(deps): update helm release cloudnative-pg to v0.28.2' (#74) from renovate/cloudnative-pg-0.x into main
Reviewed-on: #74
2026-05-17 10:07:16 +02:00
038405c359 feat(plex): Include musiclibrary 2026-05-16 22:02:21 +02:00
a4d8df21b1 chore(deps): pin dependencies 2026-05-16 14:03:08 +00:00
4dc41f994a
refactor: Move slskd to own namespace 2026-05-16 15:42:23 +02:00
0354c037de chore(deps): update helm release external-secrets to v2.5.0 2026-05-15 14:04:04 +00:00
537840bc3c
fix(argo-workflows): Add rbac rules for SSO 2026-05-15 14:53:30 +02:00
46ac559c98
feat(slskd): Add authentication 2026-05-14 22:27:00 +02:00
550ce0be21
chore(sonarr): Increase PVE size 2026-05-14 22:18:28 +02:00
d1c6ac7202
chore(lidarr): Switch to nightly builds 2026-05-14 21:57:46 +02:00
dfd74ecc6d
fix(lidarr): Increase pvc size 2026-05-14 21:40:06 +02:00
6a9c153f5c
feat: Add RomM 2026-05-14 21:09:05 +02:00
01d906da39 chore(deps): update helm release renovate-operator to v4.8.0 2026-05-14 19:04:18 +00:00
bb05870615 chore(deps): update linuxserver/prowlarr:2.3.5 docker digest to a89f252 2026-05-13 07:03:13 +00:00
18699af76a chore(deps): update helm release cloudnative-pg to v0.28.2 2026-05-12 13:04:54 +00:00
7e6ba27952 chore(deps): update linuxserver/radarr:6.1.1 docker digest to 15417a5 2026-05-10 18:02:28 +00:00
d004e1444d chore(deps): update linuxserver/sonarr:4.0.17 docker digest to 60f3b6b 2026-05-09 01:02:30 +00:00
9d99028ca0 chore(deps): update quay.io/prometheus-operator/prometheus-config-reloader docker tag to v0.91.0 2026-05-08 12:50:09 +00:00
24cde57375 chore(deps): update helm release alloy to v1.8.1 2026-05-08 12:48:49 +00:00
41 changed files with 7432 additions and 199 deletions

View file

@ -11,5 +11,5 @@ helmCharts:
repo: https://argoproj.github.io/argo-helm repo: https://argoproj.github.io/argo-helm
namespace: argo-workflows namespace: argo-workflows
releaseName: argo-workflows releaseName: argo-workflows
version: 1.0.13 version: 1.0.14
valuesFile: values.yaml valuesFile: values.yaml

View file

@ -154,8 +154,6 @@ server:
registry: quay.io registry: quay.io
# -- Repository to use for the server # -- Repository to use for the server
repository: argoproj/argocli repository: argoproj/argocli
# -- Image tag for the Argo Workflows server. Defaults to `.Values.images.tag`.
tag: ""
rbac: rbac:
# -- Adds Role and RoleBinding for the server. # -- Adds Role and RoleBinding for the server.
create: true create: true
@ -311,3 +309,34 @@ extraObjects:
kind: ClusterRole kind: ClusterRole
name: argo-workflows-view name: argo-workflows-view
apiGroup: rbac.authorization.k8s.io apiGroup: rbac.authorization.k8s.io
- apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: argo-workflows-server-sso
namespace: argo-workflows
rules:
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- get
- apiGroups:
- ""
resources:
- serviceaccounts/token
verbs:
- create
- apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: argo-workflows-server-sso
namespace: argo-workflows
subjects:
- kind: ServiceAccount
name: argo-workflows-server
namespace: argo-workflows
roleRef:
kind: Role
name: argo-workflows-server-sso
apiGroup: rbac.authorization.k8s.io

View file

@ -17,6 +17,8 @@ spec:
automated: automated:
prune: true prune: true
selfHeal: true selfHeal: true
syncOptions:
- ServerSideApply=true
--- ---
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application
@ -81,6 +83,31 @@ spec:
--- ---
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application
metadata:
name: metrics-server-peterg
namespace: argocd
spec:
project: default
source:
repoURL: https://kubernetes-sigs.github.io/metrics-server
targetRevision: 3.13.0
chart: metrics-server
helm:
releaseName: metrics-server
values: |
args:
- --kubelet-insecure-tls=true
- --kubelet-preferred-address-types=InternalIP
destination:
server: https://kubernetes.default.svc
namespace: kube-system
syncPolicy:
automated:
prune: true
selfHeal: true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata: metadata:
name: argo-workflows name: argo-workflows
namespace: argocd namespace: argocd

View file

@ -80,6 +80,31 @@ spec:
selfHeal: true selfHeal: true
syncOptions: syncOptions:
- ServerSideApply=true - ServerSideApply=true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: metrics-server-wheatley
namespace: argocd
spec:
project: default
source:
repoURL: https://kubernetes-sigs.github.io/metrics-server
targetRevision: 3.13.0
chart: metrics-server
helm:
releaseName: metrics-server
values: |
args:
- --kubelet-insecure-tls=true
- --kubelet-preferred-address-types=InternalIP
destination:
server: https://10.13.37.10:6443
namespace: kube-system
syncPolicy:
automated:
prune: true
selfHeal: true
--- ---
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
@ -200,6 +225,25 @@ spec:
--- ---
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application
metadata:
name: soulseekd
namespace: argocd
spec:
project: default
source:
repoURL: https://code.peterg.nl/wheatley/kubernetes.git
path: k8s-wheatley/soulseekd
targetRevision: HEAD
destination:
server: https://10.13.37.10:6443
namespace: soulseekd
syncPolicy:
automated:
prune: true
selfHeal: true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata: metadata:
name: plex name: plex
namespace: argocd namespace: argocd
@ -216,3 +260,22 @@ spec:
automated: automated:
prune: true prune: true
selfHeal: true selfHeal: true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: romm
namespace: argocd
spec:
project: default
source:
repoURL: https://code.peterg.nl/wheatley/kubernetes.git
path: k8s-wheatley/romm
targetRevision: HEAD
destination:
server: https://10.13.37.10:6443
namespace: romm
syncPolicy:
automated:
prune: true
selfHeal: true

File diff suppressed because it is too large Load diff

View file

@ -12,4 +12,4 @@ helmCharts:
repo: https://charts.external-secrets.io repo: https://charts.external-secrets.io
namespace: external-secrets namespace: external-secrets
releaseName: external-secrets releaseName: external-secrets
version: 2.4.0 version: 2.5.0

View file

@ -15,5 +15,5 @@ helmCharts:
repo: https://helm.mogenius.com/public repo: https://helm.mogenius.com/public
namespace: renovate-operator namespace: renovate-operator
releaseName: renovate-operator releaseName: renovate-operator
version: "4.7.0" version: "4.8.1"
valuesFile: values.yaml valuesFile: values.yaml

View file

@ -11,5 +11,5 @@ helmCharts:
repo: https://cloudnative-pg.github.io/charts repo: https://cloudnative-pg.github.io/charts
namespace: cnpg-system namespace: cnpg-system
releaseName: cloudnative-pg releaseName: cloudnative-pg
version: 0.28.0 version: 0.28.2
valuesFile: values.yaml valuesFile: values.yaml

View file

@ -12,4 +12,4 @@ helmCharts:
repo: https://charts.external-secrets.io repo: https://charts.external-secrets.io
namespace: external-secrets namespace: external-secrets
releaseName: external-secrets releaseName: external-secrets
version: 2.4.0 version: 2.5.0

View file

@ -47,4 +47,4 @@ patches:
images: images:
- name: linuxserver/lidarr - name: linuxserver/lidarr
newTag: 3.1.0@sha256:d2f944115de2ca6754ad142ee92f9db481b1574c7bc030974d624584106b78d7 newTag: 3.1.2-nightly@sha256:2643e3751213f544ca3fa082f41c5557efe7cf733989bc33e1455e3b2b523cd5

View file

@ -9,4 +9,4 @@ spec:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
requests: requests:
storage: 5Gi storage: 10Gi

View file

@ -34,6 +34,8 @@ spec:
name: nfs-media-series name: nfs-media-series
- mountPath: /data/anime - mountPath: /data/anime
name: nfs-media-anime name: nfs-media-anime
- mountPath: /data/music
name: nfs-media-music
securityContext: securityContext:
seccompProfile: seccompProfile:
type: RuntimeDefault type: RuntimeDefault
@ -58,3 +60,6 @@ spec:
- name: nfs-media-anime - name: nfs-media-anime
persistentVolumeClaim: persistentVolumeClaim:
claimName: nfs-media-anime claimName: nfs-media-anime
- name: nfs-media-music
persistentVolumeClaim:
claimName: nfs-media-music

View file

@ -16,6 +16,7 @@ components:
- ../../kustomize-bases/nfs-media/components/movies - ../../kustomize-bases/nfs-media/components/movies
- ../../kustomize-bases/nfs-media/components/series - ../../kustomize-bases/nfs-media/components/series
- ../../kustomize-bases/nfs-media/components/anime - ../../kustomize-bases/nfs-media/components/anime
- ../../kustomize-bases/nfs-media/components/music
patches: patches:
- target: - target:
@ -78,6 +79,26 @@ patches:
- op: replace - op: replace
path: /spec/accessModes/0 path: /spec/accessModes/0
value: ReadOnlyMany value: ReadOnlyMany
- target:
kind: PersistentVolume
name: nfs-media-music
patch: |
- op: replace
path: /metadata/name
value: nfs-media-plex-music
- op: replace
path: /spec/accessModes/0
value: ReadOnlyMany
- target:
kind: PersistentVolumeClaim
name: nfs-media-music
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-plex-music
- op: replace
path: /spec/accessModes/0
value: ReadOnlyMany
images: images:
- name: plexinc/pms-docker - name: plexinc/pms-docker

View file

@ -16,4 +16,4 @@ images:
- name: flaresolverr/flaresolverr - name: flaresolverr/flaresolverr
newTag: v3.4.6@sha256:7962759d99d7e125e108e0f5e7f3cdbcd36161776d058d1d9b7153b92ef1af9e newTag: v3.4.6@sha256:7962759d99d7e125e108e0f5e7f3cdbcd36161776d058d1d9b7153b92ef1af9e
- name: linuxserver/prowlarr - name: linuxserver/prowlarr
newTag: 2.3.5@sha256:c5de2a8758a05594319263e7691c1dce56899442ed1720d6eca216c0958f4caf newTag: 2.3.5@sha256:c9fe528f34b1fd3715438b6f6d6991d64e2965f2c055db36398bc66a0e7eab01

View file

@ -12,7 +12,7 @@ data:
VPN_PORT_FORWARDING_UP_COMMAND: "/scripts/port-up.sh" VPN_PORT_FORWARDING_UP_COMMAND: "/scripts/port-up.sh"
VPN_PORT_FORWARDING_DOWN_COMMAND: "/scripts/port-down.sh" VPN_PORT_FORWARDING_DOWN_COMMAND: "/scripts/port-down.sh"
FIREWALL_OUTBOUND_SUBNETS: 10.244.0.0/16,10.96.0.0/12 FIREWALL_OUTBOUND_SUBNETS: 10.244.0.0/16,10.96.0.0/12
FIREWALL_INPUT_PORTS: "8112,5030" FIREWALL_INPUT_PORTS: "8112"
--- ---
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
@ -43,22 +43,6 @@ data:
--- ---
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata:
name: slskd-envs
data:
TZ: Europe/Amsterdam
PUID: "1000"
PGID: "1000"
SLSKD_DOWNLOADS_DIR: /shared/media/downloads/_slsk-downloads
SLSKD_INCOMPLETE_DIR: /shared/media/downloads/_slsk-incomplete
SLSKD_SHARED_DIR: "[Music]/shared/media/downloads/_slsk-downloads"
SLSKD_REMOTE_CONFIGURATION: "true"
SLSKD_VPN: "true"
SLSKD_VPN_PORT_FORWARDING: "true"
SLSKD_VPN_GLUETUN_URL: http://localhost:8000
---
apiVersion: v1
kind: ConfigMap
metadata: metadata:
name: unpackerr-envs name: unpackerr-envs
data: data:

View file

@ -17,6 +17,7 @@ spec:
labels: labels:
app: qbittorrent app: qbittorrent
spec: spec:
nodeName: k8s-wheatley-worker02
initContainers: initContainers:
- name: gluetun - name: gluetun
image: ghcr.io/qdm12/gluetun image: ghcr.io/qdm12/gluetun
@ -24,9 +25,6 @@ spec:
- name: qbit-http - name: qbit-http
containerPort: 8112 containerPort: 8112
protocol: TCP protocol: TCP
- name: slskd-http
containerPort: 5030
protocol: TCP
envFrom: envFrom:
- configMapRef: - configMapRef:
name: gluetun-envs name: gluetun-envs
@ -124,30 +122,6 @@ spec:
capabilities: capabilities:
drop: drop:
- "ALL" - "ALL"
- name: slskd
image: docker.io/slskd/slskd
imagePullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: slskd-envs
- secretRef:
name: slskd-env-secrets
volumeMounts:
- mountPath: /config
name: slskd-config
- mountPath: /shared/media/downloads
name: nfs-media-downloads
securityContext:
seccompProfile:
type: RuntimeDefault
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
add:
- "CHOWN"
- "SETUID"
- "SETGID"
volumes: volumes:
- name: dev-tun - name: dev-tun
hostPath: hostPath:
@ -156,9 +130,6 @@ spec:
- name: qbittorrent-config - name: qbittorrent-config
persistentVolumeClaim: persistentVolumeClaim:
claimName: qbittorrent-storage claimName: qbittorrent-storage
- name: slskd-config
persistentVolumeClaim:
claimName: slskd-storage
- name: gluetun-wgconfig - name: gluetun-wgconfig
secret: secret:
secretName: gluetun-wgconfig secretName: gluetun-wgconfig

View file

@ -15,23 +15,6 @@ spec:
- name: qbittorrent - name: qbittorrent
port: 80 port: 80
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: slskd-route
spec:
parentRefs:
- name: internal
namespace: kube-system
sectionName: https
hostnames:
- "slskd.wheatley.in"
rules:
- backendRefs:
- name: slskd
port: 80
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
@ -44,16 +27,3 @@ spec:
- port: 80 - port: 80
protocol: TCP protocol: TCP
targetPort: 8112 targetPort: 8112
---
apiVersion: v1
kind: Service
metadata:
name: slskd
spec:
selector:
app: qbittorrent
ports:
- port: 80
protocol: TCP
targetPort: 5030

View file

@ -35,5 +35,3 @@ images:
newTag: v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab newTag: v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab
- name: docker.io/qbittorrentofficial/qbittorrent-nox - name: docker.io/qbittorrentofficial/qbittorrent-nox
newTag: 5.1.4-2@sha256:85fe2690f418dabffc4907276b3cdffcb7880c7114157b32f932d3b97bac45af newTag: 5.1.4-2@sha256:85fe2690f418dabffc4907276b3cdffcb7880c7114157b32f932d3b97bac45af
- name: docker.io/slskd/slskd
newTag: 0.25.1

View file

@ -10,15 +10,3 @@ spec:
resources: resources:
requests: requests:
storage: 5Gi storage: 5Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: slskd-storage
spec:
storageClassName: piraeus-lvmthin
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View file

@ -18,31 +18,6 @@ spec:
key: secrets/managed/qbittorrent/protonvpn-wgconfig key: secrets/managed/qbittorrent/protonvpn-wgconfig
property: config property: config
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: slskd-env-secrets
spec:
secretStoreRef:
name: vault-wheatley
kind: ClusterSecretStore
target:
name: slskd-env-secrets
data:
- secretKey: SLSKD_VPN_GLUETUN_API_KEY
remoteRef:
key: secrets/managed/qbittorrent/slskd-env-secrets
property: GLUETUN_API_KEY
- secretKey: SLSKD_SLSK_USERNAME
remoteRef:
key: secrets/managed/qbittorrent/slskd-env-secrets
property: SLSK_USERNAME
- secretKey: SLSKD_SLSK_PASSWORD
remoteRef:
key: secrets/managed/qbittorrent/slskd-env-secrets
property: SLSK_PASSWORD
--- ---
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret

View file

@ -48,4 +48,4 @@ patches:
images: images:
- name: linuxserver/radarr - name: linuxserver/radarr
newTag: 6.1.1@sha256:b01097ad2d948c9f5eca39eb60bb529e2e55b0738c4bf7db09383bef0abab59d newTag: 6.1.1@sha256:079e48870584baf2a3e7e43e7ba6d3c834555931851a59c82c51cc792d285caf

View file

@ -0,0 +1,21 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: romm-db-envs
data:
MARIADB_DATABASE: romm
MARIADB_USER: romm
TZ: Europe/Amsterdam
---
apiVersion: v1
kind: ConfigMap
metadata:
name: romm-envs
data:
DB_HOST: 127.0.0.1
DB_NAME: romm
DB_USER: romm
ROMM_PORT: "8080"
HASHEOUS_API_ENABLED: "true"
TZ: Europe/Amsterdam

View file

@ -0,0 +1,83 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: romm
labels:
app: romm
spec:
replicas: 1
serviceName: romm
selector:
matchLabels:
app: romm
template:
metadata:
labels:
app: romm
spec:
initContainers:
- name: romm-db
image: mariadb
envFrom:
- configMapRef:
name: romm-db-envs
- secretRef:
name: romm-db-env-secrets
volumeMounts:
- mountPath: /var/lib/mysql
name: romm-db-data
restartPolicy: Always
readinessProbe:
exec:
command:
- sh
- -c
- "healthcheck.sh --connect --innodb_initialized"
initialDelaySeconds: 5
periodSeconds: 3
timeoutSeconds: 2
failureThreshold: 3
livenessProbe:
exec:
command:
- sh
- -c
- "healthcheck.sh --connect --innodb_initialized"
initialDelaySeconds: 10
periodSeconds: 15
timeoutSeconds: 2
failureThreshold: 3
containers:
- name: romm
image: rommapp/romm
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: romm-envs
- secretRef:
name: romm-env-secrets
volumeMounts:
- mountPath: /romm
name: romm-data
- mountPath: /romm/library
name: nfs-media-roms
readOnly: true
- mountPath: /romm/downloads
name: nfs-media-downloads
readOnly: true
volumes:
- name: romm-db-data
persistentVolumeClaim:
claimName: romm-db-storage
- name: romm-data
persistentVolumeClaim:
claimName: romm-storage
- name: nfs-media-roms
persistentVolumeClaim:
claimName: nfs-media-roms
- name: nfs-media-downloads
persistentVolumeClaim:
claimName: nfs-media-downloads

View file

@ -0,0 +1,16 @@
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: romm-route
spec:
parentRefs:
- name: internal
namespace: kube-system
sectionName: https
hostnames:
- "roms.wheatley.in"
rules:
- backendRefs:
- name: romm
port: 80

View file

@ -0,0 +1,53 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: romm
resources:
- configmap.yaml
- deployments.yaml
- ingress.yaml
- pvc.yaml
- secrets.yaml
- services.yaml
- namespace.yaml
components:
- ../../kustomize-bases/nfs-media/components/roms
- ../../kustomize-bases/nfs-media/components/downloads
patches:
- target:
kind: PersistentVolume
name: nfs-media-roms
patch: |
- op: replace
path: /metadata/name
value: nfs-media-romm-roms
- target:
kind: PersistentVolume
name: nfs-media-downloads
patch: |
- op: replace
path: /metadata/name
value: nfs-media-romm-downloads
- target:
kind: PersistentVolumeClaim
name: nfs-media-roms
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-romm-roms
- target:
kind: PersistentVolumeClaim
name: nfs-media-downloads
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-romm-downloads
images:
- name: mariadb
newTag: lts@sha256:78185355dd49b54dd6909072531ce8d7e06aa0eccd7aa5b23c93ebb7e34c5aaa
- name: rommapp/romm
newTag: 4.8.1@sha256:2b7a1714b287f69b081ad2a63bb8c2fa673666a17b2f21322b580b0cd51cb266

View file

@ -0,0 +1,5 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: romm

View file

@ -0,0 +1,24 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: romm-db-storage
spec:
storageClassName: piraeus-lvmthin
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: romm-storage
spec:
storageClassName: piraeus-lvmthin
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi

View file

@ -0,0 +1,52 @@
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: romm-db-env-secrets
spec:
secretStoreRef:
name: vault-wheatley
kind: ClusterSecretStore
target:
name: romm-db-env-secrets
data:
- secretKey: MARIADB_ROOT_PASSWORD
remoteRef:
key: secrets/managed/romm/romm-db
property: ROOT_PASSWORD
- secretKey: MARIADB_PASSWORD
remoteRef:
key: secrets/managed/romm/romm-db
property: PASSWORD
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: romm-env-secrets
spec:
secretStoreRef:
name: vault-wheatley
kind: ClusterSecretStore
target:
name: romm-env-secrets
data:
- secretKey: DB_PASSWD
remoteRef:
key: secrets/managed/romm/romm-db
property: PASSWORD
- secretKey: ROMM_AUTH_SECRET_KEY
remoteRef:
key: secrets/managed/romm/romm
property: SECRET_KEY
- secretKey: IGDB_CLIENT_ID
remoteRef:
key: secrets/managed/romm/romm
property: IGDB_CLIENT_ID
- secretKey: IGDB_CLIENT_SECRET
remoteRef:
key: secrets/managed/romm/romm
property: IGDB_CLIENT_SECRET
- secretKey: STEAMGRIDDB_API_KEY
remoteRef:
key: secrets/managed/romm/romm
property: STEAMGRIDDB_API_KEY

View file

@ -0,0 +1,12 @@
---
apiVersion: v1
kind: Service
metadata:
name: romm
spec:
selector:
app: romm
ports:
- port: 80
protocol: TCP
targetPort: 8080

View file

@ -16,6 +16,7 @@ spec:
labels: labels:
app: sonarr app: sonarr
spec: spec:
nodeName: k8s-wheatley-worker03
containers: containers:
- name: sonarr - name: sonarr
image: linuxserver/sonarr image: linuxserver/sonarr

View file

@ -63,4 +63,4 @@ patches:
images: images:
- name: linuxserver/sonarr - name: linuxserver/sonarr
newTag: 4.0.17@sha256:3580aec3802c915f0f819a88d5099abce61734b925732b8393d176b5dc561020 newTag: 4.0.17@sha256:0b5c4803f92456fb9b65bae8375716ea120b4ea17b3cced7da32b63f0085782b

View file

@ -9,4 +9,4 @@ spec:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
requests: requests:
storage: 5Gi storage: 10Gi

View file

@ -0,0 +1,29 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: gluetun-envs
data:
TZ: Europe/Amsterdam
VPN_SERVICE_PROVIDER: "custom"
VPN_TYPE: "wireguard"
VPN_PORT_FORWARDING: on
VPN_PORT_FORWARDING_PROVIDER: protonvpn
FIREWALL_OUTBOUND_SUBNETS: 10.244.0.0/16,10.96.0.0/12
FIREWALL_INPUT_PORTS: "5030"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: slskd-envs
data:
TZ: Europe/Amsterdam
PUID: "1000"
PGID: "1000"
SLSKD_DOWNLOADS_DIR: /shared/media/downloads/_slsk-downloads
SLSKD_INCOMPLETE_DIR: /shared/media/downloads/_slsk-incomplete
SLSKD_SHARED_DIR: "[Music]/shared/media/music"
SLSKD_REMOTE_CONFIGURATION: "true"
SLSKD_VPN: "true"
SLSKD_VPN_PORT_FORWARDING: "true"
SLSKD_VPN_GLUETUN_URL: http://localhost:8000

View file

@ -0,0 +1,127 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: soulseekd
namespace: soulseekd
labels:
app: soulseekd
spec:
replicas: 1
serviceName: soulseekd
selector:
matchLabels:
app: soulseekd
template:
metadata:
labels:
app: soulseekd
spec:
nodeName: k8s-wheatley-worker01
initContainers:
- name: gluetun
image: ghcr.io/qdm12/gluetun
ports:
- name: slskd-http
containerPort: 5030
protocol: TCP
envFrom:
- configMapRef:
name: gluetun-envs
- secretRef:
name: gluetun-env-secrets
volumeMounts:
- mountPath: /dev/net/tun
name: dev-tun
- mountPath: /gluetun/wireguard
name: gluetun-wgconfig
readOnly: true
- name: gluetun-tmp
mountPath: /tmp/gluetun
restartPolicy: Always
lifecycle:
postStart:
exec:
command:
[
"/bin/sh",
"-c",
"(ip rule del table 51820; ip -6 rule del table 51820) || true",
]
readinessProbe:
exec:
command:
- sh
- -c
- "ping -c 1 9.9.9.9"
initialDelaySeconds: 5
periodSeconds: 3
timeoutSeconds: 2
failureThreshold: 3
livenessProbe:
exec:
command:
- sh
- -c
- "ping -c 1 9.9.9.9"
initialDelaySeconds: 10
periodSeconds: 15
timeoutSeconds: 2
failureThreshold: 3
securityContext:
seccompProfile:
type: RuntimeDefault
allowPrivilegeEscalation: true
capabilities:
drop:
- "ALL"
add:
- "CHOWN"
- "NET_ADMIN"
- "NET_RAW"
containers:
- name: slskd
image: docker.io/slskd/slskd
imagePullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: slskd-envs
- secretRef:
name: slskd-env-secrets
volumeMounts:
- mountPath: /config
name: slskd-config
- mountPath: /shared/media/downloads
name: nfs-media-downloads
- mountPath: /shared/media/music
name: nfs-media-music
securityContext:
seccompProfile:
type: RuntimeDefault
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
add:
- "CHOWN"
- "SETUID"
- "SETGID"
volumes:
- name: dev-tun
hostPath:
path: /dev/net/tun
type: CharDevice
- name: slskd-config
persistentVolumeClaim:
claimName: slskd-storage
- name: gluetun-wgconfig
secret:
secretName: gluetun-wgconfig
- name: gluetun-tmp
emptyDir: {}
- name: nfs-media-downloads
persistentVolumeClaim:
claimName: nfs-media-downloads
- name: nfs-media-music
persistentVolumeClaim:
claimName: nfs-media-music

View file

@ -0,0 +1,28 @@
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: slskd-route
spec:
parentRefs:
- name: internal
namespace: kube-system
sectionName: https
hostnames:
- "slskd.wheatley.in"
rules:
- backendRefs:
- name: slskd
port: 80
---
apiVersion: v1
kind: Service
metadata:
name: slskd
spec:
selector:
app: soulseekd
ports:
- port: 80
protocol: TCP
targetPort: 5030

View file

@ -0,0 +1,52 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: soulseekd
resources:
- configmap.yaml
- deployments.yaml
- ingress.yaml
- pvc.yaml
- secrets.yaml
- namespace.yaml
components:
- ../../kustomize-bases/nfs-media/components/downloads
- ../../kustomize-bases/nfs-media/components/music
patches:
- target:
kind: PersistentVolume
name: nfs-media-downloads
patch: |
- op: replace
path: /metadata/name
value: nfs-media-soulseekd-downloads
- target:
kind: PersistentVolumeClaim
name: nfs-media-downloads
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-soulseekd-downloads
- target:
kind: PersistentVolume
name: nfs-media-music
patch: |
- op: replace
path: /metadata/name
value: nfs-media-soulseekd-music
- target:
kind: PersistentVolumeClaim
name: nfs-media-music
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-soulseekd-music
images:
- name: ghcr.io/qdm12/gluetun
newTag: v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab
- name: docker.io/slskd/slskd
newTag: 0.25.1@sha256:ab9ed50e028b524cefdb7c1dd8ebca368a076e18441ee8ac2326473eb850b4c3

View file

@ -0,0 +1,7 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: soulseekd
labels:
pod-security.kubernetes.io/enforce: privileged

View file

@ -0,0 +1,12 @@
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: slskd-storage
spec:
storageClassName: piraeus-lvmthin
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View file

@ -0,0 +1,69 @@
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: gluetun-wgconfig
spec:
secretStoreRef:
name: vault-wheatley
kind: ClusterSecretStore
target:
name: gluetun-wgconfig
template:
data:
wg0.conf: "{{ .config }}"
data:
- secretKey: config
remoteRef:
key: secrets/managed/soulseekd/protonvpn-wgconfig
property: config
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: slskd-env-secrets
spec:
secretStoreRef:
name: vault-wheatley
kind: ClusterSecretStore
target:
name: slskd-env-secrets
data:
- secretKey: SLSKD_VPN_GLUETUN_API_KEY
remoteRef:
key: secrets/managed/soulseekd/slskd-env-secrets
property: GLUETUN_API_KEY
- secretKey: SLSKD_SLSK_USERNAME
remoteRef:
key: secrets/managed/soulseekd/slskd-env-secrets
property: SLSK_USERNAME
- secretKey: SLSKD_SLSK_PASSWORD
remoteRef:
key: secrets/managed/soulseekd/slskd-env-secrets
property: SLSK_PASSWORD
- secretKey: SLSKD_PASSWORD
remoteRef:
key: secrets/managed/soulseekd/slskd-env-secrets
property: SLSKD_PASSWORD
- secretKey: SLSKD_API_KEY
remoteRef:
key: secrets/managed/soulseekd/slskd-env-secrets
property: API_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: gluetun-env-secrets
spec:
secretStoreRef:
name: vault-wheatley
kind: ClusterSecretStore
target:
name: gluetun-env-secrets
data:
- secretKey: HTTP_CONTROL_SERVER_AUTH_DEFAULT_ROLE
remoteRef:
key: secrets/managed/soulseekd/gluetun-env-secrets
property: HTTP_CONTROL_SERVER_AUTH_DEFAULT_ROLE

View file

@ -9,7 +9,7 @@ resources:
helmCharts: helmCharts:
- name: alloy - name: alloy
repo: https://grafana.github.io/helm-charts repo: https://grafana.github.io/helm-charts
version: "1.8.0" version: "1.8.1"
releaseName: alloy releaseName: alloy
valuesFile: values.yaml valuesFile: values.yaml
- name: kube-state-metrics - name: kube-state-metrics
@ -18,5 +18,5 @@ helmCharts:
releaseName: kube-state-metrics releaseName: kube-state-metrics
- name: prometheus-operator-crds - name: prometheus-operator-crds
repo: https://prometheus-community.github.io/helm-charts repo: https://prometheus-community.github.io/helm-charts
version: "28.0.1" version: "29.0.0"
releaseName: prometheus-operator-crds releaseName: prometheus-operator-crds

View file

@ -127,7 +127,7 @@ configReloader:
# -- Repository to get config reloader image from. # -- Repository to get config reloader image from.
repository: prometheus-operator/prometheus-config-reloader repository: prometheus-operator/prometheus-config-reloader
# -- Tag of image to use for config reloading. # -- Tag of image to use for config reloading.
tag: v0.90.1@sha256:693faa0b87243cddca2cffb13586e4e2778b0cdf319cb2e601ba7af3fd19ef7d tag: v0.91.0@sha256:7d9e4eea5f1139e602508871f422b0116c60e87c662f3dcd234d5ab60cd0d8c1
# -- SHA256 digest of image to use for config reloading (either in format "sha256:XYZ" or "XYZ"). When set, will override `configReloader.image.tag` # -- SHA256 digest of image to use for config reloading (either in format "sha256:XYZ" or "XYZ"). When set, will override `configReloader.image.tag`
digest: "" digest: ""
# -- Override the args passed to the container. # -- Override the args passed to the container.