Skip to content

feat(infra): add ledger helm chart with lint and kubeconform ci - #147

Merged
tiana-code merged 1 commit into
mainfrom
feat/E-01-helm-chart
Jun 16, 2026
Merged

feat(infra): add ledger helm chart with lint and kubeconform ci#147
tiana-code merged 1 commit into
mainfrom
feat/E-01-helm-chart

Conversation

@tiana-code

Copy link
Copy Markdown
Owner

What

A Helm chart packaging the ledger service for Kubernetes, plus a working validation workflow, closing the Epic E-01 deployment-packaging criterion.

  • deploy/helm/ledger: Deployment, Service (ClusterIP), HorizontalPodAutoscaler (autoscaling/v2, min 1 / max 10 / CPU 70%), ConfigMap (non-secret env), ServiceAccount, plus _helpers.tpl and NOTES.txt.
  • Deployment wires liveness/readiness to the real actuator probe paths (/actuator/health/liveness, /readiness) on the 8080 http port, sets resource requests/limits (250m/512Mi .. 1000m/1Gi), and a hardened securityContext matching the distroless image (runAsNonRoot uid 65532, drop ALL caps, readOnlyRootFilesystem: true).
  • Read-only root + a /tmp emptyDir: Spring Boot's embedded Tomcat writes its work dir under java.io.tmpdir, so a read-only root without a writable /tmp would CrashLoopBackOff. The chart mounts an emptyDir at /tmp.
  • Secrets (datasource password, Keycloak client secret) are injected via secretKeyRef from an operator-provided existingSecret; the chart never contains secret values and the secret-env block is guarded so a bare render stays valid.

CI

Rewires .github/workflows/helm-test.yml: helm lint + helm template --set image.tag=test | kubeconform -strict -kubernetes-version 1.31.0 (pinned kubeconform v0.6.7). Drops the previous ct install on kind and the fincore-engine umbrella render: the image is never pushed to GHCR (forbidden), so a live kind install would ImagePullBackOff, and there is no umbrella chart. The issue ACs require lint + template + static validation, not a live install.

Notes

Infra/YAML only, no Kotlin. Probes default to the 8080 port, so the chart keeps SPRING_PROFILES_ACTIVE empty (the prod profile moves actuator to 9090); documented in values.yaml. Gate chain: analyst, architect, critic (GO-WITH-CHANGES, /tmp volume + replicas-omit + HPA-shape + kubeconform-version-pin folded).

Closes #68

Service chart deploy/helm/ledger with Deployment (liveness/readiness probes on
8080, distroless nonroot securityContext, read-only root fs with a /tmp
emptyDir, resource requests/limits), ClusterIP Service, autoscaling/v2 HPA
(min 1, max 10, cpu 70 percent), and a ConfigMap for non-secret config.
Secrets are referenced from an existing Kubernetes Secret via secretKeyRef,
never templated. Rewires the helm-test workflow to helm lint plus helm template
piped to a pinned kubeconform, dropping the kind install that cannot pull the
unpushed image.

Closes #68
@tiana-code
tiana-code merged commit 48fef7a into main Jun 16, 2026
9 checks passed
@tiana-code
tiana-code deleted the feat/E-01-helm-chart branch June 16, 2026 16:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Helm templates ledger-*

1 participant