Skip to content

chore(chart): align lobu chart to owletto fork (pre-consolidation, byte-identical)#882

Merged
buremba merged 2 commits into
mainfrom
chore/chart-align-v2
May 18, 2026
Merged

chore(chart): align lobu chart to owletto fork (pre-consolidation, byte-identical)#882
buremba merged 2 commits into
mainfrom
chore/chart-align-v2

Conversation

@buremba
Copy link
Copy Markdown
Member

@buremba buremba commented May 18, 2026

Summary

Step 1 of three consolidating the divergent helm charts. Replaces every overlapping file in charts/lobu/ with the corresponding file from packages/owletto/deploy/charts/lobu/ at owletto-main. The two charts have diverged since lobu's "public Helm chart" landed (#573) and prod's Flux still pulls the owletto fork — every chart change since has needed double-PRs.

Verified byte-identical render (modulo Chart.yaml version + appVersion, which release-please owns): helm template charts/lobu produces zero-line diffs against the owletto fork on both prod-like values and chart defaults. The follow-up Flux repoint (Step 2, owletto PR) will be a no-op render diff at the kube level.

No version bump. No behavior change. Chart.yaml version stays at 7.1.0 and appVersion at 7.1.0 (release-please-tracked; manifest matches). The actual template + values bytes match owletto/main's chart at 0.3.0.

Files dropped (orphaned by the alignment)

  • charts/lobu/templates/secret.yaml — referenced .Values.secrets.create and include "lobu.secretName", neither of which exist in the owletto-style values.yaml / _helpers.tpl. Without secrets.create, the chart-managed Secret feature was unreachable; production has always used an externally managed Secret via secretName.
  • charts/lobu/values.example.yaml — its walkthrough was for secrets.create, which no longer exists. README + landing docs updated to point at values.yaml + an operator-provided values file.

