Migrated k3s manifests to use traefik ingres route

This commit is contained in:
=
2026-05-01 11:09:52 +00:00
parent 80715dc15a
commit a428260243
15 changed files with 266 additions and 51 deletions
+17 -2
View File
@@ -1,3 +1,4 @@
---
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
@@ -47,7 +48,7 @@ metadata:
name: drawio-service name: drawio-service
namespace: drawio namespace: drawio
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: drawio app: drawio
ports: ports:
@@ -55,4 +56,18 @@ spec:
protocol: TCP protocol: TCP
port: 80 port: 80
targetPort: 8080 targetPort: 8080
nodePort: 33004 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: drawio-web
namespace: drawio
spec:
entryPoints:
- websecure
routes:
- match: Host(`drawio.khongisa.co.za`)
kind: Rule
services:
- name: drawio-service
port: 80
+18 -5
View File
@@ -1,4 +1,4 @@
--- ---
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
@@ -90,11 +90,10 @@ spec:
cpu: "500m" cpu: "500m"
memory: "512Mi" memory: "512Mi"
env: env:
# FIX: Explicitly bind the address to bypass port validation logic
- name: DRONE_SERVER_ADDR - name: DRONE_SERVER_ADDR
value: ":80" value: ":80"
- name: DRONE_SERVER_HOST - name: DRONE_SERVER_HOST
value: "drone.khongisa.co.za" value: "droneci.khongisa.co.za"
- name: DRONE_SERVER_PROTO - name: DRONE_SERVER_PROTO
value: "https" value: "https"
- name: DRONE_GITEA_SERVER - name: DRONE_GITEA_SERVER
@@ -162,11 +161,25 @@ metadata:
name: drone-server name: drone-server
namespace: drone-ci namespace: drone-ci
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: drone-server app: drone-server
ports: ports:
- name: http - name: http
port: 80 port: 80
targetPort: 80 targetPort: 80
nodePort: 31001 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: drone-web
namespace: drone-ci
spec:
entryPoints:
- websecure
routes:
- match: Host(`droneci.khongisa.co.za`)
kind: Rule
services:
- name: drone-server
port: 80
+18 -6
View File
@@ -1,3 +1,4 @@
---
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
@@ -10,7 +11,6 @@ metadata:
namespace: filebrowser namespace: filebrowser
type: Opaque type: Opaque
data: data:
# Value: Blackstar2@home
admin-password: QmxhY2tzdGFyMkBob21l admin-password: QmxhY2tzdGFyMkBob21l
--- ---
apiVersion: v1 apiVersion: v1
@@ -61,11 +61,9 @@ spec:
operator: DoesNotExist operator: DoesNotExist
containers: containers:
- name: filebrowser - name: filebrowser
image: filebrowser/filebrowser:v2.30.0 # Using a specific version for stability image: filebrowser/filebrowser:v2.30.0
ports: ports:
- containerPort: 80 - containerPort: 80
# We remove 'command' and 'args' that rely on /bin/sh
# and use the native environment variables
env: env:
- name: FB_DATABASE - name: FB_DATABASE
value: "/config/database.db" value: "/config/database.db"
@@ -94,7 +92,7 @@ metadata:
name: filebrowser-service name: filebrowser-service
namespace: filebrowser namespace: filebrowser
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: filebrowser app: filebrowser
ports: ports:
@@ -102,4 +100,18 @@ spec:
protocol: TCP protocol: TCP
port: 80 port: 80
targetPort: 80 targetPort: 80
nodePort: 33003 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: filebrowser-web
namespace: filebrowser
spec:
entryPoints:
- websecure
routes:
- match: Host(`drive.khongisa.co.za`)
kind: Rule
services:
- name: filebrowser-service
port: 80
+17 -3
View File
@@ -1,3 +1,4 @@
---
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -16,7 +17,6 @@ spec:
containers: containers:
- name: headlamp - name: headlamp
image: ghcr.io/headlamp-k8s/headlamp:latest image: ghcr.io/headlamp-k8s/headlamp:latest
# We only use -in-cluster. No other flags allowed.
args: args:
- "-in-cluster" - "-in-cluster"
ports: ports:
@@ -29,11 +29,25 @@ metadata:
name: headlamp name: headlamp
namespace: kube-system namespace: kube-system
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app.kubernetes.io/name: headlamp app.kubernetes.io/name: headlamp
ports: ports:
- protocol: TCP - protocol: TCP
port: 80 port: 80
targetPort: 4466 targetPort: 4466
nodePort: 30001 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: headlamp-web
namespace: kube-system
spec:
entryPoints:
- websecure
routes:
- match: Host(`cluster.khongisa.co.za`)
kind: Rule
services:
- name: headlamp
port: 80
+17 -2
View File
@@ -1,3 +1,4 @@
---
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
@@ -97,11 +98,25 @@ metadata:
name: mealie-service name: mealie-service
namespace: mealie namespace: mealie
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: mealie app: mealie
ports: ports:
- protocol: TCP - protocol: TCP
port: 80 port: 80
targetPort: 9000 targetPort: 9000
nodePort: 33007 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: mealie-web
namespace: mealie
spec:
entryPoints:
- websecure
routes:
- match: Host(`mealie.khongisa.co.za`)
kind: Rule
services:
- name: mealie-service
port: 80
+16 -1
View File
@@ -142,4 +142,19 @@ spec:
protocol: TCP protocol: TCP
port: 8082 port: 8082
targetPort: 8082 targetPort: 8082
nodePort: 31010 nodePort: 31010
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: nexus-web
namespace: nexus
spec:
entryPoints:
- websecure
routes:
- match: Host(`nexus.khongisa.co.za`)
kind: Rule
services:
- name: nexus-service
port: 8081
+16 -3
View File
@@ -101,7 +101,7 @@ metadata:
name: pgadmin-service name: pgadmin-service
namespace: pgadmin namespace: pgadmin
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: pgadmin app: pgadmin
ports: ports:
@@ -109,5 +109,18 @@ spec:
protocol: TCP protocol: TCP
port: 80 port: 80
targetPort: 80 targetPort: 80
nodePort: 32081 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: pgadmin-web
namespace: pgadmin
spec:
entryPoints:
- websecure
routes:
- match: Host(`pgadmin.khongisa.co.za`)
kind: Rule
services:
- name: pgadmin-service
port: 80
+20 -3
View File
@@ -1,3 +1,4 @@
---
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
@@ -75,10 +76,26 @@ metadata:
name: phpmyadmin-service name: phpmyadmin-service
namespace: phpmyadmin namespace: phpmyadmin
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: phpmyadmin app: phpmyadmin
ports: ports:
- port: 80 - name: http
protocol: TCP
port: 80
targetPort: 80 targetPort: 80
nodePort: 33006 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: phpmyadmin-web
namespace: phpmyadmin
spec:
entryPoints:
- websecure
routes:
- match: Host(`phpmyadmin.khongisa.co.za`)
kind: Rule
services:
- name: phpmyadmin-service
port: 80
+5 -5
View File
@@ -1,3 +1,4 @@
---
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
@@ -170,20 +171,19 @@ spec:
app: redisinsight app: redisinsight
ports: ports:
- port: 8001 - port: 8001
targetPort: 8001 # maybe 5540 targetPort: 8001
--- ---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
name: redisinsight-ingress name: redisinsight-web
namespace: redisinsight namespace: redisinsight
spec: spec:
entryPoints: entryPoints:
- websecure - websecure
routes: routes:
- match: Host(`redisinsight.apps.mngoma.lab`) - match: Host(`redisinsight.khongisa.co.za`)
kind: Rule kind: Rule
services: services:
- name: redisinsight - name: redisinsight
port: 8001 port: 8001
tls: {}
+8 -4
View File
@@ -38,6 +38,9 @@ spec:
value: "0.0.0.0" value: "0.0.0.0"
- name: SEARXNG_SERVER_PORT - name: SEARXNG_SERVER_PORT
value: "8080" value: "8080"
# Ensures the application generates internal links correctly for the public URL
- name: SEARXNG_BASE_URL
value: "https://search.khongisa.co.za"
resources: resources:
requests: requests:
cpu: "100m" cpu: "100m"
@@ -52,7 +55,8 @@ metadata:
name: searxng-server name: searxng-server
namespace: searxng namespace: searxng
spec: spec:
type: NodePort # Internal-only service; nodePort 32080 is no longer required
type: ClusterIP
selector: selector:
app.kubernetes.io/name: searxng-server app.kubernetes.io/name: searxng-server
ports: ports:
@@ -60,7 +64,6 @@ spec:
protocol: TCP protocol: TCP
port: 8080 port: 8080
targetPort: 8080 targetPort: 8080
nodePort: 32080
--- ---
apiVersion: traefik.io/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
@@ -71,10 +74,11 @@ spec:
entryPoints: entryPoints:
- websecure - websecure
routes: routes:
- match: Host(`searxng.apps.mngoma.lab`) # Matches the specific subdomain configured in Pangolin
- match: Host(`search.khongisa.co.za`)
kind: Rule kind: Rule
services: services:
- name: searxng-server - name: searxng-server
port: 8080 port: 8080
scheme: http scheme: http
tls: {} tls: {}
+17 -5
View File
@@ -58,7 +58,7 @@ data:
admin-password: QmxhY2tzdGFyMkBob21l admin-password: QmxhY2tzdGFyMkBob21l
access-key-encryption: NHZKMm1LMnBMNW5COHhSMnpRN3dFM3RZNnVJMG9QOWE= access-key-encryption: NHZKMm1LMnBMNW5COHhSMnpRN3dFM3RZNnVJMG9QOWE=
id_ed25519: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFNd0FBQUF0emMyZ3RaVwpReU5UVXhPUUFBQUNEbkRQMDZzbmM0Q2k3M0ZPSW1nTmszTWJsc25vNTNoajZYRDJTSzE1ZFpiQUFBQUpnZWwvMndIcGY5CnNBQUFBQXR6YzJndFpXUXlOVFV4T1FBQUFDRG5EUDA2c25jNENpNzNGT0ltZ05rM01ibHNubzUzaGo2WEQyU0sxNWRaYkEKQUFBRUJUaHFjcnNXZWVVWnpFeVdWWmJoRGlKZE9FQkZYSkg4NXNhMUNjK1dXQ0krY00vVHF5ZHpnS0x2Y1U0aWFBMlRjeAp1V3llam5lR1BwY1BaSXJYbDFsc0FBQUFEbXRvZDJWNmFVQkVRVkpMVTFWT0FRSURCQVVHQnc9PQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K id_ed25519: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFNd0FBQUF0emMyZ3RaVwpReU5UVXhPUUFBQUNEbkRQMDZzbmM0Q2k3M0ZPSW1nTmszTWJsc25vNTNoajZYRDJTSzE1ZFpiQUFBQUpnZWwvMndIcGY5CnNBQUFBQXR6YzJndFpXUXlOVFV4T1FBQUFDRG5EUDA2c25jNENpNzNGT0ltZ05rM01ibHNubzUzaGo2WEQyU0sxNWRaYkEKQUFBRUJUaHFjcnNXZWVVWnpFeVdWWmJoRGlKZE9FQkZYSkg4NXNhMUNjK1dXQ0krY00vVHF5ZHpnS0x2Y1U0aWFBMlRjeAp1V3llam5lR1BwY1BaSXJYbDFsc0FBQUFEbXRvZDJWNmFVQkVRVkpMVTFWT0FRSURCQVVHQnc9PQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K
id_ed25519.pub: c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSU9jTS9UcXlkemdLTHZjVTRpYUEyVGN4dVd5ZWpuZUdQcGNQWklyWGwxbHMga2h3ZXppQERBUktTVU4K id_ed25519.pub: c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSU9jTS9UcXlkemdLTHZjVTRpYUEyVGN4dVd5ZWpuZUdQcGNQWklyWGwxbHMga2h3ZXpkeEBkYXJrc3VuCg==
--- ---
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
@@ -109,8 +109,6 @@ spec:
initContainers: initContainers:
- name: fix-ssh-permissions - name: fix-ssh-permissions
image: busybox:latest image: busybox:latest
# We ensure the directory exists and has 700.
# We don't touch the files yet because they are mounted by the main container.
command: ["sh", "-c", "mkdir -p /home/semaphore/.ssh && chmod 700 /home/semaphore/.ssh"] command: ["sh", "-c", "mkdir -p /home/semaphore/.ssh && chmod 700 /home/semaphore/.ssh"]
volumeMounts: volumeMounts:
- name: semaphore-persistent-storage - name: semaphore-persistent-storage
@@ -188,7 +186,7 @@ metadata:
name: semaphore-service name: semaphore-service
namespace: semaphore namespace: semaphore
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: semaphore app: semaphore
ports: ports:
@@ -196,4 +194,18 @@ spec:
protocol: TCP protocol: TCP
port: 3000 port: 3000
targetPort: 3000 targetPort: 3000
nodePort: 31011 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: semaphore-web
namespace: semaphore
spec:
entryPoints:
- websecure
routes:
- match: Host(`semaphore.khongisa.co.za`)
kind: Rule
services:
- name: semaphore-service
port: 3000
+18 -3
View File
@@ -1,10 +1,11 @@
---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: traefik-dashboard-nodeport name: traefik-dashboard
namespace: kube-system namespace: kube-system
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app.kubernetes.io/name: traefik app.kubernetes.io/name: traefik
ports: ports:
@@ -12,4 +13,18 @@ spec:
protocol: TCP protocol: TCP
port: 8080 port: 8080
targetPort: 8080 targetPort: 8080
nodePort: 30000 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: traefik-dashboard-web
namespace: kube-system
spec:
entryPoints:
- websecure
routes:
- match: Host(`traefik.khongisa.co.za`)
kind: Rule
services:
- name: api@internal
kind: TraefikService
+16 -2
View File
@@ -112,7 +112,7 @@ metadata:
name: vaultwarden-service name: vaultwarden-service
namespace: vaultwarden namespace: vaultwarden
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: vaultwarden app: vaultwarden
ports: ports:
@@ -120,4 +120,18 @@ spec:
protocol: TCP protocol: TCP
port: 80 port: 80
targetPort: 80 targetPort: 80
nodePort: 32085 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: vaultwarden-web
namespace: vaultwarden
spec:
entryPoints:
- websecure
routes:
- match: Host(`vault.khongisa.co.za`)
kind: Rule
services:
- name: vaultwarden-service
port: 80
+47 -5
View File
@@ -119,7 +119,7 @@ metadata:
name: vscode-service name: vscode-service
namespace: vscode namespace: vscode
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: vscode app: vscode
ports: ports:
@@ -127,7 +127,6 @@ spec:
protocol: TCP protocol: TCP
port: 8080 port: 8080
targetPort: 8080 targetPort: 8080
nodePort: 33000
--- ---
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
@@ -135,7 +134,7 @@ metadata:
name: vscode-dev-service name: vscode-dev-service
namespace: vscode namespace: vscode
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: vscode app: vscode
ports: ports:
@@ -143,9 +142,52 @@ spec:
protocol: TCP protocol: TCP
port: 3000 port: 3000
targetPort: 3000 targetPort: 3000
nodePort: 33001
- name: dotnet-dev - name: dotnet-dev
protocol: TCP protocol: TCP
port: 5000 port: 5000
targetPort: 5000 targetPort: 5000
nodePort: 33002 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: vscode-web
namespace: vscode
spec:
entryPoints:
- websecure
routes:
- match: Host(`code.khongisa.co.za`)
kind: Rule
services:
- name: vscode-service
port: 8080
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: vscode-node-uat
namespace: vscode
spec:
entryPoints:
- websecure
routes:
- match: Host(`node.uat.khongisa.co.za`)
kind: Rule
services:
- name: vscode-dev-service
port: 3000
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: vscode-dotnet-uat
namespace: vscode
spec:
entryPoints:
- websecure
routes:
- match: Host(`dotnet.uat.khongisa.co.za`)
kind: Rule
services:
- name: vscode-dev-service
port: 5000
+16 -2
View File
@@ -45,7 +45,7 @@ metadata:
name: whoami name: whoami
namespace: whoami namespace: whoami
spec: spec:
type: NodePort type: ClusterIP
selector: selector:
app: whoami app: whoami
ports: ports:
@@ -53,4 +53,18 @@ spec:
protocol: TCP protocol: TCP
port: 80 port: 80
targetPort: 80 targetPort: 80
nodePort: 31002 ---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: whoami-web
namespace: whoami
spec:
entryPoints:
- websecure
routes:
- match: Host(`whoami.khongisa.co.za`)
kind: Rule
services:
- name: whoami
port: 80