[Ch 10] Deployment — switch from nginx proxy to Rails container #19

Open
opened 2026-08-01 19:03:19 +00:00 by ldraney · 0 comments
Owner

Type

Feature

Lineage

Standalone — scoped from platform-playbook chapter 10 for the full-stack mdview vision.

Repo

ldraney/pal-e-deployments

User Story

As a developer
I want mdview to run its own container on the cluster
So that it doesn't depend on my local machine being awake

Context

The current prod overlay runs nginx:alpine proxying to archbox:3137 via Tailscale. The Docker image is built and pushed to Harbor by CI but never actually deployed. This ticket switches the deployment to use the real mdview image so the app runs independently on the cluster. Depends on Ch 6 (database) and Ch 7 (Keycloak) being done first.

File Targets

  • overlays/mdview/base/deployment.yaml — replace nginx proxy with mdview/app image, add env vars, probes, init container
  • overlays/mdview/base/configmap.yaml — may no longer be needed (nginx config)
  • overlays/mdview/prod/secrets.enc.yaml — create SOPS-encrypted secrets

Files the agent should NOT touch:

  • overlays/mdview/base/ingress.yaml — Funnel ingress stays the same

Feature Flag

none

Acceptance Criteria

  • Deployment uses harbor.tail5b443a.ts.net/mdview/app image
  • Init container runs db:prepare
  • Liveness/readiness probes on /up
  • Pod starts and passes health checks
  • Image Updater auto-deploys on push to main
  • https://mdview.tail5b443a.ts.net/ serves from cluster, not archbox

Test Expectations

  • No unit tests — deployment change
  • Run command: kubectl get pods -n mdview, curl https://mdview.tail5b443a.ts.net/up

Constraints

  • Follow landscaping-assistant prod overlay pattern for probes, resource limits, security context
  • Resources: 50m CPU request, 128Mi memory request, 512Mi memory limit

Checklist

  • PR opened
  • Tests pass
  • No unrelated changes
  • project-mdview — project this affects
### Type Feature ### Lineage Standalone — scoped from platform-playbook chapter 10 for the full-stack mdview vision. ### Repo `ldraney/pal-e-deployments` ### User Story As a developer I want mdview to run its own container on the cluster So that it doesn't depend on my local machine being awake ### Context The current prod overlay runs nginx:alpine proxying to archbox:3137 via Tailscale. The Docker image is built and pushed to Harbor by CI but never actually deployed. This ticket switches the deployment to use the real mdview image so the app runs independently on the cluster. Depends on Ch 6 (database) and Ch 7 (Keycloak) being done first. ### File Targets - `overlays/mdview/base/deployment.yaml` — replace nginx proxy with mdview/app image, add env vars, probes, init container - `overlays/mdview/base/configmap.yaml` — may no longer be needed (nginx config) - `overlays/mdview/prod/secrets.enc.yaml` — create SOPS-encrypted secrets Files the agent should NOT touch: - `overlays/mdview/base/ingress.yaml` — Funnel ingress stays the same ### Feature Flag none ### Acceptance Criteria - [ ] Deployment uses `harbor.tail5b443a.ts.net/mdview/app` image - [ ] Init container runs `db:prepare` - [ ] Liveness/readiness probes on `/up` - [ ] Pod starts and passes health checks - [ ] Image Updater auto-deploys on push to main - [ ] `https://mdview.tail5b443a.ts.net/` serves from cluster, not archbox ### Test Expectations - [ ] No unit tests — deployment change - Run command: `kubectl get pods -n mdview`, `curl https://mdview.tail5b443a.ts.net/up` ### Constraints - Follow landscaping-assistant prod overlay pattern for probes, resource limits, security context - Resources: 50m CPU request, 128Mi memory request, 512Mi memory limit ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] No unrelated changes ### Related - `project-mdview` — project this affects
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/mdview#19
No description provided.