138 Commits

Author SHA1 Message Date
c796aacfec Update app name 2024-06-26 01:15:57 +10:00
17dcd78a31 update container ports 2024-06-26 01:11:41 +10:00
16d9f1df34 using ClusterIP with ingress instead of NodePort 2024-06-26 00:59:06 +10:00
91a305117c add app dokuwiki 2024-06-26 00:50:00 +10:00
62b8ddb6c7 Merge pull request #316 from 3dwardch3ng/app/nexus
remove unneeded nexus ingress
2024-06-25 20:58:19 +10:00
a44781a4c7 remove unneeded nexus ingress 2024-06-25 20:57:50 +10:00
3e80270ec9 Merge pull request #315 from 3dwardch3ng/app/nexus
run docker as root user
2024-06-25 20:18:24 +10:00
d1c71b22af run docker as root user 2024-06-25 20:18:04 +10:00
26727e23cd Merge pull request #314 from 3dwardch3ng/app/nexus
update image
2024-06-25 20:01:17 +10:00
4324087ecb update image 2024-06-25 20:00:52 +10:00
1f86ec4702 Merge pull request #313 from 3dwardch3ng/app/nexus
App/nexus
2024-06-25 19:39:52 +10:00
8fc1165cc0 add app nexus 2024-06-25 19:39:32 +10:00
72be4562ec add app nexus 2024-06-25 19:39:10 +10:00
cd4269e485 Merge pull request #312 from 3dwardch3ng/infra/renovate
update gitea ingress configs
2024-06-25 19:12:07 +10:00
55856e8a15 update gitea ingress configs 2024-06-25 19:11:40 +10:00
ea6032d2fa Merge pull request #311 from 3dwardch3ng/infra/renovate
infra/renovate
2024-06-25 19:00:20 +10:00
f4eb314c46 update renovate configs 2024-06-25 18:59:26 +10:00
46515bdc6d Merge pull request #310 from 3dwardch3ng/renovate/configure
chore: Configure Renovate
2024-06-25 18:44:46 +10:00
renovate[bot]
a3d1fcd6cd chore(deps): add renovate.json 2024-06-25 08:41:20 +00:00
0f014ec66d Merge pull request #309 from 3dwardch3ng/app/gitea
update ingress service name
2024-06-25 18:29:21 +10:00
ecd37c7793 update ingress service name 2024-06-25 18:29:02 +10:00
0581b3cb40 Merge pull request #308 from 3dwardch3ng/app/gitea
update the probes for statability
2024-06-25 16:19:37 +10:00
5edfc815e0 update the probes for statability 2024-06-25 16:19:18 +10:00
d3e62ef96a Merge pull request #307 from 3dwardch3ng/app/gitea
update the updateStrategy to avoid the new deployment to be stuck as …
2024-06-25 16:03:37 +10:00
58e4fbbf56 update the updateStrategy to avoid the new deployment to be stuck as the PV is being used 2024-06-25 16:03:19 +10:00
3b5db030ee Merge pull request #306 from 3dwardch3ng/app/gitea
update the probes for statability
2024-06-25 15:58:08 +10:00
672f5b0935 update the probes for statability 2024-06-25 15:57:47 +10:00
4ead42d438 Merge pull request #305 from 3dwardch3ng/app/jellyfin
add short-videos volume for jellyfin
2024-06-25 13:53:54 +10:00
b86d63541a add short-videos volume for jellyfin 2024-06-25 13:53:34 +10:00
0b7da6761c Merge pull request #304 from 3dwardch3ng/app/jellyfin
add short-videos volume for jellyfin
2024-06-25 13:52:05 +10:00
abc995cae1 add short-videos volume for jellyfin 2024-06-25 13:51:37 +10:00
e4f1fc958d Merge pull request #303 from 3dwardch3ng/app/gitea
disable debug logs for gitea
2024-06-25 12:23:38 +10:00
a76b6cd0b9 disable debug logs for gitea 2024-06-25 12:22:53 +10:00
d5a79df839 Merge pull request #302 from 3dwardch3ng/app/gitea
enable debug logs for gitea
2024-06-25 10:43:07 +10:00
bc39b04bb4 enable debug logs for gitea 2024-06-25 10:42:43 +10:00
8059824d42 Merge pull request #301 from 3dwardch3ng/app/gitea
App/gitea
2024-06-25 10:16:55 +10:00
3bb7305ac9 fix LB ports 2024-06-25 10:16:02 +10:00
d7ce4a3ccc fix LB ports 2024-06-25 10:15:42 +10:00
63dcef953b Merge pull request #300 from 3dwardch3ng/app/gitea
app/gitea
2024-06-25 10:09:26 +10:00
d9f220ac4e fix secret namespace 2024-06-25 10:08:39 +10:00
82a9957831 Merge pull request #299 from 3dwardch3ng/app/gitea
App/gitea
2024-06-25 10:04:46 +10:00
21371c5a88 add app gitea 2024-06-25 10:03:53 +10:00
e89d22f03d Merge branch 'refs/heads/main' into app/gitea 2024-06-25 09:43:33 +10:00
77bf938120 Merge pull request #298 from 3dwardch3ng/app/sonarqube
fix sonarqube user
2024-06-25 01:02:39 +10:00
516168d3e5 fix sonarqube user 2024-06-25 01:02:18 +10:00
619fc74394 Merge pull request #297 from 3dwardch3ng/app/sonarqube
fix sonarqube namespace
2024-06-24 23:05:14 +10:00
4628a78f54 fix sonarqube namespace 2024-06-24 23:04:39 +10:00
57067590b7 Merge pull request #296 from 3dwardch3ng/app/sonarqube
delete sonarqube ingress
2024-06-24 22:06:14 +10:00
86f43d20be delete sonarqube ingress 2024-06-24 22:05:56 +10:00
ccdfee21c2 Merge pull request #295 from 3dwardch3ng/app/sonarqube
add sonarqube ingress
2024-06-24 22:04:34 +10:00
fa832ef64d add sonarqube ingress 2024-06-24 22:04:15 +10:00
9e3a5c7488 Merge pull request #294 from 3dwardch3ng/app/sonarqube
add sonarqube volume
2024-06-24 22:03:12 +10:00
69bb362d57 add sonarqube volume 2024-06-24 22:02:56 +10:00
4724380c3f Merge pull request #293 from 3dwardch3ng/app/sonarqube
fix sonarqube namespace
2024-06-24 21:56:37 +10:00
525d06a715 fix sonarqube namespace 2024-06-24 21:56:20 +10:00
df768c9031 add app gitea 2024-06-24 21:55:38 +10:00
602cabf041 Merge pull request #292 from 3dwardch3ng/misc
add local access of jellyfin onto the homer
2024-06-24 19:34:32 +10:00
9f03ea3b30 add local access of jellyfin onto the homer 2024-06-24 19:34:16 +10:00
f261b6fac4 Merge pull request #291 from 3dwardch3ng/app/sonarqube
add app sonarcube
2024-06-24 19:18:04 +10:00
bd5059863e add app sonarcube 2024-06-24 19:17:38 +10:00
1348ab51f8 Merge pull request #290 from 3dwardch3ng/app/sonarqube
fix postgres ingress issue
2024-06-24 16:08:57 +10:00
e98c99ef9c fix postgres ingress issue 2024-06-24 16:08:37 +10:00
8f6aa7bd61 Merge pull request #289 from 3dwardch3ng/app/sonarqube
fix postgres password issue
2024-06-24 16:05:29 +10:00
74f79898e2 fix postgres password issue 2024-06-24 16:05:10 +10:00
1933ed7a81 Merge pull request #288 from 3dwardch3ng/app/sonarqube
fix postgres password issue
2024-06-24 15:49:01 +10:00
5831e1956d fix postgres password issue 2024-06-24 15:48:41 +10:00
70accb15fb Merge pull request #287 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 15:27:45 +10:00
d6ea1c47e7 fix qBittorrent volumes 2024-06-24 15:27:19 +10:00
63ca2fa1b4 Merge pull request #286 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 15:02:29 +10:00
caa385be8d fix qBittorrent volumes 2024-06-24 15:01:58 +10:00
b05ab8766a Merge pull request #285 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 14:53:20 +10:00
2d32ad307a fix qBittorrent volumes 2024-06-24 14:52:54 +10:00
830f49ca6a Merge pull request #284 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 14:44:15 +10:00
bb6ada6f15 fix qBittorrent volumes 2024-06-24 14:43:38 +10:00
08ffc1aaee Merge pull request #283 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 14:40:29 +10:00
a84b754903 fix qBittorrent volumes 2024-06-24 14:40:09 +10:00
07e3ea1e8b Merge pull request #282 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 14:33:29 +10:00
95299a4d28 fix qBittorrent volumes 2024-06-24 14:33:06 +10:00
ff7bec1733 Merge pull request #281 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 14:32:25 +10:00
187317ba2e fix qBittorrent volumes 2024-06-24 14:32:07 +10:00
13129c5b0e Merge pull request #280 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 14:23:21 +10:00
9f175dd49f fix qBittorrent volumes 2024-06-24 14:22:52 +10:00
b2f3f18b4f Merge pull request #279 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 14:18:47 +10:00
fd2a0e4748 fix qBittorrent volumes 2024-06-24 14:18:25 +10:00
48a280b4aa Merge pull request #278 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 14:15:02 +10:00
ff57154064 fix qBittorrent volumes 2024-06-24 14:14:26 +10:00
82d7b64322 Merge pull request #277 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 13:59:13 +10:00
516f304dbe fix qBittorrent volumes 2024-06-24 13:58:55 +10:00
99ce41c430 Merge pull request #276 from 3dwardch3ng/app/qBittorrent
fix qBittorrent volumes
2024-06-24 13:56:30 +10:00
949f11769c fix qBittorrent volumes 2024-06-24 13:56:12 +10:00
4bbb33391b Merge pull request #275 from 3dwardch3ng/app/qBittorrent
fix config volume
2024-06-24 13:44:38 +10:00
ef03aa7a25 fix config volume 2024-06-24 13:44:13 +10:00
c71b356017 Merge pull request #274 from 3dwardch3ng/app/redis
Revert "fix redis volumes"
2024-06-24 13:41:08 +10:00
70b64d0213 Revert "fix redis volumes"
This reverts commit 47cdb6893f.
2024-06-24 13:40:41 +10:00
8a63192c60 Merge pull request #273 from 3dwardch3ng/app/redis
fix redis volumes
2024-06-24 13:33:09 +10:00
47cdb6893f fix redis volumes 2024-06-24 13:31:37 +10:00
636e1a3267 Merge pull request #272 from 3dwardch3ng/app/redis
fix redis
2024-06-24 11:37:13 +10:00
c21960843a fix redis 2024-06-24 11:36:44 +10:00
1f3700887a Merge pull request #271 from 3dwardch3ng/app/redis
add app redis
2024-06-24 10:39:46 +10:00
252457cc7d add app redis 2024-06-24 10:39:26 +10:00
2697c0aea6 Merge pull request #270 from 3dwardch3ng/app/qBittorrent
fix config volume
2024-06-24 09:46:42 +10:00
a979145d9e fix config volume 2024-06-24 09:46:24 +10:00
39d344b52e Merge pull request #269 from 3dwardch3ng/app/qBittorrent
fix config volume
2024-06-24 09:42:29 +10:00
6e0f980bab fix config volume 2024-06-24 09:42:12 +10:00
9a68d82f83 Merge pull request #268 from 3dwardch3ng/app/qBittorrent
Revert "fix config volume"
2024-06-24 09:39:41 +10:00
2f8a0d1841 Revert "fix config volume"
This reverts commit 23fa5fb6d0.
2024-06-24 09:39:06 +10:00
6a75addfa8 Merge pull request #267 from 3dwardch3ng/app/qBittorrent
fix config volume
2024-06-24 09:18:10 +10:00
23fa5fb6d0 fix config volume 2024-06-24 09:17:39 +10:00
23b62970dd Merge pull request #266 from 3dwardch3ng/app/qBittorrent
fix config volume name
2024-06-22 14:13:20 +10:00
ec89adccfc fix config volume name 2024-06-22 14:13:00 +10:00
ec5a9b2cf6 Merge pull request #265 from 3dwardch3ng/app/qBittorrent
fix config volume name
2024-06-21 19:02:41 +10:00
64f268aed8 fix config volume name 2024-06-21 19:02:06 +10:00
ddb8ea9a05 Merge pull request #264 from 3dwardch3ng/app/qBittorrent
remove unneeded file
2024-06-21 17:54:56 +10:00
9d41316730 remove unneeded file 2024-06-21 17:54:33 +10:00
cf49bbb20c Merge pull request #263 from 3dwardch3ng/app/jellyfin
update jellyfin volumes
2024-06-21 15:01:16 +10:00
9cf9e1622c update jellyfin volumes 2024-06-21 15:00:53 +10:00
901da39e24 Merge pull request #262 from 3dwardch3ng/app/qBittorrent
App/q bittorrent
2024-06-21 14:57:36 +10:00
6f247e0903 Merge pull request #261 from 3dwardch3ng/app/jellyfin
update jellyfin volumes
2024-06-21 14:51:58 +10:00
c43357c7c4 update jellyfin volumes 2024-06-21 14:51:36 +10:00
c0731f893a Merge branch 'refs/heads/main' into app/qBittorrent 2024-06-21 14:48:54 +10:00
e6c2157036 Merge pull request #260 from 3dwardch3ng/app/jellyfin
App/jellyfin
2024-06-21 14:40:41 +10:00
ce1ea789c1 update jellyfin volumes 2024-06-21 14:39:46 +10:00
23615dbdf1 Revert "update jellyfin volumes"
This reverts commit 36a01ebbb7.
2024-06-21 14:37:32 +10:00
739d1fa4d7 update volumes and expose port 8388 2024-06-21 14:33:39 +10:00
5b887c5ea3 Merge pull request #259 from 3dwardch3ng/app/qBittorrent
add app qBittorrent
2024-06-21 14:15:35 +10:00
ae8680ce63 add app qBittorrent 2024-06-21 14:12:23 +10:00
81e8425379 Merge pull request #258 from 3dwardch3ng/app/kavita
fix kavita
2024-06-21 11:11:26 +10:00
c8e97f5619 fix kavita 2024-06-21 11:11:00 +10:00
1e5a359aab Merge pull request #257 from 3dwardch3ng/app/kavita
fix kavita
2024-06-21 10:44:42 +10:00
8bf021c6c3 fix kavita 2024-06-21 10:44:11 +10:00
3b50141790 Merge pull request #256 from 3dwardch3ng/app/kavita
fix kavita
2024-06-21 10:37:17 +10:00
5f46937a4e fix kavita 2024-06-21 10:36:45 +10:00
4c8a194452 Merge pull request #255 from 3dwardch3ng/app/kavita
fix kavita
2024-06-20 17:18:14 +10:00
044ea968c0 fix kavita 2024-06-20 17:17:56 +10:00
7be1fbc1f8 Merge pull request #254 from 3dwardch3ng/app/cert-manager
disable certificate issuing
2024-06-20 17:10:55 +10:00
fc81537d18 Merge pull request #253 from 3dwardch3ng/app/cert-manager
fix certificate issue
2024-06-20 16:59:10 +10:00
6c6520f3bc Merge pull request #252 from 3dwardch3ng/app/cert-manager
fix certificate issue
2024-06-20 16:30:40 +10:00
c23a5b2683 Merge pull request #251 from 3dwardch3ng/app/cert-manager
adguard-home certificate
2024-06-20 16:25:23 +10:00
40 changed files with 1068 additions and 94 deletions