CI / docs / submodule

  • .github/workflows/helm-chart.yml: drops the Render install example step (no more example file to render).
  • packages/landing/src/content/docs/deployment/kubernetes.mdx: replaces the curl-the-example flow with an inline values.yaml stub, drops the Chart-managed secrets section, adds explicit migrations.enabled: true to the stub (so fresh installs don't boot app pods that skip migrations against an unmigrated DB), and tells users to always set app.env.PUBLIC_WEB_URL explicitly (see Deferred follow-ups below).
  • packages/owletto submodule: bumped from 780c96de1c04fa03 (current owletto/main). Clears the pre-existing submodule-drift CI failure.

Deferred follow-ups (after Step 3 lands)

The byte-alignment inherits three existing latent bugs from the owletto fork. None of them are introduced by this PR — they're already shipping in prod's chart source. Production is unaffected because the prod overlay overrides the relevant values. Self-hosters following the updated kubernetes.mdx set them explicitly. Fixing them in this PR would diverge from byte-identical and risk Step 2's no-op repoint claim.

  • chart: BASE_URLPUBLIC_WEB_URL. Server code (packages/server/src/auth/base-url.ts, utils/public-origin.ts) reads PUBLIC_WEB_URL; the chart's deployment template derives BASE_URL from ingress.hosts[0], which the server ignores. Prod overlay sets PUBLIC_WEB_URL explicitly. Self-hosters must override app.env.PUBLIC_WEB_URL until the follow-up lands.
  • chart: ingress.enabled default should be false. Current default renders an Ingress with empty rules: on fresh installs. Prod overlay sets hosts: so prod is fine. Self-hosters must either set ingress.hosts: or override ingress.enabled: false.
  • chart: secrets.create feature gone. No known OCI consumers (semver-aware clients stay on 7.x and never auto-upgrade into the renumbered chart territory; chart version stays at 7.1.0 here anyway).

What this PR explicitly does NOT do

  • Does NOT touch release-please-config.json. release-please still owns charts/lobu/Chart.yaml#version and $.appVersion.
  • Does NOT touch any prod overlay or Flux config. Step 2 (owletto PR) repoints Flux + adds app.allowMultiReplica: true to the prod overlay defensively.
  • Does NOT fix any of the deferred follow-ups above — those land in a single chart-cleanup PR after Step 3 deletes the fork, to keep the consolidation atomic.

Test plan

  • helm lint charts/lobu → 0 errors (1 INFO about icon)
  • helm template summaries-app charts/lobu -f <prod-like-values> vs same on the owletto fork: 0 line diff
  • helm template lobu charts/lobu (defaults) vs same on owletto fork: 0 line diff
  • make build-packages clean
  • make typecheck clean
  • submodule-drift CI: passing (was failing pre-PR)

Codex review verdict

Two passes: 58% → 45%. Both passes flag the deferred follow-ups above as merge blockers. Treated as policy disagreement, not new risk: every flagged behavior already exists in prod's chart source, production is unaffected, and fixing them in this PR would defeat the byte-alignment goal that makes Step 2's repoint safe. Merging on policy.

Summary by CodeRabbit

  • New Features

    • Ingress is now enabled by default with Traefik as the ingress class.
    • Database migrations can now be configured to run as a Helm pre-install/pre-upgrade Job.
  • Documentation

    • Updated Kubernetes deployment guide with required pre-setup steps for Secrets.
    • Enhanced post-deployment checklist and deployment instructions.
  • Chores

    • Simplified default chart configuration and removed chart-managed secrets.
    • Updated Helm chart metadata and removed example values file.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 18, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: dc3990d2-9a40-44ef-9637-28f77f41f81d

📥 Commits

Reviewing files that changed from the base of the PR and between 0cc2913 and cfdcb52.

📒 Files selected for processing (20)
  • .github/workflows/helm-chart.yml
  • README.md
  • charts/lobu/Chart.yaml
  • charts/lobu/templates/NOTES.txt
  • charts/lobu/templates/_helpers.tpl
  • charts/lobu/templates/app-pvc.yaml
  • charts/lobu/templates/deployment.yaml
  • charts/lobu/templates/embeddings-deployment.yaml
  • charts/lobu/templates/embeddings-pvc.yaml
  • charts/lobu/templates/embeddings-service.yaml
  • charts/lobu/templates/ingress.yaml
  • charts/lobu/templates/migration-job.yaml
  • charts/lobu/templates/secret.yaml
  • charts/lobu/templates/service.yaml
  • charts/lobu/templates/smoke-test-job.yaml
  • charts/lobu/templates/worker-deployment.yaml
  • charts/lobu/templates/worker-pvc.yaml
  • charts/lobu/values.example.yaml
  • charts/lobu/values.yaml
  • packages/landing/src/content/docs/deployment/kubernetes.mdx

📝 Walkthrough

Walkthrough

This PR refactors the Lobu Helm chart to shift secret management from chart-generated to externally-provided, consolidates helper templates, standardizes container ports and PVCs, and simplifies operational defaults. All deployments and jobs are updated to reference .Values.secretName directly. Chart documentation and landing docs guide users to supply pre-created secrets.

Changes

Helm Chart Configuration Refactor

Layer / File(s) Summary
Helper templates: selectors and image tag consolidation
charts/lobu/templates/_helpers.tpl
lobu.chart is reintroduced with updated comments; selector labels are reorganized into component-scoped helpers (lobu.appSelectorLabels, lobu.workerSelectorLabels, lobu.embeddingsSelectorLabels); image tag computation is inlined into image helpers, removing the lobu.imageTag helper.
Secret handling: external .Values.secretName adoption
charts/lobu/templates/secret.yaml, charts/lobu/templates/deployment.yaml, charts/lobu/templates/embeddings-deployment.yaml, charts/lobu/templates/migration-job.yaml, charts/lobu/templates/smoke-test-job.yaml, charts/lobu/templates/worker-deployment.yaml
Chart-managed Secret template is removed entirely; all Deployments and Jobs updated to use .Values.secretName directly via envFrom.secretRef.name, eliminating the lobu.secretName helper.
Container ports and probes: remove named ports, use numeric 8787
charts/lobu/templates/deployment.yaml, charts/lobu/templates/embeddings-deployment.yaml, charts/lobu/templates/service.yaml, charts/lobu/templates/embeddings-service.yaml
Named http port removed and replaced with numeric 8787 across app and embeddings Deployments; readiness and liveness probes updated to use numeric port values.
PVC standardization: accessModes and storageClassName
charts/lobu/templates/app-pvc.yaml, charts/lobu/templates/embeddings-pvc.yaml, charts/lobu/templates/worker-pvc.yaml
spec.accessModes hardcoded to ReadWriteOnce; storageClassName rendering updated to emit raw values without quoting.
Deployment strategy and lifecycle: simplify rollout and env
charts/lobu/templates/deployment.yaml
spec.strategy logic simplified to use .Values.app.strategy when set, otherwise emit Recreate only when workspaces enabled; BASE_URL derived from ingress.hosts; conditional lifecycle.preStop hook removed.
Jobs: migration DB wiring and smoke-test runtime validation
charts/lobu/templates/migration-job.yaml, charts/lobu/templates/smoke-test-job.yaml
Migration Job updated to support .Values.migrations.database.existingSecret with optional pooler path; smoke-test Job enforces runtime checks for SMOKE_TEST_TOKEN and DATABASE_URL presence and conditionally uses external secret; chart-derived inline environment setup removed.
Embeddings and worker: remove pod-level annotations and security context
charts/lobu/templates/embeddings-deployment.yaml, charts/lobu/templates/worker-deployment.yaml
Conditional podAnnotations and securityContext removed from container specs; explanatory comments added to worker init-container wait logic.
Service and ingress: labels and annotations
charts/lobu/templates/service.yaml, charts/lobu/templates/ingress.yaml
app.kubernetes.io/component labels removed from Service and migration Job; ingress annotations key unconditionally emitted with conditional content.
Values defaults: comprehensive rewrite
charts/lobu/values.yaml
image.pullPolicy forced to Always; imagePullSecrets set to default ghcr-credentials; app resource limits reduced; pod-level knobs removed from app/worker/embeddings defaults; workspaces defaults simplified; ingress enabled by default with Traefik class; database/migrations/release-gate defaults updated; readiness probe failureThreshold reduced to 3.
Chart metadata, NOTES, README, and docs
charts/lobu/Chart.yaml, charts/lobu/templates/NOTES.txt, README.md, packages/landing/src/content/docs/deployment/kubernetes.mdx, .github/workflows/helm-chart.yml, charts/lobu/values.example.yaml
Chart metadata (description, keywords, maintainer) updated; NOTES.txt rewritten with deployment checklist and conditional sections; README.md updated to reference user-provided values and required secrets; landing docs updated with migration Job configuration and pre-install secret creation instructions; values.example.yaml content removed; workflow step rendering example values removed; chart-managed secrets documentation section removed.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • lobu-ai/lobu#775: Overlaps in deployment preStop hook modifications and lifecycle configuration.
  • lobu-ai/lobu#776: Overlaps in deployment strategy selection and rollout behavior logic.
  • lobu-ai/lobu#878: Overlaps in smoke-test-job.yaml gate wiring and validation logic for releaseGates.smokeTest.workerSmoke.enabled.

Suggested labels

skip-size-check

Poem

🐰 The helm chart hops to a simpler place,
Named ports vanish without a trace,
Secrets now dwell where users keep them near,
Defaults align, and the path grows clear!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main objective: aligning the lobu chart to the owletto fork as a consolidation step while maintaining byte-identical rendering.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed The PR description is comprehensive, well-structured, and includes all required sections from the template with detailed context and justification.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/chart-align-v2

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov-commenter
Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@charts/lobu/templates/embeddings-service.yaml`:
- Line 12: Add the missing embeddings.service.port key to values.yaml so the
templates referencing .Values.embeddings.service.port (used in
embeddings-service.yaml and embeddings-deployment.yaml for containerPort, the
PORT env var, and readiness/liveness probe ports) have a numeric value; update
values.yaml to include an embeddings: section with service: port: 8080 (or the
actual service port your container listens on) to match the containerPort/PORT
used in the deployment.

In `@charts/lobu/templates/NOTES.txt`:
- Around line 4-5: The NOTES.txt uses .Values.ingress.host but the chart defines
.Values.ingress.hosts; update the template (inside the .Values.ingress.enabled
conditional) to reference the hosts array (e.g., use .Values.ingress.hosts[0] or
iterate over .Values.ingress.hosts and render each host) so the installed URL is
populated correctly; ensure you still guard with .Values.ingress.enabled and
handle the case when hosts is empty.

In `@charts/lobu/values.yaml`:
- Around line 11-13: The values.yaml currently sets tag: "latest" which,
combined with pullPolicy: Always, causes mutable image pulls; update the
values.yaml to remove the hardcoded "latest" and leave tag unset (or set it to
an empty string) so the chart can default to the chart appVersion; specifically
change the tag entry (symbol: tag) and ensure pullPolicy remains as-is (symbol:
pullPolicy) so image resolution uses the chart's appVersion rather than
"latest".
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f29622fe-ea28-425e-a35c-e7a7e58edb64

📥 Commits

Reviewing files that changed from the base of the PR and between ad75eb9 and 77c1318.

📒 Files selected for processing (19)
  • .github/workflows/helm-chart.yml
  • README.md
  • charts/lobu/Chart.yaml
  • charts/lobu/templates/NOTES.txt
  • charts/lobu/templates/_helpers.tpl
  • charts/lobu/templates/app-pvc.yaml
  • charts/lobu/templates/deployment.yaml
  • charts/lobu/templates/embeddings-deployment.yaml
  • charts/lobu/templates/embeddings-pvc.yaml
  • charts/lobu/templates/embeddings-service.yaml
  • charts/lobu/templates/ingress.yaml
  • charts/lobu/templates/migration-job.yaml
  • charts/lobu/templates/secret.yaml
  • charts/lobu/templates/service.yaml
  • charts/lobu/templates/smoke-test-job.yaml
  • charts/lobu/templates/worker-deployment.yaml
  • charts/lobu/templates/worker-pvc.yaml
  • charts/lobu/values.example.yaml
  • charts/lobu/values.yaml
💤 Files with no reviewable changes (3)
  • charts/lobu/values.example.yaml
  • charts/lobu/templates/secret.yaml
  • .github/workflows/helm-chart.yml

Comment thread charts/lobu/templates/embeddings-service.yaml
Comment on lines 4 to +5
{{- if .Values.ingress.enabled }}
Application URL:
{{- range .Values.ingress.hosts }}
https://{{ . }}
{{- end }}
https://{{ .Values.ingress.host }}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use the same ingress key as the chart templates for NOTES URL.

Line 5 references .Values.ingress.host, but the chart changes use .Values.ingress.hosts; this can render an empty/incorrect install URL.

Suggested fix
 {{- if .Values.ingress.enabled }}
-   https://{{ .Values.ingress.host }}
+   https://{{ first .Values.ingress.hosts }}
 {{- else }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{{- if .Values.ingress.enabled }}
Application URL:
{{- range .Values.ingress.hosts }}
https://{{ . }}
{{- end }}
https://{{ .Values.ingress.host }}
{{- if .Values.ingress.enabled }}
https://{{ first .Values.ingress.hosts }}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/lobu/templates/NOTES.txt` around lines 4 - 5, The NOTES.txt uses
.Values.ingress.host but the chart defines .Values.ingress.hosts; update the
template (inside the .Values.ingress.enabled conditional) to reference the hosts
array (e.g., use .Values.ingress.hosts[0] or iterate over .Values.ingress.hosts
and render each host) so the installed URL is populated correctly; ensure you
still guard with .Values.ingress.enabled and handle the case when hosts is
empty.

Comment thread charts/lobu/values.yaml
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/owletto`:
- Line 1: The submodule pointer for packages/owletto must be updated to a commit
that is reachable from owletto/main; go into the submodule (packages/owletto),
fetch origin, find and checkout a commit that is on origin/main (a commit
reachable from owletto/main), then stage the updated gitlink in the superproject
and commit the change. Concretely: run git fetch origin in packages/owletto,
identify a commit on owletto/main (or checkout origin/main), update the
submodule HEAD to that reachable commit, return to the superrepo, git add
packages/owletto and commit the new submodule pointer so CI’s merge-base check
passes.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ccef3bbf-f8af-4398-822c-d2b95487eec6

📥 Commits

Reviewing files that changed from the base of the PR and between 77c1318 and a61f4d2.

📒 Files selected for processing (1)
  • packages/owletto

Comment thread packages/owletto Outdated
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/landing/src/content/docs/deployment/kubernetes.mdx`:
- Around line 60-69: Remove the duplicated "Create the referenced secrets before
installing" kubectl commands block that re-declares the same secrets already
created earlier; delete the repeated commands that create secrets named
"lobu-db" and "lobu-secrets" (the --from-literal lines for uri, JWT_SECRET,
BETTER_AUTH_SECRET, ANTHROPIC_API_KEY) so only the original "Create secrets"
section remains and keep the following note about setting app.env.PUBLIC_WEB_URL
if needed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ed94b579-9194-41f8-ae89-d3ae45bc68e0

📥 Commits

Reviewing files that changed from the base of the PR and between a61f4d2 and ef0d79f.

📒 Files selected for processing (1)
  • packages/landing/src/content/docs/deployment/kubernetes.mdx

Comment on lines +60 to +69
Create the referenced secrets before installing:

```bash
kubectl -n lobu create secret generic lobu-db \
--from-literal=uri='postgresql://USER:PASSWORD@HOST:5432/lobu?sslmode=require'
kubectl -n lobu create secret generic lobu-secrets \
--from-literal=JWT_SECRET='replace-with-a-long-random-value' \
--from-literal=BETTER_AUTH_SECRET='replace-with-a-long-random-value' \
--from-literal=ANTHROPIC_API_KEY='sk-ant-...'
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Remove duplicate secret creation commands.

These kubectl commands are identical to lines 25-31 in the "Create secrets" section above. Users have already been instructed to create these secrets earlier in the guide, making this duplication confusing and unnecessary.

📝 Proposed fix to remove duplication
-Create the referenced secrets before installing:
-
-```bash
-kubectl -n lobu create secret generic lobu-db \
-  --from-literal=uri='postgresql://USER:PASSWORD@HOST:5432/lobu?sslmode=require'
-kubectl -n lobu create secret generic lobu-secrets \
-  --from-literal=JWT_SECRET='replace-with-a-long-random-value' \
-  --from-literal=BETTER_AUTH_SECRET='replace-with-a-long-random-value' \
-  --from-literal=ANTHROPIC_API_KEY='sk-ant-...'
-```
-
 If your public URL differs from the first ingress host, also set `app.env.PUBLIC_WEB_URL` explicitly.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Create the referenced secrets before installing:
```bash
kubectl -n lobu create secret generic lobu-db \
--from-literal=uri='postgresql://USER:PASSWORD@HOST:5432/lobu?sslmode=require'
kubectl -n lobu create secret generic lobu-secrets \
--from-literal=JWT_SECRET='replace-with-a-long-random-value' \
--from-literal=BETTER_AUTH_SECRET='replace-with-a-long-random-value' \
--from-literal=ANTHROPIC_API_KEY='sk-ant-...'
```
If your public URL differs from the first ingress host, also set `app.env.PUBLIC_WEB_URL` explicitly.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/landing/src/content/docs/deployment/kubernetes.mdx` around lines 60
- 69, Remove the duplicated "Create the referenced secrets before installing"
kubectl commands block that re-declares the same secrets already created
earlier; delete the repeated commands that create secrets named "lobu-db" and
"lobu-secrets" (the --from-literal lines for uri, JWT_SECRET,
BETTER_AUTH_SECRET, ANTHROPIC_API_KEY) so only the original "Create secrets"
section remains and keep the following note about setting app.env.PUBLIC_WEB_URL
if needed.

@buremba buremba force-pushed the chore/chart-align-v2 branch from ef0d79f to 0cc2913 Compare May 18, 2026 16:28
buremba added 2 commits May 18, 2026 17:49
…te-identical)

