Files
bluejay-infra/apps/fc-signage/fc-signage.yaml
2026-06-04 15:55:07 -05:00

72 lines
1.9 KiB
YAML

# FlowerCore Digital Signage — TLS + Ingress
# Deployment and Service managed by deploy script (not ArgoCD)
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: signage-web-tls
namespace: fc-signage
spec:
secretName: signage-web-tls
issuerRef:
name: step-ca-acme
kind: ClusterIssuer
dnsNames:
- signage.iamworkin.lan
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: signage-web
namespace: fc-signage
spec:
entryPoints:
- websecure
routes:
- match: Host(`signage.iamworkin.lan`)
kind: Rule
services:
- name: signage-web
port: 5190
tls:
secretName: signage-web-tls
---
# HTTP route for signage players that may not use TLS
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: signage-web-http
namespace: fc-signage
spec:
entryPoints:
- web
routes:
- match: Host(`signage.iamworkin.lan`)
kind: Rule
services:
- name: signage-web
port: 5190
# ---- PUBLIC HOST PRE-STAGING (DISABLED - Sprint 61+ exposure go-decision only) ----
# When the operator decides to expose signage-web publicly, uncomment + update the host,
# then verify the five safe-to-expose gates (authentik-safe-to-expose-readiness-2026-06-07.md section 2).
#
# --- IngressRoute ---
# apiVersion: traefik.io/v1alpha1
# kind: IngressRoute
# metadata:
# name: signage-web-public
# namespace: fc-signage
# spec:
# entryPoints: [websecure]
# routes:
# - match: Host(`signage.flowercore.io`) && (Method(`GET`) || Method(`HEAD`))
# kind: Rule
# middlewares:
# - name: signage-web-public-profile-header # injects entitlement profile
# services:
# - name: signage-web
# port: 80
# tls: {}
# # POST/PUT/PATCH/DELETE miss every route -> Traefik 404 -> no admin writes on the public surface.
# # Reference pattern: dist.flowercore.io (already live + method-gated; do not edit that one).