Both names answered 404 at every path: the declaration that served them (k8s/lux-k8s/cdn/cdn.yaml) addressed an in-cluster S3 bucket on DOKS, and that account is suspended. DNS and the tunnel already deliver both to the ingress -- each returns the ingress's own "404 page not found" -- so what was missing was a route, not a path to the cluster. deploy/lux-cdn/lux-cdn.yaml is that route, on the same pattern as every other static host here: one staticFiles middleware over s3://hanzo-sites/lux/lux-cdn, one rule matching both names, and no Deployment, because a static host is not a pod. luxfi/cdn publishes the prefix from its own lane. NO spaMode, and that is the one place this differs from the sites beside it. The exchange's rule is that a mark which exists nowhere is reported missing and never drawn, and that only holds if the host says so: in SPA mode an unknown path answers 200 with index.html, so a caller asking for a PNG receives an HTML document, caches it, and reports nothing. The prefix is lux/lux-cdn rather than lux/cdn because `cdn` is on cloud's reserved-label list beside api, admin and gateway -- no site may be published at cdn.<apex> and shadow real infrastructure -- so that slug cannot be created and the prefix cannot be published to. assets.lux.network keeps its own declaration in that directory until it moves. Co-authored-by: Hanzo Dev <[email protected]>
55 lines
2.0 KiB
YAML
55 lines
2.0 KiB
YAML
# cdn.lux.cloud is files: one Middleware that serves them, one route that names it,
|
|
# and the endpoint-less Service the route schema requires. No image, so the
|
|
# chart renders no Deployment -- a static host is not a pod.
|
|
#
|
|
# Host law: lux.network is for decentralized network surfaces; centralized
|
|
# storage lives on lux.cloud. cdn.lux.network is the older name, kept serving
|
|
# because shipped clients -- the wallets, Safe's chain list, the ad server's
|
|
# VAST -- fetch it from users' machines and cannot be repointed by editing a
|
|
# repo. New references use cdn.lux.cloud. Both names, one rule, one prefix:
|
|
# there is no second copy of the files to fall behind.
|
|
#
|
|
# The prefix is lux/lux-cdn and not lux/cdn: `cdn` is on cloud's reserved-label
|
|
# list (apps/sites/reserved.go), alongside api, admin, gateway and the brand
|
|
# terms, so that nobody can publish a site at cdn.<apex> and shadow real
|
|
# infrastructure. A slug that cannot be created is a prefix that cannot be
|
|
# published to.
|
|
#
|
|
# This replaces k8s/lux-k8s/cdn/cdn.yaml, which served the same two hosts from
|
|
# an in-cluster S3 bucket through an addPrefix middleware on DOKS. The bytes now
|
|
# come from the Sites plane, published by luxfi/cdn's own lane, which is the one
|
|
# way every other static host here already reaches the edge.
|
|
#
|
|
# NO spaMode. The exchange's rule is that a mark which exists nowhere is
|
|
# reported missing, never drawn, and that only holds if the host says so: in SPA
|
|
# mode every unknown path answers 200 with index.html, so a caller asking for a
|
|
# PNG gets an HTML document, caches it, and reports nothing. Off, a missing mark
|
|
# is a 404.
|
|
cd:
|
|
automated: true
|
|
ports:
|
|
- name: http
|
|
containerPort: 80
|
|
middlewares:
|
|
- name: cdn
|
|
spec:
|
|
staticFiles:
|
|
root: s3://hanzo-sites/lux/lux-cdn
|
|
indexFiles:
|
|
- index.html
|
|
routes:
|
|
- name: cdn
|
|
spec:
|
|
entryPoints:
|
|
- websecure
|
|
routes:
|
|
- match: Host(`cdn.lux.cloud`) || Host(`cdn.lux.network`)
|
|
kind: Rule
|
|
priority: 100
|
|
middlewares:
|
|
- name: cdn
|
|
services:
|
|
- name: lux-cdn
|
|
port: 80
|
|
tls: {}
|