View File

@@ -49,3 +49,13 @@ spec:
name: adguard-home name: adguard-home
port: port:
number: 13000 number: 13000
- host: "doh.adguard-home.cluster.edward.sydney"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: adguard-home
port:
number: 443

View File

@@ -0,0 +1,31 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dokuwiki-ingress
namespace: dokuwiki
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx
rules:
- host: "dokuwiki.cluster.local"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: dokuwiki-dokuwiki
port:
number: 18000
- host: "dokuwiki.cluster.edward.sydney"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: dokuwiki-dokuwiki
port:
number: 18000

View File

@@ -0,0 +1,34 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: dokuwiki
namespace: dokuwiki
spec:
targetNamespace: dokuwiki
chart:
spec:
chart: dokuwiki
sourceRef:
kind: HelmRepository
name: bitnami
namespace: flux-system
interval: 1h
install:
remediation:
retries: 3
values:
dokuwikiUsername: ${username}
dokuwikiPassword: ${password}
dokuwikiEmail: ${email}
dokuwikiFullName: "Edward Cheng"
dokuwikiWikiName: My Doku Wiki
containerPorts:
http: 18000
https: 18443
persistence:
existingClaim: "dokuwiki-pvc"
service:
type: ClusterIP
ports:
http: 18000
https: 18443

