From c828832808c6215fee5afcdc46893a9757f3a6b7 Mon Sep 17 00:00:00 2001 From: Andrew Stoltz Date: Sun, 26 Apr 2026 14:37:33 -0500 Subject: [PATCH] edge2-services: print.iamworkin.lan Traefik HTTPS for Print.Web (XL Track C) Adds an IngressRoute + cert-manager Certificate that terminates HTTPS for print.iamworkin.lan and proxies to edge2's Print.Web at 10.0.57.16:5200. Same headless-Service-with-manual-Endpoints pattern as noc-services (used for grafana/prometheus/cockpit on noc1). pfSense Unbound already resolves print.iamworkin.lan to the Traefik VIP 10.0.56.200, so cert-manager HTTP-01 should validate cleanly. No basicAuth middleware: Print.Web has its own X-Api-Key authentication and exposes anonymous endpoints for the bookmarklet / Python CLI / cups-notifier flow. Co-Authored-By: Claude Opus 4.7 (1M context) --- apps/edge2-services/edge2-services.yaml | 106 ++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 apps/edge2-services/edge2-services.yaml diff --git a/apps/edge2-services/edge2-services.yaml b/apps/edge2-services/edge2-services.yaml new file mode 100644 index 0000000..73c4181 --- /dev/null +++ b/apps/edge2-services/edge2-services.yaml @@ -0,0 +1,106 @@ +# edge2 Services — Traefik IngressRoutes for FlowerCore Print.Web on edge2 +# Proxies print.iamworkin.lan to edge2 (10.0.57.16:5200) via headless Service +# + manual Endpoints (same K8s external-proxy pattern as noc-services). +# +# Print.Web has its own X-Api-Key authentication and exposes anonymous +# endpoints for the bookmarklet / Python CLI / cups-notifier flow, so no +# Traefik basicAuth middleware is wired here. +# +# ArgoCD managed - BlueJay Lab +--- +apiVersion: v1 +kind: Namespace +metadata: + name: edge2-proxy + labels: + app.kubernetes.io/part-of: bluejay-infra +--- +# ============================================================ +# Print.Web - edge2:5200 (FlowerCore.Print.Web on Pi 4) +# ============================================================ +apiVersion: v1 +kind: Service +metadata: + name: print-web-external + namespace: edge2-proxy +spec: + ports: + - port: 5200 + targetPort: 5200 + name: http + clusterIP: None +--- +apiVersion: v1 +kind: Endpoints +metadata: + name: print-web-external + namespace: edge2-proxy +subsets: + - addresses: + - ip: 10.0.57.16 + ports: + - port: 5200 + name: http +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: print-web-tls + namespace: edge2-proxy +spec: + secretName: print-web-tls + issuerRef: + name: step-ca-acme + kind: ClusterIssuer + dnsNames: + - print.iamworkin.lan +--- +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: print-web + namespace: edge2-proxy +spec: + entryPoints: + - websecure + routes: + - kind: Rule + match: Host(`print.iamworkin.lan`) + services: + - name: print-web-external + port: 5200 + tls: + secretName: print-web-tls +--- +# NetworkPolicy: allow Traefik ingress, allow egress to edge2 + DNS +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: edge2-proxy-netpol + namespace: edge2-proxy +spec: + podSelector: {} + policyTypes: + - Ingress + - Egress + ingress: + - from: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: traefik-system + egress: + - to: + - ipBlock: + cidr: 10.0.57.16/32 + ports: + - port: 5200 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: kube-system + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP