mirror of
https://github.com/optim-enterprises-bv/homelab.git
synced 2025-11-03 03:17:58 +00:00
feat(vpn): split gateway into external and internal services
This commit is contained in:
4
k8s/apps/external/haos/http-route.yaml
vendored
4
k8s/apps/external/haos/http-route.yaml
vendored
@@ -5,7 +5,9 @@ metadata:
|
|||||||
namespace: haos
|
namespace: haos
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: external
|
||||||
|
namespace: gateway
|
||||||
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "haos.stonegarden.dev"
|
- "haos.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ metadata:
|
|||||||
namespace: blog
|
namespace: blog
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: external
|
||||||
|
namespace: gateway
|
||||||
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "blog.stonegarden.dev"
|
- "blog.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ metadata:
|
|||||||
namespace: blog
|
namespace: blog
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: external
|
||||||
|
namespace: gateway
|
||||||
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "remark42.stonegarden.dev"
|
- "remark42.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ metadata:
|
|||||||
namespace: stonegarden
|
namespace: stonegarden
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: external
|
||||||
|
namespace: gateway
|
||||||
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "stonegarden.dev"
|
- "stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
namespace: arr
|
namespace: arr
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "lidarr.stonegarden.dev"
|
- "lidarr.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
namespace: arr
|
namespace: arr
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "prowlarr.stonegarden.dev"
|
- "prowlarr.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
namespace: arr
|
namespace: arr
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "radarr.stonegarden.dev"
|
- "radarr.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
namespace: arr
|
namespace: arr
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "sonarr.stonegarden.dev"
|
- "sonarr.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
namespace: arr
|
namespace: arr
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "torrent.stonegarden.dev"
|
- "torrent.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ metadata:
|
|||||||
namespace: jellyfin
|
namespace: jellyfin
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: external
|
||||||
|
namespace: gateway
|
||||||
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "jellyfin.stonegarden.dev"
|
- "jellyfin.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ metadata:
|
|||||||
namespace: plex
|
namespace: plex
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: external
|
||||||
|
namespace: gateway
|
||||||
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "plex.stonegarden.dev"
|
- "plex.stonegarden.dev"
|
||||||
|
|||||||
@@ -1,11 +1,34 @@
|
|||||||
apiVersion: gateway.networking.k8s.io/v1
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
kind: HTTPRoute
|
kind: HTTPRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: keycloak
|
name: external
|
||||||
namespace: keycloak
|
namespace: keycloak
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: external
|
||||||
|
namespace: gateway
|
||||||
|
hostnames:
|
||||||
|
- "keycloak.stonegarden.dev"
|
||||||
|
rules:
|
||||||
|
- matches:
|
||||||
|
- path:
|
||||||
|
type: PathPrefix
|
||||||
|
value: /realms/homelab
|
||||||
|
- path:
|
||||||
|
type: PathPrefix
|
||||||
|
value: /resources
|
||||||
|
backendRefs:
|
||||||
|
- name: keycloak
|
||||||
|
port: 80
|
||||||
|
---
|
||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: HTTPRoute
|
||||||
|
metadata:
|
||||||
|
name: internal
|
||||||
|
namespace: keycloak
|
||||||
|
spec:
|
||||||
|
parentRefs:
|
||||||
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "keycloak.stonegarden.dev"
|
- "keycloak.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
namespace: argocd
|
namespace: argocd
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "argocd.stonegarden.dev"
|
- "argocd.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "hubble.stonegarden.dev"
|
- "hubble.stonegarden.dev"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "grafana.stonegarden.dev"
|
- "grafana.stonegarden.dev"
|
||||||
|
|||||||
@@ -9,20 +9,20 @@ warp-routing:
|
|||||||
ingress:
|
ingress:
|
||||||
- hostname: hello.stonegarden.dev
|
- hostname: hello.stonegarden.dev
|
||||||
service: hello_world
|
service: hello_world
|
||||||
- hostname: proxmox.stonegarden.dev
|
# - hostname: proxmox.stonegarden.dev
|
||||||
service: https://proxmox.proxmox.svc.cluster.local:443
|
# service: https://proxmox.proxmox.svc.cluster.local:443
|
||||||
originRequest:
|
# originRequest:
|
||||||
originServerName: proxmox.stonegarden.dev
|
# originServerName: proxmox.stonegarden.dev
|
||||||
- hostname: truenas.stonegarden.dev
|
# - hostname: truenas.stonegarden.dev
|
||||||
service: https://truenas.truenas.svc.cluster.local:443
|
# service: https://truenas.truenas.svc.cluster.local:443
|
||||||
originRequest:
|
# originRequest:
|
||||||
originServerName: truenas.stonegarden.dev
|
# originServerName: truenas.stonegarden.dev
|
||||||
- hostname: "*.stonegarden.dev"
|
- hostname: "*.stonegarden.dev"
|
||||||
service: https://cilium-gateway-stonegarden.gateway.svc.cluster.local:443
|
service: https://cilium-gateway-external.gateway.svc.cluster.local:443
|
||||||
originRequest:
|
originRequest:
|
||||||
originServerName: "*.stonegarden.dev"
|
originServerName: "*.stonegarden.dev"
|
||||||
- hostname: stonegarden.dev
|
- hostname: stonegarden.dev
|
||||||
service: https://cilium-gateway-stonegarden.gateway.svc.cluster.local:443
|
service: https://cilium-gateway-external.gateway.svc.cluster.local:443
|
||||||
originRequest:
|
originRequest:
|
||||||
originServerName: stonegarden.dev
|
originServerName: stonegarden.dev
|
||||||
- service: http_status:404
|
- service: http_status:404
|
||||||
|
|||||||
@@ -141,16 +141,18 @@ filtering:
|
|||||||
parental_block_host: family-block.dns.adguard.com
|
parental_block_host: family-block.dns.adguard.com
|
||||||
safebrowsing_block_host: standard-block.dns.adguard.com
|
safebrowsing_block_host: standard-block.dns.adguard.com
|
||||||
rewrites:
|
rewrites:
|
||||||
- domain: '*.stonegarden.dev'
|
|
||||||
answer: 192.168.1.222
|
|
||||||
- domain: stonegarden.dev
|
|
||||||
answer: 192.168.1.222
|
|
||||||
- domain: plex.stonegarden.dev
|
- domain: plex.stonegarden.dev
|
||||||
answer: 192.168.1.228
|
answer: 192.168.1.228
|
||||||
- domain: jellyfin.stonegarden.dev
|
- domain: jellyfin.stonegarden.dev
|
||||||
answer: 192.168.1.229
|
answer: 192.168.1.229
|
||||||
- domain: whoami.stonegarden.dev
|
- domain: proxmox.stonegarden.dev
|
||||||
answer: 192.168.1.223
|
answer: 192.168.1.221
|
||||||
|
- domain: truenas.stonegarden.dev
|
||||||
|
answer: 192.168.1.221
|
||||||
|
- domain: '*.stonegarden.dev'
|
||||||
|
answer: 192.168.1.220
|
||||||
|
- domain: stonegarden.dev
|
||||||
|
answer: 192.168.1.220
|
||||||
safebrowsing_cache_size: 1048576
|
safebrowsing_cache_size: 1048576
|
||||||
safesearch_cache_size: 1048576
|
safesearch_cache_size: 1048576
|
||||||
parental_cache_size: 1048576
|
parental_cache_size: 1048576
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ metadata:
|
|||||||
namespace: dns
|
namespace: dns
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "adguard.stonegarden.dev"
|
- "adguard.stonegarden.dev"
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: DaemonSet
|
||||||
metadata:
|
metadata:
|
||||||
name: unbound
|
name: unbound
|
||||||
namespace: dns
|
namespace: dns
|
||||||
spec:
|
spec:
|
||||||
replicas: 2
|
# replicas: 2
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: unbound
|
app: unbound
|
||||||
strategy:
|
# strategy:
|
||||||
type: Recreate
|
# type: Recreate
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
@@ -37,7 +37,7 @@ spec:
|
|||||||
protocol: UDP
|
protocol: UDP
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: 50m
|
cpu: 10m
|
||||||
memory: 64Mi
|
memory: 64Mi
|
||||||
limits:
|
limits:
|
||||||
cpu: 500m
|
cpu: 500m
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
apiVersion: gateway.networking.k8s.io/v1
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
kind: Gateway
|
kind: Gateway
|
||||||
metadata:
|
metadata:
|
||||||
name: stonegarden
|
name: external
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
spec:
|
spec:
|
||||||
gatewayClassName: cilium
|
gatewayClassName: cilium
|
||||||
33
k8s/infra/network/gateway/gw-internal.yaml
Normal file
33
k8s/infra/network/gateway/gw-internal.yaml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: Gateway
|
||||||
|
metadata:
|
||||||
|
name: internal
|
||||||
|
namespace: gateway
|
||||||
|
spec:
|
||||||
|
gatewayClassName: cilium
|
||||||
|
infrastructure:
|
||||||
|
annotations:
|
||||||
|
io.cilium/lb-ipam-ips: 192.168.1.220
|
||||||
|
listeners:
|
||||||
|
- protocol: HTTPS
|
||||||
|
port: 443
|
||||||
|
name: https-gateway
|
||||||
|
hostname: "*.stonegarden.dev"
|
||||||
|
tls:
|
||||||
|
certificateRefs:
|
||||||
|
- kind: Secret
|
||||||
|
name: cert-stonegarden
|
||||||
|
allowedRoutes:
|
||||||
|
namespaces:
|
||||||
|
from: All
|
||||||
|
- protocol: HTTPS
|
||||||
|
port: 443
|
||||||
|
name: https-domain-gateway
|
||||||
|
hostname: stonegarden.dev
|
||||||
|
tls:
|
||||||
|
certificateRefs:
|
||||||
|
- kind: Secret
|
||||||
|
name: cert-stonegarden
|
||||||
|
allowedRoutes:
|
||||||
|
namespaces:
|
||||||
|
from: All
|
||||||
@@ -5,5 +5,6 @@ resources:
|
|||||||
- cert-stonegarden.yaml
|
- cert-stonegarden.yaml
|
||||||
- gateway-class.yaml
|
- gateway-class.yaml
|
||||||
- ns.yaml
|
- ns.yaml
|
||||||
- gw-stonegarden.yaml
|
- gw-external.yaml
|
||||||
|
- gw-internal.yaml
|
||||||
- gw-tls-passthrough.yaml
|
- gw-tls-passthrough.yaml
|
||||||
|
|||||||
@@ -1,22 +1,17 @@
|
|||||||
apiVersion: gateway.networking.k8s.io/v1
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
kind: HTTPRoute
|
kind: HTTPRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: netbird
|
name: api
|
||||||
namespace: netbird
|
namespace: netbird
|
||||||
spec:
|
spec:
|
||||||
parentRefs:
|
parentRefs:
|
||||||
- name: stonegarden
|
- name: external
|
||||||
|
namespace: gateway
|
||||||
|
- name: internal
|
||||||
namespace: gateway
|
namespace: gateway
|
||||||
hostnames:
|
hostnames:
|
||||||
- "netbird.stonegarden.dev"
|
- "netbird.stonegarden.dev"
|
||||||
rules:
|
rules:
|
||||||
- backendRefs:
|
|
||||||
- name: netbird-dashboard
|
|
||||||
port: 80
|
|
||||||
matches:
|
|
||||||
- path:
|
|
||||||
type: PathPrefix
|
|
||||||
value: /
|
|
||||||
- backendRefs:
|
- backendRefs:
|
||||||
- name: netbird-backend-management
|
- name: netbird-backend-management
|
||||||
port: 80
|
port: 80
|
||||||
@@ -34,3 +29,23 @@ spec:
|
|||||||
- path:
|
- path:
|
||||||
type: PathPrefix
|
type: PathPrefix
|
||||||
value: /signalexchange.SignalExchange/
|
value: /signalexchange.SignalExchange/
|
||||||
|
---
|
||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: HTTPRoute
|
||||||
|
metadata:
|
||||||
|
name: dashboard
|
||||||
|
namespace: netbird
|
||||||
|
spec:
|
||||||
|
parentRefs:
|
||||||
|
- name: internal
|
||||||
|
namespace: gateway
|
||||||
|
hostnames:
|
||||||
|
- "netbird.stonegarden.dev"
|
||||||
|
rules:
|
||||||
|
- backendRefs:
|
||||||
|
- name: netbird-dashboard
|
||||||
|
port: 80
|
||||||
|
matches:
|
||||||
|
- path:
|
||||||
|
type: PathPrefix
|
||||||
|
value: /
|
||||||
|
|||||||
Reference in New Issue
Block a user