Align k8s manifests with convention and add /metrics endpoint #3
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ldraney/linkedin-scheduler-remote#3
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?
Type
Feature
Lineage
Standalone — discovered during platform onboarding of linkedin-scheduler-remote. Original issue scope was ~80% complete at time of filing; this rewrite reflects only the remaining delta.
Repo
forgejo_admin/linkedin-scheduler-remoteUser Story
As a platform operator
I want linkedin-scheduler-remote's k8s manifests to follow the split-file convention and expose a /metrics endpoint
So that ArgoCD syncs are clean, ServiceMonitor scraping works, and the repo matches every other onboarded service
Context
linkedin-scheduler-remote was onboarded to the k3s cluster with a working CI pipeline (.woodpecker.yml), Dockerfile, Deployment, ServiceMonitor, and kustomization.yaml already on main. However, the Deployment manifest bundles Service and PVC inline (multi-document YAML), which breaks the one-resource-per-file convention used by every other onboarded service. Additionally, server.py has no /metrics endpoint, so the ServiceMonitor (scraping /metrics at 30s intervals) is hitting 404. Ruff config in pyproject.toml is already correct.
File Targets
Files the agent should modify or create:
k8s/deployment.yaml— remove the inline---Service and PVC documents, leaving only the Deployment resourcek8s/service.yaml— new file, extracted Service (port 8000) from deployment.yamlk8s/pvc.yaml— new file, extracted PVC (linkedin-mcp-data, 100Mi local-path) from deployment.yamlk8s/kustomization.yaml— addservice.yamlandpvc.yamlto the resources listserver.py— add a/metricsHTTP endpoint returning Prometheus-format metrics (at minimum: uptime, request count)Files the agent should NOT touch:
.woodpecker.yml— CI pipeline is correct as-isDockerfile— container build is correct as-isk8s/servicemonitor.yaml— already configured for /metrics:8000 at 30spyproject.toml— ruff config already present and correctAcceptance Criteria
k8s/deployment.yamlcontains only the Deployment resource (no---separators, no Service, no PVC)k8s/service.yamlexists with the Service resource (port 8000, selector app: linkedin-scheduler-remote)k8s/pvc.yamlexists with the PVC resource (linkedin-mcp-data, 100Mi, local-path)k8s/kustomization.yamllists all four resources: deployment.yaml, service.yaml, pvc.yaml, servicemonitor.yamlserver.pyexposesGET /metricsreturning Prometheus text format (at minimum: uptime_seconds, http_requests_total)Test Expectations
kubectl kustomize k8s/renders four separate resources (Deployment, Service, PVC, ServiceMonitor)curl http://localhost:8000/metricsreturns Prometheus text format with at least one metriccd k8s && kubectl kustomize .to verify manifest correctness locallyConstraints
3-add-woodpecker-ci-pipeline-and-k8s-manif) is open and not mergeable. It was created against the original full-scope issue and includes files that already exist on main. The agent should close PR #4 and open a fresh PR scoped to only this delta work..woodpecker.ymlto.woodpecker.yaml— the existing filename is what Woodpecker CI readsChecklist
Related
project-pal-e— pal-e platform infrastructurereview-65-2026-03-27-v2— scope review that identified the refinement gapsScope Review: NEEDS_REFINEMENT
Review note:
review-65-2026-03-27Traceability is complete (story:superuser-onboard, arch:ci-pipeline, type:feature). Issue is open and correctly placed.
Issues found:
.woodpecker.yml,Dockerfile,k8s/deployment.yaml(with Service+PVC inline), andk8s/servicemonitor.yamlalready exist on main. The issue describes creating files that are already there..woodpecker.ymlvs pattern.woodpecker.yaml; existingDockerfilevs issue'sDockerfile.k8sBefore moving to next_up: rewrite scope to reflect only the remaining delta, or consider closing and opening a smaller issue for the /metrics + file-split work.
Issue body updated per scope review corrections.
Scope Review: NEEDS_REFINEMENT
Review note:
review-65-2026-03-27-v2Issue body was updated after prior review but still has 6 of 11 required feature template sections missing (Type, Lineage, Context, File Targets, Test Expectations, Constraints).
Issues found:
template-issue-feature### Planheader instead of### LineageFile targets all verified accurate. Traceability complete (story:superuser-onboard, arch:ci-pipeline). No decomposition needed. No blocking dependencies.
Add Woodpecker CI pipeline and k8s manifeststo Align k8s manifests with convention and add /metrics endpointIssue Refined per review-65-2026-03-27-v2
Title updated: "Add Woodpecker CI pipeline and k8s manifests" → "Align k8s manifests with convention and add /metrics endpoint" (reflects actual remaining delta, not the original full scope)
Body rewritten to include all 11 required sections from
template-issue-feature:### Type(Feature)### Planwith### Lineage### Contextexplaining why the remaining work matters### File Targetswith explicit modify/create/do-not-touch lists (verified against main)### Test Expectationswith kustomize and curl verification steps### Constraintsincluding stale PR #4 guidance (close and open fresh PR)Acceptance criteria expanded: Added /metrics AC (the only substantive code change — server.py currently has no /metrics, so ServiceMonitor is 404ing).
Verified against main:
server.py— no /metrics endpoint (confirmed)k8s/deployment.yaml— contains inline Service + PVC (confirmed, needs split)k8s/kustomization.yaml— only lists deployment.yaml + servicemonitor.yaml (confirmed)pyproject.toml— ruff config already present (no work needed).woodpecker.yml— exists and correct (no work needed)Dockerfile— exists and correct (no work needed)Scope Review: READY
Review note:
review-65-2026-03-27-v3Third review (v3) after full template rewrite. All 11 required sections from
template-issue-featureare present and accurate. Traceability triangle complete (story:superuser-onboard, arch:ci-pipeline, Forgejo issue open). All 5 file targets verified against repo main branch — deployment.yaml confirmed multi-doc, service.yaml/pvc.yaml confirmed absent, server.py confirmed no /metrics endpoint. Blast radius is low (aligns with existing convention in notion-mcp-remote). No decomposition needed — estimated ~3 min agent pass.Ticket is ready to move to next_up.