feat: deploy to Frostmoln production #86

Merged
argoyle merged 1 commits from feat/frostmoln-production into main 2026-10-14 17:53:36 +00:00
Owner

Moves the production deploy from AWS to the Frostmoln production cluster (namespace sites).

  • deploy-prod (AWS) has failed since CI left AWS: the runners have no k8s.unbound.se context, so the site on AWS still runs an older image. It's replaced by deploy-prod-frostmoln, the same pattern as Shiny's deploy-frostmoln-staging: FROSTMOLN_PRODUCTION_DEPLOY_KEY + FROSTMOLN_PRODUCTION_CLUSTER_ID (org), BUILDTOOLS_FROSTMOLN_PRODUCTION (org, target prod-frostmoln), deploy prod-frostmoln -n sites.
  • Frostmoln enforces restricted Pod Security: the served image is nginxinc/nginx-unprivileged (uid 101, port 8080), with a matching securityContext; the Service is ClusterIP.
  • ingress-prod.yaml (ALB) → ingress-prod-frostmoln.yaml (Traefik, Let's Encrypt).

Checked locally: the image serves /health and / (200) as uid 101 with all capabilities dropped.

Merge after infra's feat/frostmoln-production-sites is applied (namespace + org secret). The hostnames keep pointing at AWS until the Route 53 switch, a separate step; the certificate is issued after that.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Ma8eHhW59hLAJuLzBnLvUu

Moves the production deploy from AWS to the Frostmoln production cluster (namespace `sites`). - `deploy-prod` (AWS) has failed since CI left AWS: the runners have no `k8s.unbound.se` context, so the site on AWS still runs an older image. It's replaced by `deploy-prod-frostmoln`, the same pattern as Shiny's `deploy-frostmoln-staging`: `FROSTMOLN_PRODUCTION_DEPLOY_KEY` + `FROSTMOLN_PRODUCTION_CLUSTER_ID` (org), `BUILDTOOLS_FROSTMOLN_PRODUCTION` (org, target `prod-frostmoln`), `deploy prod-frostmoln -n sites`. - Frostmoln enforces restricted Pod Security: the served image is `nginxinc/nginx-unprivileged` (uid 101, port 8080), with a matching securityContext; the Service is ClusterIP. - `ingress-prod.yaml` (ALB) → `ingress-prod-frostmoln.yaml` (Traefik, Let's Encrypt). Checked locally: the image serves `/health` and `/` (200) as uid 101 with all capabilities dropped. **Merge after** infra's `feat/frostmoln-production-sites` is applied (namespace + org secret). The hostnames keep pointing at AWS until the Route 53 switch, a separate step; the certificate is issued after that. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01Ma8eHhW59hLAJuLzBnLvUu
argoyle added 1 commit 2026-10-14 17:44:00 +00:00
feat: deploy to Frostmoln production
lingonpaj-site / build (pull_request) Successful in 2m28s
lingonpaj-site / deploy-prod-frostmoln (pull_request) Skipped
c6191756c5
The AWS deploy-prod job has failed since CI left AWS (no k8s.unbound.se
context on the runners). Deploys now go to the Frostmoln production
cluster (namespace sites), the way Shiny deploys to Frostmoln staging.

Frostmoln enforces restricted Pod Security, so the image is
nginx-unprivileged (uid 101, port 8080) with a matching securityContext.
The ALB ingress becomes a Traefik one with a Let's Encrypt certificate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ma8eHhW59hLAJuLzBnLvUu
argoyle merged commit 4da73fb025 into main 2026-10-14 17:53:36 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unboundsoftware/lingonpaj-site#86