Service onboarding: deploy pal-e-app to k8s #4
Labels
No labels
domain:backend
domain:devops
domain:frontend
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/pal-e-docs-app#4
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Lineage
plan-pal-e-docs→ Phase 2a (deploy pal-e-app)Repo
forgejo_admin/pal-e-appUser Story
As a platform operator
I want pal-e-app deployed to k8s via ArgoCD
So that the SvelteKit frontend is live at
https://pal-e-app.tail5b443a.ts.netContext
pal-e-app was scaffolded in PR #2 (SvelteKit 2 + Svelte 5 + Tailwind 4 + adapter-node + Dockerfile + Woodpecker CI). The scaffold is merged to main but the app has NO k8s manifests and is NOT deployed. This issue creates the k8s manifests and updates CI for the full GitOps deployment pipeline.
The service onboarding SOP requires: k8s manifests (deployment, service, kustomization), CI build-and-push step (kaniko → Harbor), and deployment tag update step. The terraform side (var.services entry in pal-e-services) is handled separately.
File Targets
Files to create:
k8s/deployment.yaml— Deployment with harbor image, port 3000, imagePullSecrets, health checks, env varsk8s/service.yaml— ClusterIP Service on port 3000k8s/kustomization.yaml— Kustomize wrapper referencing deployment + serviceFiles to modify:
.woodpecker.yaml— Addbuild-and-pushstep (kaniko),update-deployment-tagstep, clone override for in-cluster Forgejo access. Follow pal-e-docs.woodpecker.yamlpattern exactly.Files NOT to touch:
src/**— no application code changesDockerfile— already correctdocker-compose.yml— dev-only, not relevantAcceptance Criteria
k8s/deployment.yamlexists with: image from Harbor (harbor.tail5b443a.ts.net/pal-e-app/app:TAG), port 3000,harbor-credsimagePullSecret, liveness/readiness probes on/, resource requests/limits,PAL_E_DOCS_API_URLenv var pointing to in-cluster pal-e-docs servicek8s/service.yamlexists with ClusterIP service on port 3000k8s/kustomization.yamllists deployment.yaml + service.yaml.woodpecker.yamlhas clone step (in-cluster Forgejo URL), build-and-push step (kaniko to Harbor), update-deployment-tag step (sed + git push)Test Expectations
npm run checkpasses (TypeScript)npm run lintpasses (ESLint)npm run buildsucceeds (no broken imports)kubectl apply -k k8s/ --dry-run=clientvalidates manifests (manual verification)Constraints
pal-e-app/app(matches var.services entry)/(SvelteKit serves the landing page)PAL_E_DOCS_API_URL=http://pal-e-docs.pal-e-docs.svc.cluster.local:8000harbor-credsfor imagePullSecret name (created by terraform)Checklist
Related
pal-e-docs— project this affectsservice-onboarding-sop— SOP being followed