View File

@@ -0,0 +1,46 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: dokuwiki-pv
namespace: dokuwiki
labels:
type: local
spec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 12Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
local:
path: "/mnt/nfs/AppData/dokuwiki"
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: dokuwiki-pvc
namespace: dokuwiki
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dokuwiki-pvc
namespace: dokuwiki
labels:
name: dokuwiki-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 12Gi

View File

@@ -0,0 +1,46 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: dokuwiki-secrets
namespace: dokuwiki
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
targetNamespace: dokuwiki
path: ./dokuwiki
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: home-cluster-ops-secrets
dependsOn:
- name: repositories
namespace: flux-system
decryption:
provider: sops
secretRef:
name: dokuwiki-sops-age
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: dokuwiki
namespace: dokuwiki
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
path: ./kubernetes/apps/dokuwiki/app
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: flux-system
dependsOn:
- name: dokuwiki-secrets
namespace: dokuwiki
postBuild:
substituteFrom:
- kind: Secret
name: dokuwiki-secrets

View File

@@ -0,0 +1,32 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: gitea-ingress
namespace: gitea
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
spec:
ingressClassName: nginx
rules:
- host: "gitea.cluster.local"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: gitea-gitea
port:
number: 10080
- host: "gitea.cluster.edward.sydney"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: gitea-gitea
port:
number: 10080

