chore(k8s): rewritten ingressroute to include headplane AND headscale-admin ui
Deploy to Server / deploy (push) Has been cancelled
Deploy to Server / deploy (push) Has been cancelled
new routes groupping style
This commit is contained in:
@@ -65,6 +65,40 @@ services:
|
|||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
networks:
|
networks:
|
||||||
- proxy
|
- proxy
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.services.headplane.loadbalancer.server.port=3000"
|
||||||
|
|
||||||
|
# Middleware: add /admin prefix for root requests
|
||||||
|
- "traefik.http.middlewares.headplane-prefix.addPrefix.prefix=/admin"
|
||||||
|
|
||||||
|
# Prod Root Router
|
||||||
|
- "traefik.http.routers.headplane-root.rule=Host(`hp.forust.xyz`)"
|
||||||
|
- "traefik.http.routers.headplane-root.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.headplane-root.middlewares=headplane-prefix"
|
||||||
|
- "traefik.http.routers.headplane-root.tls.certresolver=letsencrypt"
|
||||||
|
# Prod Router
|
||||||
|
- "traefik.http.routers.headplane.rule=Host(`hp.forust.xyz`) && PathPrefix(`/admin`)"
|
||||||
|
- "traefik.http.routers.headplane.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.headplane.tls.certresolver=letsencrypt"
|
||||||
|
# Local Root Router
|
||||||
|
- "traefik.http.routers.headplane-root-local.rule=Host(`hp.workstation.internal`)"
|
||||||
|
- "traefik.http.routers.headplane-root-local.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.headplane-root-local.middlewares=headplane-prefix"
|
||||||
|
- "traefik.http.routers.headplane-root-local.tls=true"
|
||||||
|
# Local Router
|
||||||
|
- "traefik.http.routers.headplane-local.rule=Host(`hp.workstation.internal`) && PathPrefix(`/admin`)"
|
||||||
|
- "traefik.http.routers.headplane-local.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.headplane-local.tls=true"
|
||||||
|
# Dev Root Router
|
||||||
|
- "traefik.http.routers.headplane-root-dev.rule=Host(`hp.gigaforust.internal`)"
|
||||||
|
- "traefik.http.routers.headplane-root-dev.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.headplane-root-dev.middlewares=headplane-prefix"
|
||||||
|
- "traefik.http.routers.headplane-root-dev.tls=true"
|
||||||
|
# Dev Router
|
||||||
|
- "traefik.http.routers.headplane-dev.rule=Host(`hp.gigaforust.internal`) && PathPrefix(`/admin`)"
|
||||||
|
- "traefik.http.routers.headplane-dev.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.headplane-dev.tls=true"
|
||||||
web:
|
web:
|
||||||
image: goodieshq/headscale-admin:latest
|
image: goodieshq/headscale-admin:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
+64
-59
@@ -1,7 +1,16 @@
|
|||||||
apiVersion: traefik.io/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: headplane-prefix
|
||||||
|
namespace: headscale
|
||||||
|
spec:
|
||||||
|
addPrefix:
|
||||||
|
prefix: "/admin"
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: IngressRoute
|
kind: IngressRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: headscale-server-prod
|
name: headscale-prod
|
||||||
namespace: headscale
|
namespace: headscale
|
||||||
spec:
|
spec:
|
||||||
entryPoints:
|
entryPoints:
|
||||||
@@ -14,13 +23,52 @@ spec:
|
|||||||
services:
|
services:
|
||||||
- name: headscale-server-external
|
- name: headscale-server-external
|
||||||
port: 8080
|
port: 8080
|
||||||
|
- match: Host(`hs.forust.xyz`) && PathPrefix(`/admin`)
|
||||||
|
kind: Rule
|
||||||
|
middlewares:
|
||||||
|
- name: crowdsec-crowdsec-bouncer@kubernetescrd
|
||||||
|
services:
|
||||||
|
- name: headscale-ui-external
|
||||||
|
port: 80
|
||||||
|
- match: Host(`hs.forust.xyz`) && PathPrefix(`/metrics`)
|
||||||
|
kind: Rule
|
||||||
|
middlewares:
|
||||||
|
- name: crowdsec-crowdsec-bouncer@kubernetescrd
|
||||||
|
services:
|
||||||
|
- name: headscale-server-external
|
||||||
|
port: 9090
|
||||||
tls:
|
tls:
|
||||||
certResolver: letsencrypt
|
certResolver: letsencrypt
|
||||||
---
|
---
|
||||||
apiVersion: traefik.io/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: IngressRoute
|
kind: IngressRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: headscale-server-local
|
name: headplane-prod
|
||||||
|
namespace: headscale
|
||||||
|
spec:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
routes:
|
||||||
|
- match: Host(`hp.forust.xyz`)
|
||||||
|
kind: Rule
|
||||||
|
middlewares:
|
||||||
|
- name: headplane-prefix
|
||||||
|
- name: crowdsec-crowdsec-bouncer@kubernetescrd
|
||||||
|
services:
|
||||||
|
- name: headplane-external
|
||||||
|
port: 3000
|
||||||
|
- match: Host(`hp.forust.xyz`) && PathPrefix(`/admin`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: headplane-external
|
||||||
|
port: 3000
|
||||||
|
tls:
|
||||||
|
certResolver: letsencrypt
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: IngressRoute
|
||||||
|
metadata:
|
||||||
|
name: headscale-local
|
||||||
namespace: headscale
|
namespace: headscale
|
||||||
spec:
|
spec:
|
||||||
entryPoints:
|
entryPoints:
|
||||||
@@ -31,76 +79,33 @@ spec:
|
|||||||
services:
|
services:
|
||||||
- name: headscale-server-external
|
- name: headscale-server-external
|
||||||
port: 8080
|
port: 8080
|
||||||
|
- match: (Host(`hs.workstation.internal`) || Host(`hs.gigaforust.internal`)) && PathPrefix(`/admin`)
|
||||||
---
|
|
||||||
apiVersion: traefik.io/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: headscale-ui-prod
|
|
||||||
namespace: headscale
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- match: Host(`hs.forust.xyz`) && PathPrefix(`/admin`)
|
|
||||||
kind: Rule
|
|
||||||
middlewares:
|
|
||||||
- name: crowdsec-crowdsec-bouncer@kubernetescrd
|
|
||||||
- name: security-chain@file
|
|
||||||
services:
|
|
||||||
- name: headscale-ui-external
|
|
||||||
port: 80
|
|
||||||
tls:
|
|
||||||
certResolver: letsencrypt
|
|
||||||
---
|
|
||||||
apiVersion: traefik.io/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: headscale-ui-local
|
|
||||||
namespace: headscale
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- match: HostRegexp(`^hs\.(workstation|gigaforust)\.internal$`) && PathPrefix(`/admin`)
|
|
||||||
kind: Rule
|
kind: Rule
|
||||||
services:
|
services:
|
||||||
- name: headscale-ui-external
|
- name: headscale-ui-external
|
||||||
port: 80
|
port: 80
|
||||||
|
- match: (Host(`hs.workstation.internal`) || Host(`hs.gigaforust.internal`)) && PathPrefix(`/metrics`)
|
||||||
|
kind: Rule
|
||||||
|
services:
|
||||||
|
- name: headscale-server-external
|
||||||
|
port: 9090
|
||||||
---
|
---
|
||||||
apiVersion: traefik.io/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: IngressRoute
|
kind: IngressRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: headscale-metrics-prod
|
name: headplane-local
|
||||||
namespace: headscale
|
namespace: headscale
|
||||||
spec:
|
spec:
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
routes:
|
||||||
- match: Host(`hs.forust.xyz`) && PathPrefix(`/metrics`)
|
- match: Host(`hp.workstation.internal`) || Host(`hp.gigaforust.internal`)
|
||||||
kind: Rule
|
kind: Rule
|
||||||
middlewares:
|
middlewares:
|
||||||
- name: crowdsec-crowdsec-bouncer@kubernetescrd
|
- name: headplane-prefix
|
||||||
services:
|
services:
|
||||||
- name: headscale-server-external
|
- name: headplane-external
|
||||||
port: 9090
|
port: 3000
|
||||||
tls:
|
- match: (Host(`hp.workstation.internal`) || Host(`hp.gigaforust.internal`)) && PathPrefix(`/admin`)
|
||||||
certResolver: letsencrypt
|
|
||||||
domains:
|
|
||||||
- main: hs.forust.xyz
|
|
||||||
---
|
|
||||||
apiVersion: traefik.io/v1alpha1
|
|
||||||
kind: IngressRoute
|
|
||||||
metadata:
|
|
||||||
name: headscale-metrics-local
|
|
||||||
namespace: headscale
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- websecure
|
|
||||||
routes:
|
|
||||||
- match: HostRegexp(`^hs\.(workstation|gigaforust)\.internal$`) && PathPrefix(`/metrics`)
|
|
||||||
kind: Rule
|
kind: Rule
|
||||||
services:
|
services:
|
||||||
- name: headscale-server-external
|
- name: headplane-external
|
||||||
port: 9090
|
port: 3000
|
||||||
|
|||||||
Reference in New Issue
Block a user