From 92c8ab9cc90f054e7c4fc45d440046f559c0e5ce Mon Sep 17 00:00:00 2001 From: Jeffrey Smeets Date: Tue, 2 Jun 2026 19:23:31 +0200 Subject: [PATCH] =?UTF-8?q?Add=20Pelican=20panel=20=E2=80=94=20EndpointSli?= =?UTF-8?q?ce,=20HTTPRoute,=20certificate,=20gateway=20listener?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- envoy-gateway/kustomization.yaml | 21 +++++++++++ envoy-gateway/pelican/certificate.yaml | 14 ++++++++ envoy-gateway/pelican/gateway-patch.yaml | 19 ++++++++++ pelican/httproute.yaml | 46 ++++++++++++++++++++++++ pelican/pelican-endpointslice.yaml | 18 ++++++++++ pelican/pelican-svc.yaml | 11 ++++++ 6 files changed, 129 insertions(+) create mode 100644 envoy-gateway/pelican/certificate.yaml create mode 100644 envoy-gateway/pelican/gateway-patch.yaml create mode 100644 pelican/httproute.yaml create mode 100644 pelican/pelican-endpointslice.yaml create mode 100644 pelican/pelican-svc.yaml diff --git a/envoy-gateway/kustomization.yaml b/envoy-gateway/kustomization.yaml index ec8b197..89597a5 100644 --- a/envoy-gateway/kustomization.yaml +++ b/envoy-gateway/kustomization.yaml @@ -46,6 +46,9 @@ resources: - ollama/certificate.yaml - openwebui/certificate.yaml - searxng/certificate.yaml + - docuseal/certificate.yaml + - affine/certificate.yaml + - pelican/certificate.yaml patches: # Internal gateway patches @@ -289,6 +292,24 @@ patches: kind: Gateway name: gateway-internal path: searxng/gateway-patch.yaml + - target: + group: gateway.networking.k8s.io + version: v1 + kind: Gateway + name: gateway-internal + path: docuseal/gateway-patch.yaml + - target: + group: gateway.networking.k8s.io + version: v1 + kind: Gateway + name: gateway-internal + path: affine/gateway-patch.yaml + - target: + group: gateway.networking.k8s.io + version: v1 + kind: Gateway + name: gateway-internal + path: pelican/gateway-patch.yaml # Public gateway patches - target: diff --git a/envoy-gateway/pelican/certificate.yaml b/envoy-gateway/pelican/certificate.yaml new file mode 100644 index 0000000..5984380 --- /dev/null +++ b/envoy-gateway/pelican/certificate.yaml @@ -0,0 +1,14 @@ +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: pelican-tls + namespace: envoy-gateway +spec: + secretName: pelican-tls + privateKey: + rotationPolicy: Always + issuerRef: + name: azure-dns + kind: ClusterIssuer + dnsNames: + - pelican.jsme.be diff --git a/envoy-gateway/pelican/gateway-patch.yaml b/envoy-gateway/pelican/gateway-patch.yaml new file mode 100644 index 0000000..920bb3d --- /dev/null +++ b/envoy-gateway/pelican/gateway-patch.yaml @@ -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 diff --git a/pelican/httproute.yaml b/pelican/httproute.yaml new file mode 100644 index 0000000..d7e9967 --- /dev/null +++ b/pelican/httproute.yaml @@ -0,0 +1,46 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: pelican-route + namespace: pelican +spec: + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: gateway-internal + namespace: envoy-gateway + sectionName: pelican + hostnames: + - "pelican.jsme.be" + rules: + - matches: + - path: + type: PathPrefix + value: / + filters: + - type: RequestHeaderModifier + requestHeaderModifier: + set: + - name: X-Forwarded-Host + value: "pelican.jsme.be" + - name: X-Forwarded-Proto + value: https + - type: ResponseHeaderModifier + responseHeaderModifier: + set: + - name: Strict-Transport-Security + value: "max-age=31536000; includeSubDomains" + - name: X-Content-Type-Options + value: nosniff + - name: X-Frame-Options + value: SAMEORIGIN + - name: Referrer-Policy + value: strict-origin-when-cross-origin + - name: Permissions-Policy + value: "camera=(), microphone=(), geolocation=(), payment=()" + backendRefs: + - name: pelican + port: 80 + kind: Service + group: "" + weight: 1 diff --git a/pelican/pelican-endpointslice.yaml b/pelican/pelican-endpointslice.yaml new file mode 100644 index 0000000..71d8c02 --- /dev/null +++ b/pelican/pelican-endpointslice.yaml @@ -0,0 +1,18 @@ +apiVersion: discovery.k8s.io/v1 +kind: EndpointSlice +metadata: + name: pelican + namespace: pelican + labels: + kubernetes.io/service-name: pelican +addressType: IPv4 +ports: + - port: 80 + protocol: TCP +endpoints: + - addresses: + - "10.8.11.50" + conditions: + ready: true + serving: true + terminating: false diff --git a/pelican/pelican-svc.yaml b/pelican/pelican-svc.yaml new file mode 100644 index 0000000..cefd168 --- /dev/null +++ b/pelican/pelican-svc.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: pelican + namespace: pelican +spec: + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: ClusterIP