View File

@@ -0,0 +1,56 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: gitea
namespace: gitea
spec:
targetNamespace: gitea
chart:
spec:
chart: gitea
sourceRef:
kind: HelmRepository
name: bitnami
namespace: flux-system
interval: 1h
install:
remediation:
retries: 3
values:
image:
debug: true
updateStrategy:
type: Recreate
livenessProbe:
enabled: true
initialDelaySeconds: 600
periodSeconds: 60
timeoutSeconds: 30
failureThreshold: 5
successThreshold: 1
readinessProbe:
enabled: true
path: /
initialDelaySeconds: 30
periodSeconds: 60
timeoutSeconds: 30
failureThreshold: 5
successThreshold: 1
adminUsername: ${admin_username}
adminPassword: ${admin_password}
adminEmail: ${admin_email}
appName: app_name
persistence:
existingClaim: gitea-pvc
service:
ports:
http: 10080
ssh: 10022
postgresql:
enabled: false
externalDatabase:
host: ${db_host}
port: ${db_port}
user: ${db_user}
database: ${db_name}
password: ${db_password}

View File

@@ -0,0 +1,46 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: gitea-pv
namespace: gitea
labels:
type: local
spec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 32Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
local:
path: "/mnt/nfs/AppData/gitea"
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: gitea-pvc
namespace: gitea
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gitea-pvc
namespace: gitea
labels:
name: gitea-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 32Gi

