Add k8s manifests and CI pipeline for service onboarding #5
No reviewers
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!5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "4-service-onboarding"
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?
Summary
Adds Kubernetes manifests (deployment, service, kustomization) and extends the Woodpecker CI pipeline with kaniko build-and-push and deployment tag update steps, enabling pal-e-app to be deployed to k8s with the same CI/CD pattern as pal-e-docs.
Changes
PAL_E_DOCS_API_URLenv var pointing to in-cluster pal-e-docs service, liveness/readiness probes on/, resource limitsTest Plan
npm run checkpasses (0 errors, 0 warnings)npm run buildsucceeds (adapter-node output)kubectl apply -k k8s/ --dry-run=client -n pal-e-appReview Checklist
Related
plan-2026-03-13-pal-e-frontendSelf-Review: PASS
Reviewed the full diff (4 files, +118/-1) against the pal-e-docs reference patterns and Issue #4 requirements.
k8s manifests:
/,PAL_E_DOCS_API_URLenv var, harbor-creds imagePullSecret, resource limits. Matches spec exactly.CI pipeline (.woodpecker.yaml):
pal-e-app.when: push-to-main (with ArgoCD path exclusions) + pull_request. Correct.pal-e-app/apprepo, main-only gate. Correct.pal-e-app/app, main-only gate. Correct.Verification:
npm run check: 0 errors, 0 warningsnpm run build: success (adapter-node)No issues found. Ready for merge.
PR #5 Review
Title: Add k8s manifests and CI pipeline for service onboarding
Branch:
4-service-onboarding->mainIssue: #4
Files changed: 4 (+118 / -1)
BLOCKERS
None. All four requirements are met correctly:
k8s/deployment.yaml -- Harbor image (
harbor.tail5b443a.ts.net/pal-e-app/app:latest), port 3000,harbor-credsimagePullSecret, liveness/readiness probes on/, resource requests/limits matching the pal-e-docs pattern,PAL_E_DOCS_API_URLenv var pointing tohttp://pal-e-docs.pal-e-docs.svc.cluster.local:8000. All present and correct.k8s/service.yaml -- ClusterIP service on port 3000 with correct selector and labels. Matches the pal-e-docs service pattern adapted for port 3000.
k8s/kustomization.yaml -- Lists deployment.yaml and service.yaml. Correct.
.woodpecker.yaml -- Clone override uses in-cluster Forgejo URL. build-and-push uses kaniko 2.3.0 against
harbor.harbor.svc.cluster.localwith repopal-e-app/app. update-deployment-tag uses sed + git push pattern. Both steps gated to push-on-main only. Existing install/check/lint/build steps are preserved. Path exclusions for ArgoCD-managed files are present.Verified against reference patterns:
/home/ldraney/pal-e-docs/k8s/deployment.yaml/home/ldraney/pal-e-docs/k8s/service.yaml/home/ldraney/pal-e-docs/k8s/kustomization.yaml/home/ldraney/pal-e-docs/.woodpecker.yamlExpected differences from pal-e-docs confirmed as non-issues: port 3000 (Node.js), health check on
/(SvelteKit), no DB secrets (frontend), no ServiceMonitor, no smoke-test step.NITS
Explicit
depends_onon build-and-push -- The PR addsdepends_on: [build]to the build-and-push step, which the pal-e-docs reference lacks. This is actually an improvement -- it makes the dependency chain explicit and ensures the npm build succeeds before kaniko runs. Not a problem, just noting the intentional divergence.Service missing
type: ClusterIP-- Both this PR and the pal-e-docs reference omitspec.type, which defaults to ClusterIP. Fine, but making it explicit would improve readability. Non-blocking.SOP COMPLIANCE
4-service-onboardingfor issue #4)plan-2026-03-13-pal-e-frontend)Closes #4present in PR bodyVERDICT: APPROVED