Skip to content

feat: initial release of jovvix Helm chart - #151

Open
drashti-itpl wants to merge 7 commits into
mainfrom
feat/jovvix-chart
Open

feat: initial release of jovvix Helm chart#151
drashti-itpl wants to merge 7 commits into
mainfrom
feat/jovvix-chart

Conversation

@drashti-itpl

Copy link
Copy Markdown

jovvix-chart

  • Add chart with API, UI, Kratos auth, PostgreSQL and Valkey sub-charts
  • Configure HTTPRoute for Envoy Gateway with override support
  • Implement required-secret pattern (no secrets in values.yaml)
  • Add database migration as a plain Job with retry loop
  • Support external PostgreSQL and Redis/Valkey via --set overrides
  • Add wait-for-db and wait-for-redis initContainers
  • Add detailed inline documentation in values.yaml

Fixes Issue

Changes proposed

Check List (Check all the applicable boxes)

  • My code follows the code style of this project.
  • My change requires changes to the documentation.
  • I have updated the documentation accordingly.
  • All new and existing tests passed.
  • This PR does not contain plagiarized content.
  • The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers

- Add chart with API, UI, Kratos auth, PostgreSQL and Valkey sub-charts
- Configure HTTPRoute for Envoy Gateway with override support
- Implement required-secret pattern (no secrets in values.yaml)
- Add database migration as a plain Job with retry loop
- Support external PostgreSQL and Redis/Valkey via --set overrides
- Add wait-for-db and wait-for-redis initContainers
- Add detailed inline documentation in values.yaml
@HussainTechSavvy

Copy link
Copy Markdown
Contributor

Preparing review...

@HussainTechSavvy HussainTechSavvy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Summary

Verdict: Changes Requested — 2 issues, 5 suggestions

Critical

  • ci-values.yaml:14secretsCipher is 30 characters but Kratos requires exactly 32. Will cause CI to fail.
  • kratos-secret.yaml:11 — DSN uses .Values.database.username but DB secret uses .Values.postgres.secret.username. Mismatch if only one is set.

Warnings

  • values.yaml:534kratos.development: true leaks sensitive values in logs. Should default to false.
  • values.yaml:393 — Hardcoded dev SHA image tags. Consider semver release tags for a publishable chart.
  • kratos-httproute.yaml:24 — Port 80 hardcoded for Kratos backends instead of referencing values.

Suggestions

  • ingress.yaml — Unused jovvix.ingress.backend helper in _helpers.tpl. Use it or remove it.
  • migration-job.yaml — Missing resources on wait-for-db initContainer.
  • postgres-statefulset.yaml:66terminationGracePeriodSeconds: 30 may be too low for PostgreSQL.
  • Consider squashing the 6 commits before merge.

enabled: false
secrets:
secretsDefault: ci-kratos-default-secret-0123456789
secretsCookie: ci-kratos-cookie-secret-0123456789

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Critical: secretsCipher: ci-kratos-cipher-secret-01234567 is 30 characters. Kratos requires exactly 32. This will fail at install time.

Fix: secretsCipher: ci-kratos-cipher-secret-0123456789

{{- include "jovvix.labels" . | nindent 4 }}
type: Opaque
stringData:
dsn: {{ printf "postgres://%s:%s@%s:%d/%s?sslmode=%s&search_path=kratos" .Values.database.username (include "jovvix.dbPassword" .) (include "jovvix.databaseHost" .) (.Values.database.port | int) .Values.database.name .Values.database.sslMode | quote }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Critical: DSN uses {{ .Values.database.username }} but the DB secret at db-secret.yaml uses {{ .Values.postgres.secret.username }}. If a user sets postgres.secret.username without also setting database.username, the DSN will have wrong credentials.

Fix: Use the same source for both, or document the coupling.

appEnv: local
host: 0.0.0.0
mode: development
port: "4000"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Warning: kratos.development: true enables leak_sensitive_values in logs and development mode. Should default to false for production.

"additionalProperties": false
}
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Warning: Hardcoded dev SHA tag (main-77988f8-1785401490). For a publishable chart, consider using release semver tags or leaving tag: "" to fall back to appVersion.

port: 80
weight: 1
- matches:
- path:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Warning: Port 80 is hardcoded. If the Kratos sub-chart is configured with a different port, this breaks silently. Consider referencing a value or the sub-chart service port.

The db-<fullname> Secret carried a  key sourced from
, but no template ever read it — all
DB-username consumers use  directly. Remove the
dead key and the now-unused  value to
eliminate the config/runtime mismatch.
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.

2 participants