View File

@@ -0,0 +1,47 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: gitea-secrets
namespace: gitea
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
targetNamespace: gitea
path: ./gitea
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: home-cluster-ops-secrets
dependsOn:
- name: repositories
namespace: flux-system
decryption:
provider: sops
secretRef:
name: gitea-sops-age
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: gitea
namespace: gitea
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
path: ./kubernetes/apps/gitea/app
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: flux-system
dependsOn:
- name: gitea-secrets
namespace: gitea
postBuild:
substituteFrom:
- kind: Secret
name: gitea-secrets

View File

@@ -9,6 +9,16 @@ metadata:
spec: spec:
ingressClassName: nginx ingressClassName: nginx
rules: rules:
- host: "jellyfin.cluster.local"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: jellyfin
port:
number: 8096
- host: "jellyfin.cluster.edward.sydney" - host: "jellyfin.cluster.edward.sydney"
http: http:
paths: paths:

View File

@@ -1,7 +1,7 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolume kind: PersistentVolume
metadata: metadata:
name: jellyfin-config-pv name: jellyfin-config
namespace: jellyfin namespace: jellyfin
labels: labels:
type: local type: local
@@ -27,7 +27,7 @@ spec:
apiVersion: v1 apiVersion: v1
kind: PersistentVolume kind: PersistentVolume
metadata: metadata:
name: jellyfin-data-pv name: jellyfin-data
namespace: jellyfin namespace: jellyfin
labels: labels:
type: local type: local
@@ -49,67 +49,3 @@ spec:
operator: In operator: In
values: values:
- rpi5-cluster-node-3 - rpi5-cluster-node-3
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellyfin-movies-pvc
namespace: jellyfin
labels:
name: jellyfin-movies-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellyfin-series-pvc
namespace: jellyfin
labels:
name: jellyfin-series-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellyfin-music-pvc
namespace: jellyfin
labels:
name: jellyfin-music-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellyfin-gv-pvc
namespace: jellyfin
labels:
name: jellyfin-gv-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi

View File

