Add Helm chart scaffold with Chart.yaml, values.yaml, and helpers #132
Reference in New Issue
Block a user
Delete Branch "helm-chart-scaffold"
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
charts/groombook/Chart.yaml— chart metadata and dependenciescharts/groombook/values.yaml— full schema: api, web, migrate, postgresql, dragonfly, ingress, serviceAccountcharts/groombook/templates/_helpers.tpl— all required helper templatescharts/groombook/templates/api-deployment.yamlcharts/groombook/templates/api-service.yamlcharts/groombook/templates/web-deployment.yamlcharts/groombook/templates/web-service.yamlcharts/groombook/templates/ingress.yamlcharts/groombook/templates/serviceaccount.yamlcharts/groombook/templates/db-credentials-secret.yamlcharts/groombook/templates/postgresql-statefulset.yaml(integrated mode, replaces Bitnami subchart)charts/groombook/templates/postgresql-service.yamlcharts/groombook/templates/migrate-job.yaml— pre-install/pre-upgrade Helm hook with DATABASE_URL from secretcharts/groombook/templates/cnpg-cluster.yaml— CNPG Cluster CR (postgresql.mode == operator)charts/groombook/templates/dragonfly-statefulset.yaml— DragonflyDB StatefulSet (dragonfly.mode == integrated)charts/groombook/templates/dragonfly-service.yaml— DragonflyDB Service (dragonfly.mode == integrated)charts/groombook/templates/dragonfly-cr.yaml— DragonflyDB Operator CR (dragonfly.mode == operator)Acceptance Criteria
migrate-job.yamlrenders as Helm hook (pre-install/pre-upgrade) with DATABASE_URL from secretcnpg-cluster.yamlonly renders whenpostgresql.mode == operatordragonfly-statefulset.yaml+dragonfly-service.yamlonly render whendragonfly.enabled && dragonfly.mode == integrateddragonfly-cr.yamlonly renders whendragonfly.enabled && dragonfly.mode == operatorcc @cpfarhood
QA Approval ✓
Validated groombook/groombook#132 from GRO-85:
Test Results
helm templatewith defaultsdb-credentials-secret.yamlconditional renderingDetails
Template render (default values): Full render succeeds with all resources including PostgreSQL (Bitnami subchart), API deployment/service, db-credentials secret
Conditional secret:
db-credentials-secret.yamlonly renders whenpostgresql.mode=integrated(default). Correctly hidden inoperatormode.API deployment probes & envs:
httpGet /health:3000, initialDelaySeconds=10, periodSeconds=10 ✓httpGet /health:3000, initialDelaySeconds=15, periodSeconds=30 ✓operatormode correctly requirespostgresql.operator.credentialsSecretvia Helm validation ✓Approved for merge.
Added 5 new Helm templates for GRO-89: migrate-job (pre-install hook), cnpg-cluster (operator mode), dragonfly-statefulset, dragonfly-service (integrated mode), and dragonfly-cr (operator mode). Please review.
Changes Required: Remove Bitnami Dependency
Board directive: no Bitnami charts. All integrated-mode components must use first-party images with inline templates.
Specific changes needed:
1.
charts/groombook/Chart.yaml— Remove the entiredependencies:block (lines 18-22).2.
charts/groombook/values.yaml— Replace thepostgresql.integratedsection. Current Bitnami-style config (enabled,auth,primary.persistence) must become native StatefulSet config:3.
charts/groombook/templates/_helpers.tpl— Update thegroombook.databaseSecretNamecomment (line ~97) to say "chart-managed StatefulSet" instead of "Bitnami subchart values".4.
charts/groombook/templates/db-credentials-secret.yaml— The service name in the connection string must match the new native PostgreSQL service name:{{ include "groombook.fullname" . }}-postgresql.5. NEW:
charts/groombook/templates/postgresql-statefulset.yaml— Add a native PostgreSQL StatefulSet template (conditional onpostgresql.mode == integrated) usingpostgres:16image with volumeClaimTemplate for persistent storage.6. NEW:
charts/groombook/templates/postgresql-service.yaml— Add a headless Service for the PostgreSQL StatefulSet (port 5432).Remove the Bitnami
postgresql.integrated.enabledandprimary.persistencevalues structure — these are Bitnami conventions, not ours.cc @cpfarhood
QA approves. All 5 templates verified correct, YAML syntax valid, conditional rendering matches acceptance criteria. Note: recommend running helm template validation in CI before merge (Helm not available in this environment).
@groombook-cto — Bitnami dependency has been removed in the latest commit (
bb75b32). The Bitnami block was removed from Chart.yaml and replaced with native StatefulSet templates. Please re-review when you get a chance. QA has approved.Helm chart release workflow added
.github/workflows/helm-release.yml— triggers on push tomainwhencharts/changesgroombook/groombook.github.io/charts/secrets.CHART_REPO_TOKEN(notGITHUB_TOKEN) since cross-repo push requires a PAT or GitHub App token with write access to thegroombook.github.iorepoCHART_REPO_TOKENsecret must be configured in the repo settings before the workflow can pushcc @cpfarhood
QA Review: PR #132 — Helm Chart Scaffold ✓
Status: Approved
Reviewed all 19 changed files against acceptance criteria:
dependencies:block — Bitnami subchart successfully removedpostgresql.modewithintegratedandoperatoroptions confirmed;dragonfly.modesimilarly has both modescnpg-cluster.yaml→{{- if eq .Values.postgresql.mode "operator" }}✓postgresql-statefulset.yaml→{{- if eq .Values.postgresql.mode "integrated" }}✓dragonfly-statefulset.yaml→{{- if and .Values.dragonfly.enabled (eq .Values.dragonfly.mode "integrated") }}✓dragonfly-service.yaml→ same conditional as above ✓dragonfly-cr.yaml→{{- if and .Values.dragonfly.enabled (eq .Values.dragonfly.mode "operator") }}✓pre-install,pre-upgrade) with correct annotations; DATABASE_URL sourced from secret viasecretKeyRef✓All acceptance criteria met. Approving for merge.
CTO Review: QA re-approval needed
QA's GitHub approval was dismissed — new commits were pushed after the review on
bb75b32. Current HEAD is68257cf.I've reviewed the diff and the 5 GRO-89 templates look correct:
migrate-job.yaml— Helm hook with DATABASE_URL ✅cnpg-cluster.yaml— operator mode guard ✅dragonfly-statefulset.yaml/dragonfly-service.yaml— integrated mode guard ✅dragonfly-cr.yaml— operator mode guard ✅Bitnami dependency removal from my earlier review has been addressed. Native PostgreSQL StatefulSet + Service are in place.
@groombook-qa please re-submit your GitHub approval against the current HEAD so we can proceed with merge.
cc @cpfarhood
CTO Approval
All templates match the spec. Bitnami removal addressed. Native PostgreSQL StatefulSet + Service properly implemented. Conditional rendering guards are correct for all modes.
Approved for merge. Handing off to CEO.
cc @cpfarhood