Replace charts/lobu/* with the contents of packages/owletto/deploy/charts/lobu/
at owletto-main (chart version 0.3.0, last bumped by owletto#179 = lobu#878's
worker-smoke gate). The two charts have diverged since lobu's "public Helm
chart" landed (#573), and prod's Flux still pulls the owletto fork — every
chart change since has needed double-PRs to keep the two in sync.

This commit makes `helm template charts/lobu` produce byte-identical output to
the owletto fork given any values, so the follow-up Flux repoint is a no-op
render diff. The repoint itself happens in a separate owletto PR; deletion of
the owletto fork happens in a third PR after prod verifies the new source.

No version bump. No behavior change. The chart stays at 0.3.0.

Files dropped (orphaned by the alignment):
  - charts/lobu/templates/secret.yaml — referenced `.Values.secrets.create`
    and `include "lobu.secretName"`, neither of which exist in the
    owletto-style values.yaml / _helpers.tpl. Without `secrets.create`, the
    chart-managed Secret feature was unreachable; production has always
    used an externally managed Secret via `secretName`.
  - charts/lobu/values.example.yaml — its walkthrough was for `secrets.create`,
    which no longer exists. README updated to point at values.yaml + an
    operator-provided values file instead.

CI:
  - .github/workflows/helm-chart.yml: drop the `Render install example` step
    that fed values.example.yaml.

Verified:
  - `helm lint charts/lobu` → 0 errors
  - `helm template ... charts/lobu -f <prod-like-values>` vs same on the
    owletto fork: 0 line diff
  - `helm template lobu charts/lobu` (defaults): 0 line diff
  - `make build-packages` + `make typecheck`: clean
After lobu#882's chart alignment to the owletto fork, the docs were
pointing at:
  - charts/lobu/values.example.yaml (file deleted)
  - secrets.create / secrets.stringData (feature removed with the
    secret.yaml template)

Replace the curl-the-example flow with an inline values.yaml stub and
explicit kubectl-create-secret commands matching the new owletto-style
chart values shape. Drop the Chart-managed-secrets section since the
feature no longer exists.
@buremba buremba force-pushed the chore/chart-align-v2 branch from 0cc2913 to cfdcb52 Compare May 18, 2026 16:49
@buremba buremba merged commit 4686714 into main May 18, 2026
21 of 22 checks passed
@buremba buremba deleted the chore/chart-align-v2 branch May 18, 2026 16:51
buremba added a commit that referenced this pull request May 18, 2026
… block (#890)

Two CodeRabbit follow-ups from PR #882:

1. charts/lobu/templates/NOTES.txt referenced .Values.ingress.host
   (singular), but the chart's values schema uses .Values.ingress.hosts
   (array). Fresh installs rendered the install URL as
   `https://` with an empty host. Now reads from
   `index .Values.ingress.hosts 0` when both ingress.enabled and at
   least one host are set, falls through to the port-forward hint
   otherwise.

2. packages/landing/.../kubernetes.mdx had the same
   `kubectl create secret` block twice — once under "Create secrets"
   and again later under "Install". The second copy is removed and
   replaced with a back-reference to the earlier section, so users
   aren't told to do the same thing twice.

Verified by `helm install --dry-run --debug --generate-name` on both
ingress.enabled=true (renders https://app.example.com) and
ingress.enabled=false (renders port-forward).
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