@@ -24,22 +24,37 @@ spec:
volumeClaimSpec: volumeClaimSpec:
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
volumeName: jellyfin-config-pv volumeName: jellyfin-config
data: data:
enabled: true enabled: true
volumeClaimSpec: volumeClaimSpec:
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
volumeName: jellyfin-data-pv volumeName: jellyfin-data
jellyfin: jellyfin:
mediaVolumes: mediaVolumes:
- name: movies - name: movies
readOnly: false readOnly: false
volumeSpec: volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
claimRef: claimRef:
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
name: jellyfin-movies-pvc name: jellyfin-mediavol-movies
namespace: jellyfin namespace: jellyfin
hostPath: hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/movies" path: "/mnt/nfs/AppData/jellyfin/media/movies"
@@ -47,32 +62,103 @@ spec:
- name: series - name: series
readOnly: false readOnly: false
volumeSpec: volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
claimRef: claimRef:
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
name: jellyfin-series-pvc name: jellyfin-mediavol-series
namespace: jellyfin namespace: jellyfin
hostPath: hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/series" path: "/mnt/nfs/AppData/jellyfin/media/series"
type: "Directory" type: "Directory"
- name: music - name: music-videos
readOnly: false readOnly: false
volumeSpec: volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
claimRef: claimRef:
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
name: jellyfin-music-pvc name: jellyfin-mediavol-music-videos
namespace: jellyfin namespace: jellyfin
hostPath: hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/music" path: "/mnt/nfs/AppData/jellyfin/media/music-videos"
type: "Directory"
- name: short-videos
readOnly: false
volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: jellyfin-mediavol-short-videos
namespace: jellyfin
hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/short-videos"
type: "Directory" type: "Directory"
- name: gv - name: gv
readOnly: false readOnly: false
volumeSpec: volumeSpec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
claimRef: claimRef:
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
name: jellyfin-gv-pvc name: jellyfin-mediavol-gv
namespace: jellyfin namespace: jellyfin
hostPath: hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/gv" path: "/mnt/nfs/AppData/jellyfin/media/gv"

View File

@@ -27,20 +27,6 @@ spec:
- containerPort: 5000 - containerPort: 5000
name: http name: http
protocol: TCP protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 5000
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 3
resources:
requests:
cpu: 200m
memory: 200Mi
env: env:
- name: TZ - name: TZ
value: Australia/Sydney value: Australia/Sydney
@@ -50,9 +36,9 @@ spec:
- name: kavita-manga - name: kavita-manga
mountPath: /manga mountPath: /manga
- name: kavita-book - name: kavita-book
mountPath: /kavita/book mountPath: /book
- name: kavita-doc - name: kavita-doc
mountPath: /kavita/doc mountPath: /doc
volumes: volumes:
- name: kavita-config - name: kavita-config
hostPath: hostPath:
@@ -69,5 +55,4 @@ spec:
- name: kavita-doc - name: kavita-doc
hostPath: hostPath:
path: /mnt/nfs/AppData/kavita/doc path: /mnt/nfs/AppData/kavita/doc
type: Directory type: Directory
serviceAccountName: kavita

View File

@@ -5,11 +5,17 @@ resources:
- ./capacitor/capacitor.yaml - ./capacitor/capacitor.yaml
- ./cert-manager/cert-manager.yaml - ./cert-manager/cert-manager.yaml
- ./code-server/code-server.yaml - ./code-server/code-server.yaml
- ./dokuwiki/dokuwiki.yaml
- ./gitea/gitea.yaml
- ./homer/homer.yaml - ./homer/homer.yaml
- ./jellyfin/jellyfin.yaml - ./jellyfin/jellyfin.yaml
- ./kavita/kavita.yaml - ./kavita/kavita.yaml
- ./nexus/nexus.yaml
- ./podinfo/podinfo.yaml - ./podinfo/podinfo.yaml
- ./postgresql/postgresql.yaml - ./postgresql/postgresql.yaml
- ./qbittorrent/qbittorrent.yaml
- ./redis/redis.yaml
- ./snippet-box/snippet-box.yaml - ./snippet-box/snippet-box.yaml
- ./sonarqube/sonarqube.yaml
- ./uptime-kuma/uptime-kuma.yaml - ./uptime-kuma/uptime-kuma.yaml
- ./weave-gitops/weave-gitops.yaml - ./weave-gitops/weave-gitops.yaml

View File

@@ -0,0 +1,38 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nexus
namespace: nexus
spec:
replicas: 1
selector:
matchLabels:
app: nexus
template:
metadata:
labels:
app: nexus
spec:
securityContext:
runAsUser: 0
runAsGroup: 0
containers:
- name: nexus
image: klo2k/nexus3:3.68.1-02
resources:
limits:
memory: "3Gi"
cpu: "500m"
requests:
memory: "2Gi"
cpu: "500m"
ports:
- containerPort: 8081
volumeMounts:
- name: nexus-data
mountPath: /nexus-data
volumes:
- name: nexus-data
hostPath:
path: /mnt/nfs/AppData/nexus
type: Directory

View File

@@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
name: nexus
namespace: nexus
annotations:
prometheus.io/scrape: 'true'
prometheus.io/path: /
prometheus.io/port: '8081'
spec:
selector:
app: nexus
type: NodePort
ports:
- port: 8081
targetPort: 8081
nodePort: 32000

View File

@@ -0,0 +1,15 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: nexus
namespace: nexus
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
path: ./kubernetes/apps/nexus/app
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: flux-system

View File

