Files
papers/site/deploy/papers.service.yaml
zeekay 5182fe9980 deploy(site): build+deploy papers.hanzo.ai on self-hosted arcd → hanzo-k8s operator
Replace the GitHub Pages publish (broken since 2026-04-10 on the org-wide
Actions artifact-storage quota) with a standard GHA workflow that runs entirely
on Hanzo infra: build the Next.js static export into a hanzoai/static image on
the self-hosted hanzo-build-linux-amd64 pool, push to ghcr.io/hanzoai/papers,
then roll it onto the operator-managed `papers` Service CR (hanzoai/ingress +
static plugin) from hanzo-deploy-linux-amd64. No GitHub-hosted builders, no
Pages artifact quota, no kaniko/PAT. DNS cutover (Cloudflare → hanzo-k8s LB) is
the remaining one-time step.
2026-06-18 15:22:23 -07:00

45 lines
1.2 KiB
YAML

# papers.hanzo.ai — operator-managed static site.
#
# The Hanzo operator (hanzo.ai/v1 Service) materializes Deployment + Service +
# Ingress + TLS cert from this one CR. The site is the Next.js static export
# baked into hanzoai/static (see ../Dockerfile), fronted by hanzoai/ingress.
# Modeled on the proven crs/cdn.yaml. The deploy workflow templates __TAG__ with
# the git SHA and `kubectl apply`s this (idempotent create-or-update).
apiVersion: hanzo.ai/v1
kind: Service
metadata:
name: papers
namespace: hanzo
spec:
image:
repository: ghcr.io/hanzoai/papers
tag: "__TAG__"
pullPolicy: Always
replicas: 2
args:
- "-port"
- "3000"
ports:
- name: http
containerPort: 3000
servicePort: 80
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi
ingress:
enabled: true
hosts:
- papers.hanzo.ai
tls: true
# DNS-01 issuer: HTTP-01 is shadowed by the ingress 80→443 redirect and by
# the Cloudflare proxy in front of papers.hanzo.ai.
clusterIssuer: letsencrypt-prod-cf
imagePullSecrets:
- name: ghcr-secret
partOf: platform
component: papers