pelican: expose the panel on the public gateway

Adds a pelican listener to gateway-public and a gateway-public parentRef to
pelican-route. Reuses the existing pelican-tls certificate, which both
listeners reference.

Wings deliberately stays internal-only. That is a real functional limit, not
an oversight: the browser talks to wings directly for the console websocket
and for file upload/download, using the address from Node::getConnectionAddress.
From outside the LAN those calls will fail. Panel login, server list, file
browsing and editing, and power actions all go through the panel API and keep
working, because the panel reaches wings server-side over the internal gateway.

CrowdSec ext_authz already covers every listener on gateway-public, so the
panel is behind the WAF and community blocklist from the moment it is live.

Prerequisites completed first: TRUSTED_PROXIES=10.42.0.0/16 and
APP_2FA_REQUIRED=1 set in Infisical and verified live in the panel config.

pelican.jsme.be has no public DNS record yet, so this makes the panel reachable
through 10.8.11.105 but not from the internet. The Azure DNS CNAME in the
OpenTofu repo is the actual cutover.
This commit is contained in:
2026-08-26 20:41:28 +02:00
parent 193b9db359
commit 1849703886
3 changed files with 30 additions and 0 deletions
@@ -10,6 +10,11 @@ spec:
name: gateway-internal name: gateway-internal
namespace: envoy-gateway namespace: envoy-gateway
sectionName: pelican sectionName: pelican
- group: gateway.networking.k8s.io
kind: Gateway
name: gateway-public
namespace: envoy-gateway
sectionName: pelican
hostnames: hostnames:
- "pelican.jsme.be" - "pelican.jsme.be"
rules: rules:
+6
View File
@@ -379,6 +379,12 @@ patches:
kind: Gateway kind: Gateway
name: gateway-public name: gateway-public
path: outline/outline-gateway-public-patch.yaml path: outline/outline-gateway-public-patch.yaml
- target:
group: gateway.networking.k8s.io
version: v1
kind: Gateway
name: gateway-public
path: pelican/pelican-gateway-public-patch.yaml
# Uncomment to expose Grafana publicly — ensure Grafana auth is properly configured first # Uncomment to expose Grafana publicly — ensure Grafana auth is properly configured first
# - target: # - target:
# group: gateway.networking.k8s.io # group: gateway.networking.k8s.io
@@ -0,0 +1,19 @@
- op: add
path: /spec/listeners/-
value:
name: pelican
protocol: HTTPS
port: 443
hostname: "pelican.jsme.be"
allowedRoutes:
namespaces:
from: Selector
selector:
matchLabels:
kubernetes.io/metadata.name: pelican
tls:
mode: Terminate
certificateRefs:
- kind: Secret
name: pelican-tls
namespace: envoy-gateway