55 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
20 changed files with 448 additions and 49 deletions

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

@@ -6,6 +6,7 @@ metadata:
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:
@@ -16,9 +17,9 @@ spec:
path: "/"
backend:
service:
name: gitea
name: gitea-gitea
port:
number: 5432
number: 10080
- host: "gitea.cluster.edward.sydney"
http:
paths:
@@ -26,6 +27,6 @@ spec:
path: "/"
backend:
service:
name: gitea
name: gitea-gitea
port:
number: 5432
number: 10080

View File

@@ -17,26 +17,40 @@ spec:
remediation:
retries: 3
values:
adminUsername: bn_user
adminPassword: ""
adminEmail: user@example.com
appName: example
containerPorts:
http: 3003
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: ""
existingClaim: gitea-pvc
service:
ports:
http: 80
ssh: 22
nodePorts:
http: ""
ssh: ""
http: 10080
ssh: 10022
postgresql:
enabled: false
externalDatabase:
host: ""
port: 5432
user: postgres
database: gitea
password: ""
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

@@ -7,7 +7,7 @@ spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
targetNamespace: redis
targetNamespace: gitea
path: ./gitea
prune: true
sourceRef:

View File

@@ -85,7 +85,7 @@ spec:
hostPath:
path: "/mnt/nfs/AppData/jellyfin/media/series"
type: "Directory"
- name: music
- name: music-videos
readOnly: false
volumeSpec:
storageClassName: local-path
@@ -106,10 +106,36 @@ spec:
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: jellyfin-mediavol-music
name: jellyfin-mediavol-music-videos
namespace: jellyfin
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"
- name: gv
readOnly: false

View File

@@ -5,10 +5,12 @@ resources:
- ./capacitor/capacitor.yaml
- ./cert-manager/cert-manager.yaml
- ./code-server/code-server.yaml
- ./dokuwiki/dokuwiki.yaml
- ./gitea/gitea.yaml
- ./homer/homer.yaml
- ./jellyfin/jellyfin.yaml
- ./kavita/kavita.yaml
- ./nexus/nexus.yaml
- ./podinfo/podinfo.yaml
- ./postgresql/postgresql.yaml
- ./qbittorrent/qbittorrent.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

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

View File

@@ -17,16 +17,26 @@ spec:
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: ""
existingClaim: "sonarqube-pvc"
postgresql:
enabled: false
externalDatabase:

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

@@ -7,7 +7,7 @@ spec:
interval: 10m
timeout: 1m30s
retryInterval: 30s
targetNamespace: redis
targetNamespace: sonarqube
path: ./sonarqube
prune: true
sourceRef:
@@ -39,7 +39,7 @@ spec:
name: flux-system
dependsOn:
- name: sonarqube-secrets
namespace: redis
namespace: sonarqube
postBuild:
substituteFrom:
- kind: Secret

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: nexus

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"
}
]
}