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
|
||||
networks:
|
||||
- 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:
|
||||
image: goodieshq/headscale-admin:latest
|
||||
restart: unless-stopped
|
||||
|
||||
+64
-59
@@ -1,7 +1,16 @@
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: Middleware
|
||||
metadata:
|
||||
name: headplane-prefix
|
||||
namespace: headscale
|
||||
spec:
|
||||
addPrefix:
|
||||
prefix: "/admin"
|
||||
---
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: headscale-server-prod
|
||||
name: headscale-prod
|
||||
namespace: headscale
|
||||
spec:
|
||||
entryPoints:
|
||||
@@ -14,13 +23,52 @@ spec:
|
||||
services:
|
||||
- name: headscale-server-external
|
||||
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:
|
||||
certResolver: letsencrypt
|
||||
---
|
||||
apiVersion: traefik.io/v1alpha1
|
||||
kind: IngressRoute
|
||||
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
|
||||
spec:
|
||||
entryPoints:
|
||||
@@ -31,76 +79,33 @@ spec:
|
||||
services:
|
||||
- name: headscale-server-external
|
||||
port: 8080
|
||||
|
||||
---
|
||||
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`)
|
||||
- match: (Host(`hs.workstation.internal`) || Host(`hs.gigaforust.internal`)) && PathPrefix(`/admin`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: headscale-ui-external
|
||||
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
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: headscale-metrics-prod
|
||||
name: headplane-local
|
||||
namespace: headscale
|
||||
spec:
|
||||
entryPoints:
|
||||
- websecure
|
||||
routes:
|
||||
- match: Host(`hs.forust.xyz`) && PathPrefix(`/metrics`)
|
||||
- match: Host(`hp.workstation.internal`) || Host(`hp.gigaforust.internal`)
|
||||
kind: Rule
|
||||
middlewares:
|
||||
- name: crowdsec-crowdsec-bouncer@kubernetescrd
|
||||
- name: headplane-prefix
|
||||
services:
|
||||
- name: headscale-server-external
|
||||
port: 9090
|
||||
tls:
|
||||
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`)
|
||||
- name: headplane-external
|
||||
port: 3000
|
||||
- match: (Host(`hp.workstation.internal`) || Host(`hp.gigaforust.internal`)) && PathPrefix(`/admin`)
|
||||
kind: Rule
|
||||
services:
|
||||
- name: headscale-server-external
|
||||
port: 9090
|
||||
- name: headplane-external
|
||||
port: 3000
|
||||
|
||||
Reference in New Issue
Block a user