@@ -0,0 +1,31 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: postgresql-ingress
namespace: postgresql
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx
rules:
- host: "postgres.cluster.local"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: postgresql-primary
port:
number: 5432
- host: "replica.postgres.cluster.local"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: postgresql-replica
port:
number: 5432

View File

@@ -18,7 +18,7 @@ spec:
retries: 3 retries: 3
values: values:
auth: auth:
postgresPassword: ${postgresql_password} postgresPassword: ${postgres_password}
username: ${username} username: ${username}
password: ${password} password: ${password}
database: ${database} database: ${database}
@@ -27,7 +27,7 @@ spec:
replication: replication:
synchronousCommit: "on" synchronousCommit: "on"
numSynchronousReplicas: 1 numSynchronousReplicas: 1
applicationName: "postgresqlReplication" applicationName: "postgres_repl"
primary: primary:
podSecurityContext: podSecurityContext:
fsGroup: 1000 fsGroup: 1000

View File

@@ -0,0 +1,21 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: qbittorrent-ingress
namespace: qbittorrent
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx
rules:
- host: "qbittorrent.cluster.edward.sydney"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: qbittorrent
port:
number: 8888

View File

@@ -0,0 +1,30 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: qbittorrent
namespace: qbittorrent
spec:
targetNamespace: qbittorrent
chart:
spec:
chart: qbittorrent
sourceRef:
kind: HelmRepository
name: adminafk
namespace: flux-system
interval: 1h
install:
remediation:
retries: 3
values:
service:
web:
port: 8888
torrent:
port: 8388
config:
persistence:
name: "qbittorrent-config-pvc"
volumeMounts:
- name: qbittorrent-download-pvc
mountPath: /download

View File

@@ -0,0 +1,93 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: qbittorrent-config
namespace: qbittorrent
labels:
type: local
spec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
local:
path: "/mnt/nfs/AppData/qbittorrent/config"
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: qbittorrent-config-pvc
namespace: qbittorrent
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
---
#apiVersion: v1
#kind: PersistentVolumeClaim
#metadata:
# name: qbittorrent-config-pvc
# namespace: qbittorrent
# labels:
# name: qbittorrent-config-pvc
#spec:
# storageClassName: local-path
# volumeMode: Filesystem
# accessModes:
# - ReadWriteOnce
# resources:
# requests:
# storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: qbittorrent-download
namespace: qbittorrent
labels:
type: local
spec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
local:
path: "/mnt/nfs/AppData/qbittorrent/download"
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: qbittorrent-download-pvc
namespace: qbittorrent
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: qbittorrent-download-pvc
namespace: qbittorrent
labels:
name: qbittorrent-download-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64Gi

View File

@@ -0,0 +1,16 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: qbittorrent
namespace: qbittorrent
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
path: ./kubernetes/apps/qbittorrent/app
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: flux-system

View File

@@ -0,0 +1,10 @@
spec:
ports:
- name: torrent-tcp
port: 8388
targetPort: 8388
protocol: TCP
- name: torrent-udp
port: 8388
targetPort: 8388
protocol: UDP

View File

@@ -0,0 +1,4 @@
#!/bin/bash
set -e
kubectl patch service ingress-nginx-controller -n ingress-nginx --patch "$(cat kubernetes/apps/qbittorrent/scripts/ingress-nginx-svc-controller-patch.yaml)"

View File

@@ -0,0 +1,38 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: redis
namespace: redis
spec:
releaseName: redis
chart:
spec:
chart: redis
sourceRef:
kind: HelmRepository
name: bitnami
namespace: flux-system
interval: 1h
install:
remediation:
retries: 3
values:
auth:
password: ${password}
master:
persistence:
existingClaim: redis-master-pvc
selector:
matchLabels:
name: redis-master-pvc
persistentVolumeClaimRetentionPolicy:
enabled: true
replica:
replicaCount: 1
persistence:
existingClaim: redis-replica-pvc
selector:
matchLabels:
name: redis-replica-pvc
persistentVolumeClaimRetentionPolicy:
enabled: true

View File

@@ -0,0 +1,31 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-master-pvc
namespace: redis
labels:
name: redis-master-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-replica-pvc
namespace: redis
labels:
name: redis-replica-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi

View File

@@ -0,0 +1,46 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: redis-secrets
namespace: redis
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
targetNamespace: redis
path: ./redis
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: home-cluster-ops-secrets
dependsOn:
- name: repositories
namespace: flux-system
decryption:
provider: sops
secretRef:
name: redis-sops-age
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: redis
namespace: redis
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
path: ./kubernetes/apps/redis/app
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: flux-system
dependsOn:
- name: redis-secrets
namespace: redis
postBuild:
substituteFrom:
- kind: Secret
name: redis-secrets

