861d89d36a
services marked k8s/active are applied via kubectl; the rest via docker compose. inactive services with k8s/ keep only routing manifests (external Services, EndpointSlices, Ingresses) to reach docker backends. headscale/nextcloud routing moved to k8s/routing/. validations: compose config --quiet + kubectl apply --dry-run=client. namespace manifests applied first. pull_policy:build stacks get build+push before up so the registry image stays fresh.
105 lines
2.5 KiB
YAML
105 lines
2.5 KiB
YAML
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-prod
|
|
namespace: headscale
|
|
spec:
|
|
entryPoints:
|
|
- websecure
|
|
routes:
|
|
- match: Host(`hs.forust.xyz`)
|
|
kind: Rule
|
|
services:
|
|
- name: headscale-server-external
|
|
port: 8080
|
|
- match: Host(`hs.forust.xyz`) && PathPrefix(`/admin`)
|
|
kind: Rule
|
|
services:
|
|
- name: headscale-ui-external
|
|
port: 80
|
|
- match: Host(`hs.forust.xyz`) && PathPrefix(`/metrics`)
|
|
kind: Rule
|
|
services:
|
|
- name: headscale-server-external
|
|
port: 9090
|
|
tls:
|
|
certResolver: letsencrypt
|
|
---
|
|
apiVersion: traefik.io/v1alpha1
|
|
kind: IngressRoute
|
|
metadata:
|
|
name: headplane-prod
|
|
namespace: headscale
|
|
spec:
|
|
entryPoints:
|
|
- websecure
|
|
routes:
|
|
- match: Host(`hp.forust.xyz`)
|
|
kind: Rule
|
|
middlewares:
|
|
- name: headplane-prefix
|
|
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:
|
|
- websecure
|
|
routes:
|
|
- match: Host(`hs.workstation.internal`) || Host(`hs.gigaforust.internal`)
|
|
kind: Rule
|
|
services:
|
|
- name: headscale-server-external
|
|
port: 8080
|
|
- 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: headplane-local
|
|
namespace: headscale
|
|
spec:
|
|
routes:
|
|
- match: Host(`hp.workstation.internal`) || Host(`hp.gigaforust.internal`)
|
|
kind: Rule
|
|
middlewares:
|
|
- name: headplane-prefix
|
|
services:
|
|
- name: headplane-external
|
|
port: 3000
|
|
- match: (Host(`hp.workstation.internal`) || Host(`hp.gigaforust.internal`)) && PathPrefix(`/admin`)
|
|
kind: Rule
|
|
services:
|
|
- name: headplane-external
|
|
port: 3000
|