Compare commits

..

184 commits

Author SHA1 Message Date
12f6f42e13 Merge branch 'main' into pgi-add-workflow
Some checks failed
ArgoCD Diff / argocd-diff-preview (pull_request) Failing after 25s
2026-05-29 11:10:04 +02:00
729e0739ce Merge pull request 'chore(deps): update helm release alloy to v1.8.2' (#84) from renovate/alloy-1.x into main
Reviewed-on: #84
2026-05-26 15:45:23 +02:00
605c874543 Merge pull request 'chore(deps): update plexinc/pms-docker docker tag to v1.43.2.10687-563d026ea' (#85) from renovate/plexinc-pms-docker-1.x into main
Reviewed-on: #85
2026-05-26 15:45:08 +02:00
e4c3ad4188 Merge pull request 'chore(deps): update helm release kube-state-metrics to v7.4.0' (#86) from renovate/kube-state-metrics-7.x into main
Reviewed-on: #86
2026-05-26 15:44:52 +02:00
e501d73ac0 Merge pull request 'chore(deps): update linuxserver/lidarr docker tag to v3.1.3' (#83) from renovate/linuxserver-lidarr-3.x into main
Reviewed-on: #83
2026-05-26 15:44:34 +02:00
6c5105788c chore(deps): update helm release kube-state-metrics to v7.4.0 2026-05-26 13:38:44 +00:00
ce6e439e2b chore(deps): update plexinc/pms-docker docker tag to v1.43.2.10687-563d026ea 2026-05-26 13:38:20 +00:00
c097fad20f chore(deps): update linuxserver/lidarr docker tag to v3.1.3 2026-05-26 13:38:19 +00:00
df094a279e chore(deps): update helm release alloy to v1.8.2 2026-05-26 13:37:21 +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
50a206c943
chore: Bump Cilium to 1.18.10 2026-05-14 16:38:55 +02:00
bae217dc34
refactor(nfs-media): Refactor into subdirectory PVCs 2026-05-14 15:53:43 +02: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
3ac9c8071c
feat: share downloads dir 2026-05-10 12:59:42 +02:00
5b910059ea
feat: Set correct download dir 2026-05-09 22:05:37 +02:00
a14da8e3b1
feat: Authenticate to soulseek 2026-05-09 21:32:38 +02:00
b1d4b32fdb
feat: include secrets 2026-05-09 21:12:40 +02:00
7682efd256
feat: Enable inputport 2026-05-09 21:09:18 +02:00
cadd4fe9a5
feat: Enable webui 2026-05-09 21:05:33 +02:00
b3565458c9
fix: Use unique name 2026-05-09 21:01:18 +02:00
ea84f908d2
feat: Enable Gluetun API 2026-05-09 21:00:11 +02:00
1271ce3e91
fix: Use unique httproute name 2026-05-09 20:27:44 +02:00
d37318dbd5
feat: Add ingress 2026-05-09 20:26:40 +02:00
e3e9e3b6e7
fix: Set correct app port 2026-05-09 20:21:01 +02:00
85af131c88
fix: Set less strict securityContext for slskd 2026-05-09 20:16:36 +02:00
96f08c8dfd
fix: Shorten portname 2026-05-09 20:14:02 +02:00
a3d532de93
feat: Add slskd 2026-05-09 20:10:51 +02: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
845aea8b13
chore: dont detect host rules from env 2026-05-08 14:35:36 +02:00
bf6098e676
chore: Remove auth 2026-05-08 14:32:50 +02:00
a97783ed0b
fix: Don't autodiscover 2026-05-08 14:25:38 +02:00
a5a63ee4cd
fix: password intead of token 2026-05-08 14:01:09 +02:00
b01b6a8987
feat: Detect host rules from env 2026-05-08 13:59:00 +02:00
c40ccabcbb
chore: add hostType 2026-05-08 13:02:56 +02:00
b1a30eaf1d
add policy 2026-05-08 11:54:39 +02:00
36f4bbc98a
set loglevel 2026-05-08 11:50:31 +02:00
e8df03cd18
add policies 2026-05-08 11:48:05 +02:00
856e86fd51
fix secretref 2026-05-08 09:49:27 +02:00
486542e783
chore(renovate-operator): use config.js 2026-05-08 09:37:30 +02:00
47a110d564
fix(renovate-operator): Fix inclusion of docker login 2026-05-08 09:24:12 +02:00
e7fe39a55c
fix(renovate-operator): Parse secrets correctly 2026-05-07 17:00:07 +02:00
3d7580dc3a
feat(renovate-operator): Fix ratelimits 2026-05-07 15:15:54 +02:00
26d989fc03
chore(renovate-operator): Decrease interval to 1h 2026-05-07 14:51:51 +02:00
029c916c92
chore(renovate-operator): decrease interval 2026-05-07 10:05:25 +02:00
df5c58690e
feat(renovate-operator): Add httproute 2026-05-07 09:22:59 +02:00
d863b7e339
fix: define image 2026-05-06 17:27:36 +02:00
35b2c83865
chore: re-enable renovate-job 2026-05-06 17:19:30 +02:00
00ff293759
fix: use correct api version for externalsecrets 2026-05-06 17:16:20 +02:00
2a4805b349
chore: temp disable renovatejob 2026-05-06 17:15:21 +02:00
631143f9f8
feat: Add renovate-operator 2026-05-06 17:12:49 +02:00
0633deb983
feat: Add Lidarr 2026-05-06 13:02:32 +02:00
cd0c3724c6
Revert "chore: Move pvc to datastore as this is cluster-specific"
This reverts commit 775a28e4bb.
2026-05-06 12:50:43 +02:00
775a28e4bb
chore: Move pvc to datastore as this is cluster-specific 2026-05-06 12:47:14 +02:00
edef9e4497 Merge pull request 'chore(deps): update linuxserver/prowlarr:2.3.5 docker digest to c5de2a8' (#59) from renovate/linuxserver-prowlarr-2.3.5 into main
Reviewed-on: #59
2026-04-28 08:52:42 +02:00
8851641147 Merge pull request 'chore(deps): update linuxserver/radarr:6.1.1 docker digest to b01097a' (#60) from renovate/linuxserver-radarr-6.1.1 into main
Reviewed-on: #60
2026-04-28 08:52:34 +02:00
2497dc06b6 Merge pull request 'chore(deps): update linuxserver/sonarr:4.0.17 docker digest to 3580aec' (#61) from renovate/linuxserver-sonarr-4.0.17 into main
Reviewed-on: #61
2026-04-28 08:52:26 +02:00
c44bae1323 Merge pull request 'chore(deps): update helm release argo-workflows to v1.0.13' (#62) from renovate/argo-workflows-1.x into main
Reviewed-on: #62
2026-04-28 08:52:19 +02:00
77bbba3552 Merge pull request 'chore(deps): update helm release alloy to v1.8.0' (#63) from renovate/alloy-1.x into main
Reviewed-on: #63
2026-04-28 08:52:08 +02:00
931a30d053 Merge pull request 'chore(deps): update helm release external-secrets to v2.4.0' (#64) from renovate/external-secrets-2.x into main
Reviewed-on: #64
2026-04-28 08:51:57 +02:00
68822950c9 Merge pull request 'chore(deps): update helm release kube-state-metrics to v7.3.0' (#65) from renovate/kube-state-metrics-7.x into main
Reviewed-on: #65
2026-04-28 08:51:47 +02:00
bd306516ed chore(deps): update helm release kube-state-metrics to v7.3.0 2026-04-28 00:07:05 +00:00
22db0e5f5b chore(deps): update helm release external-secrets to v2.4.0 2026-04-28 00:06:57 +00:00
ae87765c4b chore(deps): update helm release alloy to v1.8.0 2026-04-28 00:06:00 +00:00
5f258cd68a chore(deps): update helm release argo-workflows to v1.0.13 2026-04-28 00:05:40 +00:00
aac5c5e182 chore(deps): update linuxserver/sonarr:4.0.17 docker digest to 3580aec 2026-04-28 00:05:38 +00:00
e1c2e09a98 chore(deps): update linuxserver/radarr:6.1.1 docker digest to b01097a 2026-04-28 00:05:35 +00:00
69a5ecb317 chore(deps): update linuxserver/prowlarr:2.3.5 docker digest to c5de2a8 2026-04-28 00:05:32 +00:00
2b9630eb04
chore(gluetun): Rework port forward 2026-04-27 13:20:35 +02:00
bdeec6d819
chore: Add labeldrop for Loki 2026-04-24 15:06:24 +02:00
8c75b869f1
chore: Improve parsed metrics 2026-04-24 15:03:34 +02:00
9d55315f4b
chore: Add nullBytePolicy property 2026-04-17 21:46:49 +02:00
5c1a74db0e
chore: Refactor nfs PVC resource 2026-04-17 21:15:46 +02:00
bd7d2794d4
chore: Update gluetun config 2026-04-17 21:09:51 +02:00
184049745f
chore: Remove unused secrets 2026-04-16 09:03:05 +02:00
a5f515b88c Merge pull request 'chore(deps): update linuxserver/radarr:6.1.1 docker digest to 6f1dda1' (#54) from renovate/linuxserver-radarr-6.1.1 into main
Reviewed-on: #54
2026-04-14 09:01:50 +02:00
aa63bb3534 Merge pull request 'chore(deps): update linuxserver/sonarr:4.0.17 docker digest to 6854df9' (#55) from renovate/linuxserver-sonarr-4.0.17 into main
Reviewed-on: #55
2026-04-14 09:01:45 +02:00
de18f37ae4 Merge pull request 'chore(deps): update plexinc/pms-docker docker tag to v1.43.1.10611-1e34174b1' (#56) from renovate/plexinc-pms-docker-1.x into main
Reviewed-on: #56
2026-04-14 09:01:36 +02:00
ea108ab43b Merge pull request 'chore(deps): update helm release external-secrets to v2.3.0' (#57) from renovate/external-secrets-2.x into main
Reviewed-on: #57
2026-04-14 09:01:29 +02:00
9139953606 chore(deps): update helm release external-secrets to v2.3.0 2026-04-14 00:04:24 +00:00
68b9af1963 chore(deps): update plexinc/pms-docker docker tag to v1.43.1.10611-1e34174b1 2026-04-14 00:04:06 +00:00
d65d38bd7c chore(deps): update linuxserver/sonarr:4.0.17 docker digest to 6854df9 2026-04-14 00:04:00 +00:00
68f205934b chore(deps): update linuxserver/radarr:6.1.1 docker digest to 6f1dda1 2026-04-14 00:03:57 +00:00
ed703c63f8 Merge pull request 'chore(deps): update linuxserver/sonarr:4.0.17 docker digest to b5670a3' (#47) from renovate/linuxserver-sonarr-4.0.17 into main
Reviewed-on: #47
2026-04-07 10:21:18 +02:00
3d978e5b76 Merge pull request 'chore(deps): update helm release argo-workflows to v1.0.7' (#48) from renovate/argo-workflows-1.x into main
Reviewed-on: #48
2026-04-07 10:21:11 +02:00
aa3e1f2a61 Merge pull request 'chore(deps): update linuxserver/prowlarr docker tag to v2.3.5' (#49) from renovate/linuxserver-prowlarr-2.x into main
Reviewed-on: #49
2026-04-07 10:21:01 +02:00
6d80bdd53c Merge pull request 'chore(deps): update helm release alloy to v1.7.0' (#50) from renovate/alloy-1.x into main
Reviewed-on: #50
2026-04-07 10:20:09 +02:00
d8c7727f8e Merge pull request 'chore(deps): update helm release cloudnative-pg to v0.28.0' (#51) from renovate/cloudnative-pg-0.x into main
Reviewed-on: #51
2026-04-07 10:19:58 +02:00
1c2cc16f70 Merge pull request 'chore(deps): update linuxserver/radarr docker tag to v6.1.1' (#52) from renovate/linuxserver-radarr-6.x into main
Reviewed-on: #52
2026-04-07 10:19:53 +02:00
6832cabb3a chore(deps): update linuxserver/radarr docker tag to v6.1.1 2026-04-07 00:06:39 +00:00
fcab6c3c34 chore(deps): update helm release cloudnative-pg to v0.28.0 2026-04-07 00:06:35 +00:00
1fdfc1a1c3 chore(deps): update helm release alloy to v1.7.0 2026-04-07 00:05:41 +00:00
4a5f71729d chore(deps): update linuxserver/prowlarr docker tag to v2.3.5 2026-04-07 00:05:12 +00:00
2ac0f6791f chore(deps): update helm release argo-workflows to v1.0.7 2026-04-07 00:04:50 +00:00
ef221856b7 chore(deps): update linuxserver/sonarr:4.0.17 docker digest to b5670a3 2026-04-07 00:04:48 +00:00
b65ec8e109
fix: Sec correct rbac resources 2026-04-06 18:00:16 +02:00
4bfb8be326
chore: Rename secrets 2026-04-06 17:38:22 +02:00
8d9310931c
chore: Remove argo-workflow-sso from ArgoCD 2026-04-06 17:33:43 +02:00
cf9b1822b1
fix(gluetun): Add ip rule del command to poststart 2026-04-02 09:13:18 +02:00
80ae8c56da
chore: Use Authentik as oidc issuer 2026-04-02 08:32:07 +02:00
bd6739389b
chore: Add missing secret properties 2026-04-02 08:19:46 +02:00
ececbe0c6b
fix: Declare subject namespaces 2026-04-01 22:27:26 +02:00
f144751bb8
chore: RBAC improvements 2026-04-01 22:25:06 +02:00
0d7607a981
fix: Add rolebindings 2026-04-01 22:22:23 +02:00
49a33f3ea4
fix: indentation 2026-04-01 22:15:11 +02:00
2cf69ca950
feat: Add SSO RBAC authorization 2026-04-01 22:12:23 +02:00
abbb38c236
fix: Use correct redirectUrl 2026-04-01 21:53:42 +02:00
22caadfd4d
fix: Use correct indentation for SSO config 2026-04-01 21:51:47 +02:00
a15f95ab7d
fix: Rename secrets 2026-04-01 21:38:56 +02:00
ff4d1f2168
feat(argo-workflows): Enable SSO through ArgoCD dex 2026-04-01 21:35:16 +02:00
f684123734
chore: Update httproute parentRefs 2026-04-01 21:15:23 +02:00
1c2d531ff3
fix: Use correct indentation for httproute config 2026-04-01 21:12:27 +02:00
b89fe395bb
fix: remove double namespace declaration 2026-04-01 21:09:13 +02:00
2bc57f1cb6
fix: Typo 2026-04-01 21:08:15 +02:00
dce0fd8318
feat: Add Argo Workflows 2026-04-01 20:52:14 +02:00
2455c3575a Merge pull request 'chore(deps): update linuxserver/radarr:6.0.4 docker digest to c8a55bd' (#42) from renovate/linuxserver-radarr-6.0.4 into main
Reviewed-on: #42
2026-03-31 08:27:21 +02:00
acb1d5aa4c Merge pull request 'chore(deps): update helm release prometheus-operator-crds to v28.0.1' (#43) from renovate/prometheus-operator-crds-28.x into main
Reviewed-on: #43
2026-03-31 08:27:13 +02:00
f5d00eac13 Merge pull request 'chore(deps): update quay.io/prometheus-operator/prometheus-config-reloader docker tag to v0.90.1' (#44) from renovate/quay.io-prometheus-operator-prometheus-config-reloader-0.x into main
Reviewed-on: #44
2026-03-31 08:27:00 +02:00
db36f87384 chore(deps): update quay.io/prometheus-operator/prometheus-config-reloader docker tag to v0.90.1 2026-03-31 00:03:12 +00:00
c24443011c chore(deps): update helm release prometheus-operator-crds to v28.0.1 2026-03-31 00:02:27 +00:00
d379075161 chore(deps): update linuxserver/radarr:6.0.4 docker digest to c8a55bd 2026-03-31 00:02:25 +00:00
ef2ed1f3c8 revert dfe3e5ae4f
revert chore(argocd): Refactor to use helm chart
2026-03-28 10:06:05 +01:00
dfe3e5ae4f
chore(argocd): Refactor to use helm chart 2026-03-26 15:57:18 +01:00
93ecd0c14e Merge pull request 'chore(deps): update helm release prometheus-operator-crds to v28' (#41) from renovate/prometheus-operator-crds-28.x into main
Reviewed-on: #41
2026-03-24 07:46:10 +01:00
cff037bf18 chore(deps): update helm release prometheus-operator-crds to v28 2026-03-24 06:45:15 +00:00
ebaacddd55 Merge pull request 'chore(deps): update quay.io/prometheus-operator/prometheus-config-reloader docker tag to v0.90.0' (#40) from renovate/quay.io-prometheus-operator-prometheus-config-reloader-0.x into main
Reviewed-on: #40
2026-03-24 07:38:11 +01:00
b83f07f679 Merge pull request 'chore(deps): update helm release external-secrets to v2.2.0' (#39) from renovate/external-secrets-2.x into main
Reviewed-on: #39
2026-03-24 07:38:02 +01:00
18080990a1 Merge pull request 'chore(deps): update linuxserver/sonarr docker tag to v4.0.17' (#38) from renovate/linuxserver-sonarr-4.x into main
Reviewed-on: #38
2026-03-24 07:37:40 +01:00
a4398a854d Merge pull request 'chore(deps): update helm release prometheus-operator-crds to v27.0.1' (#37) from renovate/prometheus-operator-crds-27.x into main
Reviewed-on: #37
2026-03-24 07:37:34 +01:00
101ae3ead6 Merge pull request 'chore(deps): update helm release kube-state-metrics to v7.2.2' (#36) from renovate/kube-state-metrics-7.x into main
Reviewed-on: #36
2026-03-24 07:37:19 +01:00
37e82edb8f chore(deps): update quay.io/prometheus-operator/prometheus-config-reloader docker tag to v0.90.0 2026-03-24 00:04:05 +00:00
9b81f28bc9 chore(deps): update helm release external-secrets to v2.2.0 2026-03-24 00:03:55 +00:00
b9f088ba4e chore(deps): update linuxserver/sonarr docker tag to v4.0.17 2026-03-24 00:03:19 +00:00
262d46e1fd chore(deps): update helm release prometheus-operator-crds to v27.0.1 2026-03-24 00:03:15 +00:00
2d9df1992f chore(deps): update helm release kube-state-metrics to v7.2.2 2026-03-24 00:02:24 +00:00
74 changed files with 8723 additions and 247 deletions

View file

@ -6,6 +6,11 @@ metadata:
data: data:
config.alloy: |- config.alloy: |-
prometheus.exporter.unix "node" { prometheus.exporter.unix "node" {
set_collectors = [
"cpu", "diskstats", "filesystem", "loadavg",
"meminfo", "netdev", "netstat", "os",
"pressure", "processes", "stat", "uname", "vmstat",
]
} }
discovery.kubernetes "kubernetes_apiservers" { discovery.kubernetes "kubernetes_apiservers" {
@ -141,6 +146,11 @@ data:
source_labels = ["__meta_kubernetes_pod_node_name"] source_labels = ["__meta_kubernetes_pod_node_name"]
target_label = "node" target_label = "node"
} }
rule {
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
action = "labeldrop"
}
} }
discovery.relabel "kubernetes_services" { discovery.relabel "kubernetes_services" {
@ -249,6 +259,11 @@ data:
source_labels = ["__meta_kubernetes_pod_node_name"] source_labels = ["__meta_kubernetes_pod_node_name"]
target_label = "node" target_label = "node"
} }
rule {
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
action = "labeldrop"
}
} }
discovery.relabel "pod_logs" { discovery.relabel "pod_logs" {
@ -298,6 +313,11 @@ data:
target_label = "__path__" target_label = "__path__"
replacement = "/var/log/pods/*$1/*.log" replacement = "/var/log/pods/*$1/*.log"
} }
rule {
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
action = "labeldrop"
}
} }
local.file_match "pod_logs" { local.file_match "pod_logs" {
@ -352,9 +372,19 @@ data:
} }
} }
prometheus.relabel "cadvisor" {
forward_to = [prometheus.remote_write.default.receiver]
rule {
source_labels = ["__name__"]
regex = "container_(cpu_usage_seconds_total|memory_usage_bytes|memory_working_set_bytes|memory_rss|memory_cache|memory_swap|network_receive_bytes_total|network_transmit_bytes_total|network_receive_packets_total|network_transmit_packets_total|fs_reads_bytes_total|fs_writes_bytes_total|spec_cpu_quota|spec_cpu_period|spec_memory_limit_bytes|last_seen)"
action = "keep"
}
}
prometheus.scrape "kubernetes_nodes_cadvisor" { prometheus.scrape "kubernetes_nodes_cadvisor" {
targets = discovery.relabel.kubernetes_nodes_cadvisor.output targets = discovery.relabel.kubernetes_nodes_cadvisor.output
forward_to = [prometheus.remote_write.default.receiver] forward_to = [prometheus.relabel.cadvisor.receiver]
job_name = "kubernetes-nodes-cadvisor" job_name = "kubernetes-nodes-cadvisor"
scheme = "https" scheme = "https"

View file

@ -0,0 +1,15 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- secrets.yaml
helmCharts:
- name: argo-workflows
repo: https://argoproj.github.io/argo-helm
namespace: argo-workflows
releaseName: argo-workflows
version: 1.0.14
valuesFile: values.yaml

View file

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

View file

@ -0,0 +1,33 @@
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: argo-workflows-sso
namespace: argo-workflows
spec:
secretStoreRef:
name: vault-wheatley
kind: ClusterSecretStore
target:
name: argo-workflows-sso
template:
metadata:
labels:
app.kubernetes.io/part-of: argo-workflows
data:
- secretKey: client-id
remoteRef:
key: secrets/managed/argo-workflows/authentik-sso
property: client-id
conversionStrategy: Default
decodingStrategy: None
metadataPolicy: None
nullBytePolicy: Ignore
- secretKey: client-secret
remoteRef:
key: secrets/managed/argo-workflows/authentik-sso
property: client-secret
conversionStrategy: Default
decodingStrategy: None
metadataPolicy: None
nullBytePolicy: Ignore

View file

@ -0,0 +1,342 @@
## Custom resource configuration
crds:
# -- Install and upgrade CRDs
install: true
# -- Keep CRDs on chart uninstall
keep: true
# -- Use full CRDs with complete OpenAPI schemas. When false, uses minified CRDs with x-kubernetes-preserve-unknown-fields.
# Full CRDs are very large and are installed via a pre-install/pre-upgrade hook Job that uses server-side apply.
full: true
# -- Create ClusterRoles that extend existing ClusterRoles to interact with Argo Workflows CRDs.
## Ref: https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles
createAggregateRoles: true
# -- Restrict Argo to operate only in a single namespace (the namespace of the
# Helm release) by apply Roles and RoleBindings instead of the Cluster
# equivalents, and start workflow-controller with the --namespaced flag. Use it
# in clusters with strict access policy.
singleNamespace: false
workflow:
serviceAccount:
# -- Specifies whether a service account should be created
create: false
# -- Labels applied to created service account
labels: {}
# -- Annotations applied to created service account
annotations: {}
# -- Service account which is used to run workflows
name: "argo-workflow"
# -- Secrets with credentials to pull images from a private registry. Same format as `.Values.images.pullSecrets`
pullSecrets: []
rbac:
# -- Adds Role and RoleBinding for the above specified service account to be able to run workflows.
# A Role and Rolebinding pair is also created for each namespace in controller.workflowNamespaces (see below)
create: true
# -- Allows permissions for the Argo Agent. Only required if using http/plugin templates
agentPermissions: false
# -- Allows permissions for the Argo Artifact GC pod. Only required if using artifact gc
artifactGC: false
# -- Extra service accounts to be added to the RoleBinding
serviceAccounts: []
# - name: my-service-account
# namespace: my-namespace
# -- Additional rules for the service account that runs the workflows.
rules: []
controller:
rbac:
# -- Adds Role and RoleBinding for the controller.
create: true
# -- Allows controller to get, list, and watch certain k8s secrets
secretWhitelist: []
# -- Allows controller to get, list and watch all k8s secrets. Can only be used if secretWhitelist is empty.
accessAllSecrets: false
# -- Allows controller to create and update ConfigMaps. Enables memoization feature
writeConfigMaps: false
configMap:
# -- Create a ConfigMap for the controller
create: true
# -- ConfigMap name
name: ""
# -- ConfigMap annotations
annotations: {}
# -- enable Workflow Archive to store the status of workflows. Postgres and MySQL (>= 5.7.8) are available.
## Ref: https://argo-workflows.readthedocs.io/en/stable/workflow-archive/
persistence: {}
# connectionPool:
# maxIdleConns: 100
# maxOpenConns: 0
# # save the entire workflow into etcd and DB
# nodeStatusOffLoad: false
# # enable archiving of old workflows
# archive: false
# postgresql:
# host: localhost
# port: 5432
# database: postgres
# tableName: argo_workflows
# # the database secrets must be in the same namespace of the controller
# userNameSecret:
# name: argo-postgres-config
# key: username
# passwordSecret:
# name: argo-postgres-config
# key: password
# ssl: true
# # sslMode must be one of: disable, require, verify-ca, verify-full
# # you can find more information about those ssl options here: https://godoc.org/github.com/lib/pq
# sslMode: require
# mysql:
# host: localhost
# port: 3306
# database: argo
# tableName: argo_workflows
# userNameSecret:
# name: argo-mysql-config
# key: username
# passwordSecret:
# name: argo-mysql-config
# key: password
# -- Default values that will apply to all Workflows from this controller, unless overridden on the Workflow-level.
# Only valid for 2.7+
## See more: https://argo-workflows.readthedocs.io/en/stable/default-workflow-specs/
workflowDefaults: {}
# spec:
# ttlStrategy:
# secondsAfterCompletion: 86400
# # Ref: https://argo-workflows.readthedocs.io/en/stable/artifact-repository-ref/
# artifactRepositoryRef:
# configMap: my-artifact-repository # default is "artifact-repositories"
# key: v2-s3-artifact-repository # default can be set by the `workflows.argoproj.io/default-artifact-repository` annotation in config map.
serviceAccount:
# -- Create a service account for the controller
create: true
# -- Service account name
name: ""
# -- Labels applied to created service account
labels: {}
# -- Annotations applied to created service account
annotations: {}
# -- Workflow controller name string
name: workflow-controller
# -- Specify all namespaces where this workflow controller instance will manage
# workflows. This controls where the service account and RBAC resources will
# be created. Only valid when singleNamespace is false.
workflowNamespaces:
- default
logging:
# -- Set the logging level (one of: `debug`, `info`, `warn`, `error`)
level: info
# -- Set the glog logging level
globallevel: "0"
# -- Set the logging format (one of: `text`, `json`)
format: "text"
server:
# -- Deploy the Argo Server
enabled: true
# -- Value for base href in index.html. Used if the server is running behind reverse proxy under subpath different from /.
## only updates base url of resources on client side,
## it's expected that a proxy server rewrites the request URL and gets rid of this prefix
## https://github.com/argoproj/argo-workflows/issues/716#issuecomment-433213190
baseHref: /
image:
# -- Registry to use for the server
registry: quay.io
# -- Repository to use for the server
repository: argoproj/argocli
rbac:
# -- Adds Role and RoleBinding for the server.
create: true
# -- Servers container-level security context
serviceAccount:
# -- Create a service account for the server
create: true
# -- Service account name
name: ""
# -- Labels applied to created service account
labels: {}
# -- Annotations applied to created service account
annotations: {}
# -- A list of supported authentication modes. Available values are `server`, `client`, or `sso`. If you provide sso, please configure `.Values.server.sso` as well.
## Ref: https://argo-workflows.readthedocs.io/en/stable/argo-server-auth-mode/
authModes:
- sso
## Ingress configuration.
# ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
ingress:
# -- Enable an ingress resource
enabled: false
# Gateway API HTTPRoute configuration
# NOTE: Gateway API support is in EXPERIMENTAL status
# Support depends on your Gateway controller implementation
# Some controllers may require additional configuration (e.g., BackendTLSPolicy for HTTPS backends)
# Refer to https://gateway-api.sigs.k8s.io/implementations/ for controller-specific details
httproute:
# -- Enable HTTPRoute resource for Argo Workflows server (Gateway API)
enabled: true
# -- Additional HTTPRoute labels
labels: {}
# -- Additional HTTPRoute annotations
annotations: {}
# -- Gateway API parentRefs for the HTTPRoute
## Must reference an existing Gateway
# @default -- `[]` (See [values.yaml])
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: internal
namespace: kube-system
sectionName: https
# -- List of hostnames for the HTTPRoute
# @default -- `[]` (See [values.yaml])
hostnames:
- "workflows.peterg.nl"
# @default -- `[]` (See [values.yaml])
rules:
- matches:
- path:
type: PathPrefix
value: /
# filters: []
# - type: RequestHeaderModifier
# requestHeaderModifier:
# add:
# - name: X-Custom-Header
# value: custom-value
# Gateway API BackendTLSPolicy configuration
# NOTE: BackendTLSPolicy support is in EXPERIMENTAL status
# Required for HTTPS backends when using Gateway API
# Not all Gateway controllers support this resource (e.g., Cilium does not support it yet)
backendTLSPolicy:
# -- Enable BackendTLSPolicy resource for Argo Workflows server (Gateway API)
enabled: false
# -- Additional BackendTLSPolicy labels
labels: {}
# -- Additional BackendTLSPolicy annotations
annotations: {}
# -- Target references for the BackendTLSPolicy
# @default -- `[]` (See [values.yaml])
targetRefs: []
# - group: ""
# kind: Service
# name: argo-workflows-server
# sectionName: https
# -- TLS validation configuration
# @default -- `{}` (See [values.yaml])
validation: {}
# hostname: argo-workflows-server.argo.svc.cluster.local
# caCertificateRefs:
# - name: example-ca-cert
# group: ""
# kind: ConfigMap
# wellKnownCACertificates: System
clusterWorkflowTemplates:
# -- Create a ClusterRole and CRB for the server to access ClusterWorkflowTemplates.
enabled: true
# -- Give the server permissions to edit ClusterWorkflowTemplates.
enableEditing: true
# SSO configuration when SSO is specified as a server auth mode.
sso:
enabled: true
issuer: https://auth.peterg.nl/application/o/argo-workflows/
clientId:
name: argo-workflows-sso
key: client-id
clientSecret:
name: argo-workflows-sso
key: client-secret
redirectUrl: https://workflows.peterg.nl/oauth2/callback
scopes:
- groups
rbac:
enabled: true
# -- Array of extra K8s manifests to deploy
extraObjects:
- apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: argo-workflows
annotations:
workflows.argoproj.io/rbac-rule: "'ArgoCD Admins' in groups"
workflows.argoproj.io/rbac-rule-precedence: "1"
- apiVersion: v1
kind: ServiceAccount
metadata:
name: read-only
namespace: argo-workflows
annotations:
workflows.argoproj.io/rbac-rule: "true"
workflows.argoproj.io/rbac-rule-precedence: "0"
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: argo-workflows-admin-user
subjects:
- kind: ServiceAccount
name: admin-user
namespace: argo-workflows
roleRef:
kind: ClusterRole
name: argo-workflows-admin
apiGroup: rbac.authorization.k8s.io
- apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: argo-workflows-read-only
subjects:
- kind: ServiceAccount
name: read-only
namespace: argo-workflows
roleRef:
kind: ClusterRole
name: argo-workflows-view
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
@ -78,3 +80,68 @@ spec:
selfHeal: true selfHeal: true
syncOptions: syncOptions:
- ServerSideApply=true - ServerSideApply=true
---
apiVersion: argoproj.io/v1alpha1
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:
name: argo-workflows
namespace: argocd
spec:
project: default
source:
repoURL: https://code.peterg.nl/wheatley/kubernetes.git
path: k8s-peterg/argo-workflows
targetRevision: HEAD
destination:
server: https://kubernetes.default.svc
namespace: argo-workflows
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- ServerSideApply=true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: renovate-operator
namespace: argocd
spec:
project: default
source:
repoURL: https://code.peterg.nl/wheatley/kubernetes.git
path: k8s-peterg/renovate-operator
targetRevision: HEAD
destination:
server: https://kubernetes.default.svc
namespace: renovate-operator
syncPolicy:
automated:
prune: true
selfHeal: true

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
@ -143,6 +168,25 @@ spec:
--- ---
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application
metadata:
name: lidarr
namespace: argocd
spec:
project: default
source:
repoURL: https://code.peterg.nl/wheatley/kubernetes.git
path: k8s-wheatley/lidarr
targetRevision: HEAD
destination:
server: https://10.13.37.10:6443
namespace: lidarr
syncPolicy:
automated:
prune: true
selfHeal: true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata: metadata:
name: prowlarr name: prowlarr
namespace: argocd namespace: argocd
@ -181,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
@ -197,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

@ -27,6 +27,7 @@ spec:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
metadataPolicy: None metadataPolicy: None
nullBytePolicy: Ignore
- secretKey: key - secretKey: key
remoteRef: remoteRef:
key: secrets/provisioned/tls-wildcard-peterg-nl key: secrets/provisioned/tls-wildcard-peterg-nl
@ -34,3 +35,4 @@ spec:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
metadataPolicy: None metadataPolicy: None
nullBytePolicy: Ignore

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.1.0 version: 2.5.0

View file

@ -0,0 +1,20 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: renovate-config
namespace: renovate-operator
data:
config.js: |-
module.exports = {
platform: 'forgejo',
endpoint: 'https://code.peterg.nl/api/v1/',
gitAuthor: 'Renovate <renovate@peterg.nl>',
username: 'renovate',
onboardingConfig: {
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: ['config:recommended'],
},
optimizeForDisabled: true,
persistRepoData: true,
};

View file

@ -0,0 +1,19 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: renovate-operator
resources:
- configmap.yaml
- namespace.yaml
- policies.yaml
- renovate-job.yaml
- secrets.yaml
helmCharts:
- name: renovate-operator
repo: https://helm.mogenius.com/public
namespace: renovate-operator
releaseName: renovate-operator
version: "4.8.1"
valuesFile: values.yaml

View file

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

View file

@ -0,0 +1,37 @@
---
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-internet-only
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 10.0.0.0/8
- 192.168.0.0/16
- 172.16.0.0/12
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: kubernetes-egress
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
- podSelector:
matchLabels:
k8s-app: kube-apiserver
- ports:
- protocol: TCP
port: 6443

View file

@ -0,0 +1,27 @@
---
apiVersion: renovate-operator.mogenius.com/v1alpha1
kind: RenovateJob
metadata:
name: renovate
namespace: renovate-operator
spec:
schedule: "0 * * * *"
provider:
name: forgejo
endpoint: https://code.peterg.nl/api/v1/
image: ghcr.io/renovatebot/renovate:43.161.0
secretRef: renovate-operator-secrets
parallelism: 1
skipForks: true
extraVolumes:
- name: renovate-config
configMap:
name: renovate-config
extraVolumeMounts:
- name: renovate-config
mountPath: /config
extraEnv:
- name: LOG_LEVEL
value: debug
- name: RENOVATE_CONFIG_FILE
value: /config/config.js

View file

@ -0,0 +1,22 @@
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: renovate-operator-secrets
namespace: renovate-operator
spec:
refreshInterval: "15s"
secretStoreRef:
name: vault-wheatley
kind: ClusterSecretStore
target:
name: renovate-operator-secrets
data:
- secretKey: RENOVATE_TOKEN
remoteRef:
key: /secrets/managed/renovate/token
property: RENOVATE_TOKEN
- secretKey: GITHUB_COM_TOKEN
remoteRef:
key: /secrets/managed/renovate/token
property: GITHUB_COM_TOKEN

View file

@ -0,0 +1,20 @@
fullnameOverride: "renovate-operator"
metrics:
enabled: true
serviceMonitor:
enabled: false
crd:
install: true
mode: template
rbac:
ownNamespaceOnly: true
route:
enabled: true
hostnames:
parentRefs:
- name: internal
namespace: kube-system
sectionName: https

View file

@ -5,7 +5,13 @@ metadata:
name: alloy-config name: alloy-config
data: data:
config.alloy: |- config.alloy: |-
prometheus.exporter.unix "node" {} prometheus.exporter.unix "node" {
set_collectors = [
"cpu", "diskstats", "filesystem", "loadavg",
"meminfo", "netdev", "netstat", "os",
"pressure", "processes", "stat", "uname", "vmstat",
]
}
discovery.kubernetes "kubernetes_apiservers" { discovery.kubernetes "kubernetes_apiservers" {
role = "endpoints" role = "endpoints"
@ -152,6 +158,11 @@ data:
source_labels = ["__meta_kubernetes_pod_node_name"] source_labels = ["__meta_kubernetes_pod_node_name"]
target_label = "node" target_label = "node"
} }
rule {
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
action = "labeldrop"
}
} }
discovery.relabel "kubernetes_services" { discovery.relabel "kubernetes_services" {
@ -260,6 +271,11 @@ data:
source_labels = ["__meta_kubernetes_pod_node_name"] source_labels = ["__meta_kubernetes_pod_node_name"]
target_label = "node" target_label = "node"
} }
rule {
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
action = "labeldrop"
}
} }
discovery.relabel "pod_logs" { discovery.relabel "pod_logs" {
@ -309,6 +325,11 @@ data:
target_label = "__path__" target_label = "__path__"
replacement = "/var/log/pods/*$1/*.log" replacement = "/var/log/pods/*$1/*.log"
} }
rule {
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
action = "labeldrop"
}
} }
local.file_match "pod_logs" { local.file_match "pod_logs" {
@ -369,9 +390,19 @@ data:
} }
} }
prometheus.relabel "cadvisor" {
forward_to = [prometheus.remote_write.default.receiver]
rule {
source_labels = ["__name__"]
regex = "container_(cpu_usage_seconds_total|memory_usage_bytes|memory_working_set_bytes|memory_rss|memory_cache|memory_swap|network_receive_bytes_total|network_transmit_bytes_total|network_receive_packets_total|network_transmit_packets_total|fs_reads_bytes_total|fs_writes_bytes_total|spec_cpu_quota|spec_cpu_period|spec_memory_limit_bytes|last_seen)"
action = "keep"
}
}
prometheus.scrape "kubernetes_nodes_cadvisor" { prometheus.scrape "kubernetes_nodes_cadvisor" {
targets = discovery.relabel.kubernetes_nodes_cadvisor.output targets = discovery.relabel.kubernetes_nodes_cadvisor.output
forward_to = [prometheus.remote_write.default.receiver] forward_to = [prometheus.relabel.cadvisor.receiver]
job_name = "kubernetes-nodes-cadvisor" job_name = "kubernetes-nodes-cadvisor"
scheme = "https" scheme = "https"
clustering { clustering {

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.27.1 version: 0.28.2
valuesFile: values.yaml valuesFile: values.yaml

View file

@ -27,6 +27,7 @@ spec:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
metadataPolicy: None metadataPolicy: None
nullBytePolicy: Ignore
- secretKey: key - secretKey: key
remoteRef: remoteRef:
key: secrets/provisioned/tls-wildcard-wheatley-in key: secrets/provisioned/tls-wildcard-wheatley-in
@ -34,3 +35,4 @@ spec:
conversionStrategy: Default conversionStrategy: Default
decodingStrategy: None decodingStrategy: None
metadataPolicy: None metadataPolicy: None
nullBytePolicy: Ignore

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.1.0 version: 2.5.0

View file

@ -0,0 +1,9 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: lidarr-envs
data:
PUID: "1000"
PGID: "1000"
TZ: Europe/Amsterdam

View file

@ -0,0 +1,55 @@
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: lidarr
labels:
app: lidarr
spec:
replicas: 1
serviceName: lidarr
selector:
matchLabels:
app: lidarr
template:
metadata:
labels:
app: lidarr
spec:
containers:
- name: lidarr
image: linuxserver/lidarr
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8686
envFrom:
- configMapRef:
name: lidarr-envs
volumeMounts:
- mountPath: /config
name: lidarr-config
- mountPath: /shared/media/music
name: nfs-media-music
- mountPath: /shared/media/downloads
name: nfs-media-downloads
securityContext:
seccompProfile:
type: RuntimeDefault
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
add:
- "CHOWN"
- "SETUID"
- "SETGID"
volumes:
- name: lidarr-config
persistentVolumeClaim:
claimName: lidarr-storage
- name: nfs-media-music
persistentVolumeClaim:
claimName: nfs-media-music
- 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: lidarr-route
spec:
parentRefs:
- name: internal
namespace: kube-system
sectionName: https
hostnames:
- "lidarr.wheatley.in"
rules:
- backendRefs:
- name: lidarr
port: 80

View file

@ -0,0 +1,50 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: lidarr
resources:
- configmap.yaml
- deployments.yaml
- ingress.yaml
- pvc.yaml
- services.yaml
- namespace.yaml
components:
- ../../kustomize-bases/nfs-media/components/music
- ../../kustomize-bases/nfs-media/components/downloads
patches:
- target:
kind: PersistentVolume
name: nfs-media-music
patch: |
- op: replace
path: /metadata/name
value: nfs-media-lidarr-music
- target:
kind: PersistentVolumeClaim
name: nfs-media-music
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-lidarr-music
- target:
kind: PersistentVolume
name: nfs-media-downloads
patch: |
- op: replace
path: /metadata/name
value: nfs-media-lidarr-downloads
- target:
kind: PersistentVolumeClaim
name: nfs-media-downloads
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-lidarr-downloads
images:
- name: linuxserver/lidarr
newTag: 3.1.3-nightly@sha256:1e6019d60c5f16e73d4656a1d97d1f6ec48c8389695c0670a845fe8932b106a2

View file

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

View file

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

View file

@ -2,11 +2,11 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: qbittorrent name: lidarr
spec: spec:
selector: selector:
app: qbittorrent app: lidarr
ports: ports:
- port: 80 - port: 80
protocol: TCP protocol: TCP
targetPort: 8112 targetPort: 8686

View file

@ -28,8 +28,14 @@ spec:
volumeMounts: volumeMounts:
- mountPath: /config - mountPath: /config
name: plex-config name: plex-config
- mountPath: /data - mountPath: /data/movies
name: nfs-media name: nfs-media-movies
- mountPath: /data/series
name: nfs-media-series
- mountPath: /data/anime
name: nfs-media-anime
- mountPath: /data/music
name: nfs-media-music
securityContext: securityContext:
seccompProfile: seccompProfile:
type: RuntimeDefault type: RuntimeDefault
@ -45,6 +51,15 @@ spec:
- name: plex-config - name: plex-config
persistentVolumeClaim: persistentVolumeClaim:
claimName: plex-storage claimName: plex-storage
- name: nfs-media - name: nfs-media-movies
persistentVolumeClaim: persistentVolumeClaim:
claimName: nfs-media claimName: nfs-media-movies
- name: nfs-media-series
persistentVolumeClaim:
claimName: nfs-media-series
- name: nfs-media-anime
persistentVolumeClaim:
claimName: nfs-media-anime
- name: nfs-media-music
persistentVolumeClaim:
claimName: nfs-media-music

View file

@ -12,6 +12,94 @@ resources:
- services.yaml - services.yaml
- namespace.yaml - namespace.yaml
components:
- ../../kustomize-bases/nfs-media/components/movies
- ../../kustomize-bases/nfs-media/components/series
- ../../kustomize-bases/nfs-media/components/anime
- ../../kustomize-bases/nfs-media/components/music
patches:
- target:
kind: PersistentVolume
name: nfs-media-movies
patch: |
- op: replace
path: /metadata/name
value: nfs-media-plex-movies
- op: replace
path: /spec/accessModes/0
value: ReadOnlyMany
- target:
kind: PersistentVolumeClaim
name: nfs-media-movies
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-plex-movies
- op: replace
path: /spec/accessModes/0
value: ReadOnlyMany
- target:
kind: PersistentVolume
name: nfs-media-series
patch: |
- op: replace
path: /metadata/name
value: nfs-media-plex-series
- op: replace
path: /spec/accessModes/0
value: ReadOnlyMany
- target:
kind: PersistentVolumeClaim
name: nfs-media-series
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-plex-series
- op: replace
path: /spec/accessModes/0
value: ReadOnlyMany
- target:
kind: PersistentVolume
name: nfs-media-anime
patch: |
- op: replace
path: /metadata/name
value: nfs-media-plex-anime
- op: replace
path: /spec/accessModes/0
value: ReadOnlyMany
- target:
kind: PersistentVolumeClaim
name: nfs-media-anime
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-plex-anime
- op: replace
path: /spec/accessModes/0
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
newTag: 1.43.0.10492-121068a07@sha256:1131c4cd21fa22f8196f749f1dbb69af306776c3c83c7f5b061e51dc49bcff7f newTag: 1.43.2.10687-563d026ea@sha256:c37106c57fed7a6624f5dee5a3ce460ff011f09a2aa7f4ee9e8dbbd08ae1b87e

View file

@ -10,36 +10,3 @@ spec:
resources: resources:
requests: requests:
storage: 20Gi storage: 20Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media
spec:
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-plex
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-plex
spec:
capacity:
storage: 40Ti
accessModes:
- ReadOnlyMany
nfs:
server: 10.0.69.10
path: /tank/media
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain

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.0@sha256:9ef5d8bf832edcacb6082f9262cb36087854e78eb7b1c3e1d4375056055b2d82 newTag: 2.3.5@sha256:c9fe528f34b1fd3715438b6f6d6991d64e2965f2c055db36398bc66a0e7eab01

View file

@ -9,22 +9,26 @@ data:
VPN_TYPE: "wireguard" VPN_TYPE: "wireguard"
VPN_PORT_FORWARDING: on VPN_PORT_FORWARDING: on
VPN_PORT_FORWARDING_PROVIDER: protonvpn VPN_PORT_FORWARDING_PROVIDER: protonvpn
VPN_PORT_FORWARDING_UP_COMMAND: | VPN_PORT_FORWARDING_UP_COMMAND: "/scripts/port-up.sh"
/bin/sh -c ' VPN_PORT_FORWARDING_DOWN_COMMAND: "/scripts/port-down.sh"
FIREWALL_OUTBOUND_SUBNETS: 10.244.0.0/16,10.96.0.0/12
FIREWALL_INPUT_PORTS: "8112"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: gluetun-scripts
data:
port-up.sh: |
#!/bin/sh
wget -O- --retry-connrefused \ wget -O- --retry-connrefused \
--post-data "json={\"listen_port\":{{PORTS}},\"current_network_interface\":\"tun0\",\"random_port\":false,\"upnp\":false}" \ --post-data "json={\"listen_port\":{{PORTS}},\"current_network_interface\":\"tun0\",\"random_port\":false,\"upnp\":false}" \
http://127.0.0.1:8112/api/v2/app/setPreferences 2>&1 http://127.0.0.1:8112/api/v2/app/setPreferences 2>&1
' port-down.sh: |
VPN_PORT_FORWARDING_DOWN_COMMAND: | #!/bin/sh
/bin/sh -c '
wget -O- --retry-connrefused \ wget -O- --retry-connrefused \
--post-data "json={\"listen_port\":0,\"current_network_interface\":\"lo\"}" \ --post-data "json={\"listen_port\":0,\"current_network_interface\":\"lo\"}" \
http://127.0.0.1:8112/api/v2/app/setPreferences 2>&1 http://127.0.0.1:8112/api/v2/app/setPreferences 2>&1
'
FIREWALL_OUTBOUND_SUBNETS: 10.244.0.0/16,10.96.0.0/12
FIREWALL_INPUT_PORTS: "8112"
DNS_KEEP_NAMESERVER: on
DOT: off
--- ---
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap

View file

@ -17,25 +17,39 @@ 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
ports: ports:
- name: http - name: qbit-http
containerPort: 8112 containerPort: 8112
protocol: TCP protocol: TCP
envFrom: envFrom:
- configMapRef: - configMapRef:
name: gluetun-envs name: gluetun-envs
- secretRef:
name: gluetun-env-secrets
volumeMounts: volumeMounts:
- mountPath: /dev/net/tun - mountPath: /dev/net/tun
name: dev-tun name: dev-tun
- mountPath: "/gluetun/wireguard" - mountPath: /gluetun/wireguard
name: gluetun-wgconfig name: gluetun-wgconfig
readOnly: true readOnly: true
- name: gluetun-scripts
mountPath: /scripts
- name: gluetun-tmp - name: gluetun-tmp
mountPath: /tmp/gluetun mountPath: /tmp/gluetun
restartPolicy: Always restartPolicy: Always
lifecycle:
postStart:
exec:
command:
[
"/bin/sh",
"-c",
"(ip rule del table 51820; ip -6 rule del table 51820) || true",
]
readinessProbe: readinessProbe:
exec: exec:
command: command:
@ -78,7 +92,7 @@ spec:
- mountPath: /config - mountPath: /config
name: qbittorrent-config name: qbittorrent-config
- mountPath: /shared/media/downloads - mountPath: /shared/media/downloads
name: nfs-media name: nfs-media-downloads
securityContext: securityContext:
seccompProfile: seccompProfile:
type: RuntimeDefault type: RuntimeDefault
@ -98,7 +112,7 @@ spec:
name: unpackerr-env-secrets name: unpackerr-env-secrets
volumeMounts: volumeMounts:
- mountPath: /shared/media/downloads - mountPath: /shared/media/downloads
name: nfs-media name: nfs-media-downloads
securityContext: securityContext:
seccompProfile: seccompProfile:
type: RuntimeDefault type: RuntimeDefault
@ -119,8 +133,12 @@ spec:
- name: gluetun-wgconfig - name: gluetun-wgconfig
secret: secret:
secretName: gluetun-wgconfig secretName: gluetun-wgconfig
- name: gluetun-scripts
configMap:
name: gluetun-scripts
defaultMode: 0755
- name: gluetun-tmp - name: gluetun-tmp
emptyDir: {} emptyDir: {}
- name: nfs-media - name: nfs-media-downloads
persistentVolumeClaim: persistentVolumeClaim:
claimName: nfs-media claimName: nfs-media-downloads

View file

@ -14,3 +14,16 @@ spec:
- backendRefs: - backendRefs:
- name: qbittorrent - name: qbittorrent
port: 80 port: 80
---
apiVersion: v1
kind: Service
metadata:
name: qbittorrent
spec:
selector:
app: qbittorrent
ports:
- port: 80
protocol: TCP
targetPort: 8112

View file

@ -9,9 +9,27 @@ resources:
- ingress.yaml - ingress.yaml
- pvc.yaml - pvc.yaml
- secrets.yaml - secrets.yaml
- services.yaml
- namespace.yaml - namespace.yaml
components:
- ../../kustomize-bases/nfs-media/components/downloads
patches:
- target:
kind: PersistentVolume
name: nfs-media-downloads
patch: |
- op: replace
path: /metadata/name
value: nfs-media-qbittorrent-downloads
- target:
kind: PersistentVolumeClaim
name: nfs-media-downloads
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-qbittorrent-downloads
images: images:
- name: ghcr.io/qdm12/gluetun - name: ghcr.io/qdm12/gluetun
newTag: v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab newTag: v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab

View file

@ -10,36 +10,3 @@ spec:
resources: resources:
requests: requests:
storage: 5Gi storage: 5Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-qbittorrent
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-qbittorrent
spec:
capacity:
storage: 40Ti
accessModes:
- ReadWriteMany
nfs:
server: 10.0.69.10
path: /tank/media/downloads
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain

View file

@ -17,6 +17,24 @@ spec:
remoteRef: remoteRef:
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: 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/qbittorrent/gluetun-env-secrets
property: HTTP_CONTROL_SERVER_AUTH_DEFAULT_ROLE
--- ---
apiVersion: external-secrets.io/v1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret

View file

@ -28,8 +28,10 @@ spec:
volumeMounts: volumeMounts:
- mountPath: /config - mountPath: /config
name: radarr-config name: radarr-config
- mountPath: /shared/media - mountPath: /shared/media/movies
name: nfs-media name: nfs-media-movies
- mountPath: /shared/media/downloads
name: nfs-media-downloads
securityContext: securityContext:
seccompProfile: seccompProfile:
type: RuntimeDefault type: RuntimeDefault
@ -45,6 +47,9 @@ spec:
- name: radarr-config - name: radarr-config
persistentVolumeClaim: persistentVolumeClaim:
claimName: radarr-storage claimName: radarr-storage
- name: nfs-media - name: nfs-media-movies
persistentVolumeClaim: persistentVolumeClaim:
claimName: nfs-media claimName: nfs-media-movies
- name: nfs-media-downloads
persistentVolumeClaim:
claimName: nfs-media-downloads

View file

@ -12,6 +12,40 @@ resources:
- services.yaml - services.yaml
- namespace.yaml - namespace.yaml
components:
- ../../kustomize-bases/nfs-media/components/movies
- ../../kustomize-bases/nfs-media/components/downloads
patches:
- target:
kind: PersistentVolume
name: nfs-media-movies
patch: |
- op: replace
path: /metadata/name
value: nfs-media-radarr-movies
- target:
kind: PersistentVolumeClaim
name: nfs-media-movies
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-radarr-movies
- target:
kind: PersistentVolume
name: nfs-media-downloads
patch: |
- op: replace
path: /metadata/name
value: nfs-media-radarr-downloads
- target:
kind: PersistentVolumeClaim
name: nfs-media-downloads
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-radarr-downloads
images: images:
- name: linuxserver/radarr - name: linuxserver/radarr
newTag: 6.0.4@sha256:ca43905eaf2dd11425efdcfe184892e43806b1ae0a830440c825cecbc2629cfb newTag: 6.1.1@sha256:079e48870584baf2a3e7e43e7ba6d3c834555931851a59c82c51cc792d285caf

View file

@ -10,36 +10,3 @@ spec:
resources: resources:
requests: requests:
storage: 5Gi storage: 5Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-radarr
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-radarr
spec:
capacity:
storage: 40Ti
accessModes:
- ReadWriteMany
nfs:
server: 10.0.69.10
path: /tank/media
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain

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
@ -28,8 +29,12 @@ spec:
volumeMounts: volumeMounts:
- mountPath: /config - mountPath: /config
name: sonarr-config name: sonarr-config
- mountPath: /shared/media - mountPath: /shared/media/series
name: nfs-media name: nfs-media-series
- mountPath: /shared/media/anime
name: nfs-media-anime
- mountPath: /shared/media/downloads
name: nfs-media-downloads
securityContext: securityContext:
seccompProfile: seccompProfile:
type: RuntimeDefault type: RuntimeDefault
@ -45,6 +50,12 @@ spec:
- name: sonarr-config - name: sonarr-config
persistentVolumeClaim: persistentVolumeClaim:
claimName: sonarr-storage claimName: sonarr-storage
- name: nfs-media - name: nfs-media-series
persistentVolumeClaim: persistentVolumeClaim:
claimName: nfs-media claimName: nfs-media-series
- name: nfs-media-anime
persistentVolumeClaim:
claimName: nfs-media-anime
- name: nfs-media-downloads
persistentVolumeClaim:
claimName: nfs-media-downloads

View file

@ -12,6 +12,55 @@ resources:
- services.yaml - services.yaml
- namespace.yaml - namespace.yaml
components:
- ../../kustomize-bases/nfs-media/components/series
- ../../kustomize-bases/nfs-media/components/anime
- ../../kustomize-bases/nfs-media/components/downloads
patches:
- target:
kind: PersistentVolume
name: nfs-media-series
patch: |
- op: replace
path: /metadata/name
value: nfs-media-sonarr-series
- target:
kind: PersistentVolumeClaim
name: nfs-media-series
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-sonarr-series
- target:
kind: PersistentVolume
name: nfs-media-anime
patch: |
- op: replace
path: /metadata/name
value: nfs-media-sonarr-anime
- target:
kind: PersistentVolumeClaim
name: nfs-media-anime
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-sonarr-anime
- target:
kind: PersistentVolume
name: nfs-media-downloads
patch: |
- op: replace
path: /metadata/name
value: nfs-media-sonarr-downloads
- target:
kind: PersistentVolumeClaim
name: nfs-media-downloads
patch: |
- op: replace
path: /spec/volumeName
value: nfs-media-sonarr-downloads
images: images:
- name: linuxserver/sonarr - name: linuxserver/sonarr
newTag: 4.0.16@sha256:21c1c3d52248589bb064f5adafec18cad45812d7a01d317472955eef051e619b newTag: 4.0.17@sha256:0b5c4803f92456fb9b65bae8375716ea120b4ea17b3cced7da32b63f0085782b

View file

@ -9,37 +9,4 @@ spec:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
requests: requests:
storage: 5Gi storage: 10Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-sonarr
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-sonarr
spec:
capacity:
storage: 40Ti
accessModes:
- ReadWriteMany
nfs:
server: 10.0.69.10
path: /tank/media
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain

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,14 +9,14 @@ resources:
helmCharts: helmCharts:
- name: alloy - name: alloy
repo: https://grafana.github.io/helm-charts repo: https://grafana.github.io/helm-charts
version: "1.6.2" version: "1.8.2"
releaseName: alloy releaseName: alloy
valuesFile: values.yaml valuesFile: values.yaml
- name: kube-state-metrics - name: kube-state-metrics
repo: https://prometheus-community.github.io/helm-charts repo: https://prometheus-community.github.io/helm-charts
version: "7.2.1" version: "7.4.0"
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: "27.0.0" 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.89.0@sha256:cb4ac6a56555bef0e202bec11e367dfe07ffb241cf4d30566b12b864692607a8 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.

View file

@ -13,5 +13,5 @@ helmCharts:
repo: https://helm.cilium.io repo: https://helm.cilium.io
namespace: kube-system namespace: kube-system
releaseName: cilium releaseName: cilium
version: 1.18.6 version: 1.18.10
valuesFile: values.yaml valuesFile: values.yaml

View file

@ -0,0 +1,5 @@
---
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- pvc.yaml

View file

@ -0,0 +1,33 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-anime
spec:
capacity:
storage: 40Ti
accessModes:
- ReadWriteMany
nfs:
server: 10.0.69.10
path: /tank/media/anime
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media-anime
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-anime

View file

@ -0,0 +1,5 @@
---
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- pvc.yaml

View file

@ -0,0 +1,33 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-downloads
spec:
capacity:
storage: 40Ti
accessModes:
- ReadWriteMany
nfs:
server: 10.0.69.10
path: /tank/media/downloads
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media-downloads
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-downloads

View file

@ -0,0 +1,5 @@
---
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- pvc.yaml

View file

@ -0,0 +1,33 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-movies
spec:
capacity:
storage: 40Ti
accessModes:
- ReadWriteMany
nfs:
server: 10.0.69.10
path: /tank/media/movies
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media-movies
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-movies

View file

@ -0,0 +1,5 @@
---
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- pvc.yaml

View file

@ -0,0 +1,33 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-music
spec:
capacity:
storage: 40Ti
accessModes:
- ReadWriteMany
nfs:
server: 10.0.69.10
path: /tank/media/music
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media-music
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-music

View file

@ -0,0 +1,5 @@
---
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- pvc.yaml

View file

@ -0,0 +1,33 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-roms
spec:
capacity:
storage: 40Ti
accessModes:
- ReadWriteMany
nfs:
server: 10.0.69.10
path: /tank/media/roms
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media-roms
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-roms

View file

@ -0,0 +1,5 @@
---
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- pvc.yaml

View file

@ -0,0 +1,33 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-media-series
spec:
capacity:
storage: 40Ti
accessModes:
- ReadWriteMany
nfs:
server: 10.0.69.10
path: /tank/media/series
mountOptions:
- vers=4.1
- rsize=1048576
- wsize=1048576
- hard
- timeo=600
- noatime
persistentVolumeReclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-media-series
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 40Ti
volumeName: nfs-media-series