View File

@@ -0,0 +1,47 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: sonarqube
namespace: sonarqube
spec:
releaseName: sonarqube
chart:
spec:
chart: sonarqube
sourceRef:
kind: HelmRepository
name: bitnami
namespace: flux-system
interval: 1h
install:
remediation:
retries: 3
values:
sonarqubeUsername: ${sonarqube_username}
sonarqubePassword: ${sonarqube_password}
sonarqubeEmail: ${sonarqube_email}
smtpHost: ${smtp_host}
smtpPort: ${smtp_port}
smtpUser: ${smtp_user}
smtpPassword: ${smtp_password}
smtpProtocol: ${smtp_protocol}
service:
ports:
http: 8090
elastic: 9091
nodePorts:
http: 30080
elastic: 30091
persistence:
enabled: true
storageClass: "local-path"
size: "32Gi"
existingClaim: "sonarqube-pvc"
postgresql:
enabled: false
externalDatabase:
host: ${db_host}
user: ${db_user}
password: ${db_password}
database: ${db_name}
port: ${db_port}

View File

@@ -0,0 +1,46 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: sonarqube-pv
namespace: sonarqube
labels:
type: local
spec:
storageClassName: local-path
volumeMode: Filesystem
capacity:
storage: 32Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
local:
path: "/mnt/nfs/AppData/sonarqube"
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: sonarqube-pvc
namespace: sonarqube
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- rpi5-cluster-node-3
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sonarqube-pvc
namespace: sonarqube
labels:
name: sonarqube-pvc
spec:
storageClassName: local-path
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 32Gi

View File

@@ -0,0 +1,46 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: sonarqube-secrets
namespace: sonarqube
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
targetNamespace: sonarqube
path: ./sonarqube
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: home-cluster-ops-secrets
dependsOn:
- name: repositories
namespace: flux-system
decryption:
provider: sops
secretRef:
name: sonarqube-sops-age
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: sonarqube
namespace: sonarqube
spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
path: ./kubernetes/apps/sonarqube/app
prune: true
sourceRef:
kind: GitRepository
namespace: flux-system
name: flux-system
dependsOn:
- name: sonarqube-secrets
namespace: sonarqube
postBuild:
substituteFrom:
- kind: Secret
name: sonarqube-secrets

View File

@@ -10,6 +10,7 @@ data:
"5433": "postgresql/postgresql-replica:5432" "5433": "postgresql/postgresql-replica:5432"
"5443": "flux-system/adguard-home:5443" "5443": "flux-system/adguard-home:5443"
"6060": "flux-system/adguard-home:6060" "6060": "flux-system/adguard-home:6060"
"8388": "qbittorrent/qbittorrent-torrent:8388"
--- ---
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
@@ -22,3 +23,4 @@ data:
"68": "flux-system/adguard-home:68" "68": "flux-system/adguard-home:68"
"853": "flux-system/adguard-home:853" "853": "flux-system/adguard-home:853"
"5443": "flux-system/adguard-home:5443" "5443": "flux-system/adguard-home:5443"
"8388": "qbittorrent/qbittorrent-torrent:8388"

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: dokuwiki

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: gitea

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: nexus

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: qbittorrent

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: redis

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: sonarqube

View File

@@ -0,0 +1,8 @@
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
name: adminafk
namespace: flux-system
spec:
interval: 6h
url: https://helm-charts.adminafk.fr

40
renovate.json Normal file
View File

@@ -0,0 +1,40 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>3dwardch3ng/renovate-config"
],
"kubernetes": {
"fileMatch": ["\\.yaml$"]
},
"helm-values": {
"fileMatch": ["\\.yaml$"]
},
"flux": {
"fileMatch": ["\\.yaml$"]
},
"packageRules": [
{
"matchDatasources": ["helm"],
"commitMessageTopic": "{{depName}} Helm release"
},
{
"matchDatasources": ["github-releases"],
"matchPackageNames": ["k3s-io/k3s"],
"separateMinorPatch": true
},
{
"matchPackagePrefixes": ["ghcr.io/immich-app/"],
"groupName": "Immich"
},
{
"matchDatasources": ["github-tags"],
"matchPackageNames": ["bjw-s/helm-charts"],
"versioning": "regex:^(?<compatibility>.+)-(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)$"
},
{
"matchDatasources": ["docker", "github-tags"],
"matchPackageNames": ["ghcr.io/fluxcd/flux-manifests", "fluxcd/flux2"],
"groupName": "fluxcd/flux2"
}
]
}