From 470c04e20c9137c38717e332062fe70fe374885a Mon Sep 17 00:00:00 2001 From: Adam Anthony Date: Sun, 19 Apr 2026 23:49:28 -0400 Subject: [PATCH 1/4] docs: add Tier 5 config screen and logo URL design specs --- .../2026-04-19-tier5-config-screen-design.md | 172 ++++++++++++++++++ .../specs/2026-04-19-tier5-logo-url-design.md | 163 +++++++++++++++++ 2 files changed, 335 insertions(+) create mode 100644 docs/superpowers/specs/2026-04-19-tier5-config-screen-design.md create mode 100644 docs/superpowers/specs/2026-04-19-tier5-logo-url-design.md diff --git a/docs/superpowers/specs/2026-04-19-tier5-config-screen-design.md b/docs/superpowers/specs/2026-04-19-tier5-config-screen-design.md new file mode 100644 index 0000000..9d58f88 --- /dev/null +++ b/docs/superpowers/specs/2026-04-19-tier5-config-screen-design.md @@ -0,0 +1,172 @@ +# Tier 5: Config Screen Design + +**Date:** 2026-04-19 +**Branch:** demo/tier5 +**Status:** Ready for implementation + +--- + +## Goal + +Satisfy Tier 5 rubric items 5.0–5.4 by expanding the KOTS config screen with: +- External DB toggle with conditional connection fields (5.0) +- Generated DB password that survives upgrade (5.2) +- Site logo URL as a second configurable feature (5.1, handled in separate spec) +- Regex validation already done on `site_color` (5.3 ✓) +- Help text on all items (5.4 — extend to all new fields) + +--- + +## Current State + +`kots-config.yaml` has two groups: +- `gameshelf`: `admin_secret`, `site_name` +- `branding` (license-gated): `site_color` (has regex validation + help_text) + +`values.yaml` has `postgresql.enabled: true` and an `externalDatabase` block, but these are not surfaced in the KOTS config screen — the customer can't toggle between embedded/external from the installer UI. + +The embedded DB password is hardcoded as `"gameshelf"` in `values.yaml`. No generated password exists. + +--- + +## Design + +### 5.0 — External Database Toggle + +Add a new `database` config group. A `db_type` dropdown controls whether the embedded or external path is used. + +**Config items:** + +```yaml +- name: db_type + title: Database + type: select_one + default: embedded + items: + - name: embedded + title: Embedded (recommended) + - name: external + title: External PostgreSQL + help_text: "Choose Embedded to use the built-in PostgreSQL instance, or External to connect to your own PostgreSQL server." + +- name: db_host + title: Database Host + type: text + when: '{{repl ConfigOptionEquals "db_type" "external"}}' + required: true + help_text: "Hostname or IP address of your PostgreSQL server." + +- name: db_port + title: Database Port + type: text + default: "5432" + when: '{{repl ConfigOptionEquals "db_type" "external"}}' + help_text: "Port your PostgreSQL server listens on. Default is 5432." + validation: + regex: + pattern: '^\d+$' + message: "Must be a numeric port number." + +- name: db_name + title: Database Name + type: text + default: "gameshelf" + when: '{{repl ConfigOptionEquals "db_type" "external"}}' + help_text: "Name of the PostgreSQL database to connect to." + +- name: db_user + title: Database Username + type: text + default: "gameshelf" + when: '{{repl ConfigOptionEquals "db_type" "external"}}' + help_text: "Username for authenticating with the PostgreSQL database." + +- name: db_password + title: Database Password + type: password + when: '{{repl ConfigOptionEquals "db_type" "external"}}' + required: true + help_text: "Password for authenticating with the PostgreSQL database." +``` + +**Helm wiring in `helmchart.yaml`:** + +```yaml +postgresql: + enabled: 'repl{{ConfigOptionEquals "db_type" "embedded"}}' +externalDatabase: + host: 'repl{{ConfigOption "db_host"}}' + port: 'repl{{ConfigOption "db_port" | ParseInt}}' + database: 'repl{{ConfigOption "db_name"}}' + username: 'repl{{ConfigOption "db_user"}}' + password: 'repl{{ConfigOption "db_password"}}' +``` + +--- + +### 5.2 — Generated Database Password + +The embedded DB password must be generated on first install and reused on upgrade. KOTS provides `RandomString` for this — it generates a value once and persists it across upgrades. + +Add a hidden config item for the embedded DB password: + +```yaml +- name: db_password_generated + title: Embedded Database Password + type: password + hidden: true + default: '{{repl RandomString 32}}' + help_text: "Auto-generated password for the embedded PostgreSQL instance. Generated once at install and preserved across upgrades." +``` + +Wire into `helmchart.yaml`: + +```yaml +postgresql: + auth: + password: 'repl{{ConfigOption "db_password_generated"}}' +``` + +`RandomString` generates the value once on first install and KOTS persists it. On upgrade, `ConfigOption "db_password_generated"` returns the same stored value — the DB password never changes. + +**Note:** Also need to wire this into the `_helpers.tpl` `databaseUrl` helper so the embedded path uses the generated password rather than `values.yaml`'s hardcoded `"gameshelf"`. The helper currently reads `.Values.postgresql.auth.password` — since `helmchart.yaml` overrides that value, it will flow through correctly. + +--- + +### 5.4 — Help Text + +Every config item must have `help_text`. The new items all include it (see above). Existing items: +- `admin_secret` ✓ already has help_text +- `site_name` ✓ already has help_text +- `site_color` ✓ already has help_text + +--- + +## File Changes + +| File | Change | +|------|--------| +| `kots-config.yaml` | Add `database` group with `db_type`, `db_host`, `db_port`, `db_name`, `db_user`, `db_password`, `db_password_generated` | +| `helmchart.yaml` | Wire `postgresql.enabled`, `postgresql.auth.password`, and all `externalDatabase.*` fields from config | + +No Helm chart template changes required — `_helpers.tpl` already switches between embedded/external based on `postgresql.enabled` and the `externalDatabase.*` values. + +--- + +## Demo Flow (5.0) + +1. Install with `db_type = embedded` → show `gameshelf-postgresql-0` pod Running +2. Install with `db_type = external` → show no postgresql pod, app connects to external instance + +## Demo Flow (5.2) + +1. Install → note the generated password is stored (hidden field) +2. Upgrade to next release → app still connects, no reconfiguration needed + +--- + +## What Is Not Changed + +- `chart/gameshelf/templates/_helpers.tpl` — already handles embedded/external switch correctly +- `chart/gameshelf/templates/secret.yaml` — already uses the helper +- Redis — not part of this tier; remains embedded-only diff --git a/docs/superpowers/specs/2026-04-19-tier5-logo-url-design.md b/docs/superpowers/specs/2026-04-19-tier5-logo-url-design.md new file mode 100644 index 0000000..f5eb024 --- /dev/null +++ b/docs/superpowers/specs/2026-04-19-tier5-logo-url-design.md @@ -0,0 +1,163 @@ +# Tier 5: Site Logo URL Feature Design + +**Date:** 2026-04-19 +**Branch:** demo/tier5 +**Status:** Ready for implementation + +--- + +## Goal + +Add a `SITE_LOGO_URL` environment variable that allows a logo to be set via URL rather than file upload. This satisfies Tier 5 item 5.1 (second configurable app feature wired through config screen) alongside the existing `site_color` feature. + +The URL approach is simpler than file upload for the config screen path — no binary storage, no upload endpoint, just a string passed as an env var. + +--- + +## Current State + +The app already has a full file-upload logo path: +- `POST /admin/logo` stores binary in `sites.logo_data` (BYTEA) +- `GET /logo` serves it from the DB +- `base.html` renders `` when `HasLogo` is true +- The `sites` table already has a `logo_url` TEXT column (from `001_schema.sql`) — unused + +The file upload path is gated behind `CustomBrandingEnabled`. This spec adds a parallel URL path, also gated behind the same entitlement. + +--- + +## Design + +### Priority: URL over uploaded file + +When `SITE_LOGO_URL` is set, use it. When the URL is empty, fall back to the uploaded binary logo (existing behavior). This means: + +- `LogoURL` field added to `PageData` +- Template uses `LogoURL` if set, falls back to `/logo` endpoint if `HasLogo` is true +- No existing behavior changes + +### Data flow + +``` +SITE_LOGO_URL env var + → config.Config.SiteLogoURL + → pageBase() → PageData.LogoURL + → base.html: +``` + +The existing `logo_url` DB column is NOT used for this feature — the URL comes from the env var, set at install time via the config screen. This keeps it simple and consistent with how `SITE_NAME` and `SITE_COLOR` work. + +--- + +## Changes + +### 1. `internal/config/config.go` + +Add `SiteLogoURL string` to Config struct. Read `SITE_LOGO_URL` env var with empty string default. + +### 2. `internal/api/handlers.go` + +Add `LogoURL string` to PageData struct. + +In `pageBase()`, set `data.LogoURL`: +- If DB site exists and `site.LogoURL` is non-empty: use it +- Else if `s.cfg.SiteLogoURL` is non-empty: use it +- Else: leave empty (HasLogo path handles binary upload) + +### 3. `templates/base.html` + +Replace: +```html +{{ if .HasLogo }}{{ .SiteName }}{{ end }} +``` + +With: +```html +{{ if .LogoURL }}{{ .SiteName }} +{{ else if .HasLogo }}{{ .SiteName }}{{ end }} +``` + +### 4. `kots-config.yaml` + +Add `site_logo_url` to the `branding` group (already license-gated): + +```yaml +- name: site_logo_url + title: Logo URL + type: text + default: "" + help_text: "URL of your organization's logo image (PNG, SVG, or JPEG). Must be publicly accessible. Leave blank to upload a logo via the admin panel instead." + validation: + regex: + pattern: '^(https?://.*|)$' + message: "Must be a valid URL starting with http:// or https://, or leave blank." +``` + +### 5. `helmchart.yaml` + +Add to the `values` section: + +```yaml +siteLogoUrl: 'repl{{ConfigOption "site_logo_url"}}' +``` + +### 6. `chart/gameshelf/values.yaml` + +Add to the top-level values: + +```yaml +siteLogoUrl: "" +``` + +### 7. `chart/gameshelf/templates/deployment.yaml` + +Add env var to the container spec: + +```yaml +- name: SITE_LOGO_URL + valueFrom: + configMapKeyRef: + name: {{ include "gameshelf.fullname" . }} + key: site-logo-url +``` + +### 8. `chart/gameshelf/templates/configmap.yaml` + +Add: + +```yaml +site-logo-url: {{ .Values.siteLogoUrl | quote }} +``` + +--- + +## File Changes Summary + +| File | Change | +|------|--------| +| `internal/config/config.go` | Add `SiteLogoURL` field, read `SITE_LOGO_URL` env var | +| `internal/api/handlers.go` | Add `LogoURL` to PageData, populate in pageBase() | +| `templates/base.html` | Render URL logo with fallback to binary logo | +| `kots-config.yaml` | Add `site_logo_url` item to branding group | +| `helmchart.yaml` | Wire `siteLogoUrl` from config | +| `chart/gameshelf/values.yaml` | Add `siteLogoUrl: ""` default | +| `chart/gameshelf/templates/configmap.yaml` | Add `site-logo-url` key | +| `chart/gameshelf/templates/deployment.yaml` | Add `SITE_LOGO_URL` env var | + +--- + +## What Is Not Changed + +- File upload path (`POST /admin/logo`, `GET /logo`) — unchanged, still works +- `sites.logo_url` DB column — not used by this feature; URL comes from env var only +- `internal/db/queries.go` — no changes needed +- `internal/api/admin.go` — no changes needed + +--- + +## Demo Flow (5.1) + +1. Install with `site_logo_url` = a publicly accessible image URL +2. Show logo appearing in the app header +3. Go to config, clear the URL, apply +4. Show logo gone from the header From 5d383f12725b316c9505e29d39517446b02174a9 Mon Sep 17 00:00:00 2001 From: Adam Anthony Date: Tue, 21 Apr 2026 19:59:48 -0400 Subject: [PATCH 2/4] docs: add Tier 5 config screen implementation plan Co-Authored-By: Claude Sonnet 4.6 --- .../plans/2026-04-20-tier5-config-screen.md | 315 ++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 docs/superpowers/plans/2026-04-20-tier5-config-screen.md diff --git a/docs/superpowers/plans/2026-04-20-tier5-config-screen.md b/docs/superpowers/plans/2026-04-20-tier5-config-screen.md new file mode 100644 index 0000000..78573ad --- /dev/null +++ b/docs/superpowers/plans/2026-04-20-tier5-config-screen.md @@ -0,0 +1,315 @@ +# Tier 5 Config Screen Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Add an external database toggle with conditional fields and a generated embedded DB password to the KOTS/EC3 config screen, satisfying Tier 5 rubric items 5.0 and 5.2. + +**Architecture:** Two files change. `kots-config.yaml` gains a `database` group with a `db_type` dropdown (embedded/external), conditional external connection fields, and a hidden `db_password_generated` item that uses `RandomString 32` to produce a stable password on first install. `helmchart.yaml` wires all new config values to the chart — `postgresql.enabled`, `postgresql.auth.password`, and the full `externalDatabase.*` block. + +**Tech Stack:** KOTS Config custom resource (kots.io/v1beta1), KOTS HelmChart custom resource (kots.io/v1beta2), Helm chart `_helpers.tpl` (already handles embedded/external switch — no changes needed) + +--- + +## File Map + +| File | Change | +|------|--------| +| `kots-config.yaml` | Add `database` group with 7 new items | +| `helmchart.yaml` | Add `postgresql.enabled`, `postgresql.auth.password`, and `externalDatabase.*` overrides | + +--- + +## Task 1: Add the database config group to kots-config.yaml + +**Files:** +- Modify: `kots-config.yaml` + +- [ ] **Step 1: Verify current file contents** + +```bash +cat kots-config.yaml +``` + +Expected: 33 lines, two groups (`gameshelf` and `branding`), no `database` group. + +- [ ] **Step 2: Add the database group** + +In `kots-config.yaml`, add a new group after the closing of the `gameshelf` group (after line 19, before the `branding` group). The full file should look like this: + +```yaml +apiVersion: kots.io/v1beta1 +kind: Config +metadata: + name: gameshelf +spec: + groups: + - name: gameshelf + title: GameShelf + items: + - name: admin_secret + title: Admin Password + type: password + required: true + help_text: "Password for the GameShelf admin panel." + - name: site_name + title: Site Name + type: text + default: "GameShelf" + help_text: "The name displayed in the browser title and header." + - name: database + title: Database + items: + - name: db_type + title: Database + type: select_one + default: embedded + help_text: "Choose Embedded to use the built-in PostgreSQL instance, or External to connect to your own PostgreSQL server." + items: + - name: embedded + title: Embedded (recommended) + - name: external + title: External PostgreSQL + - name: db_password_generated + title: Embedded Database Password + type: password + hidden: true + default: '{{repl RandomString 32}}' + help_text: "Auto-generated password for the embedded PostgreSQL instance. Generated once at install and preserved across upgrades." + - name: db_host + title: Database Host + type: text + when: '{{repl ConfigOption "db_type" | eq "external"}}' + required: true + help_text: "Hostname or IP address of your PostgreSQL server (e.g. db.example.com)." + - name: db_port + title: Database Port + type: text + default: "5432" + when: '{{repl ConfigOption "db_type" | eq "external"}}' + help_text: "Port your PostgreSQL server listens on. Default is 5432." + validation: + regex: + pattern: '^\d+$' + message: "Must be a numeric port number." + - name: db_name + title: Database Name + type: text + default: "gameshelf" + when: '{{repl ConfigOption "db_type" | eq "external"}}' + help_text: "Name of the PostgreSQL database to connect to." + - name: db_user + title: Database Username + type: text + default: "gameshelf" + when: '{{repl ConfigOption "db_type" | eq "external"}}' + help_text: "Username for authenticating with the PostgreSQL database." + - name: db_password + title: Database Password + type: password + when: '{{repl ConfigOption "db_type" | eq "external"}}' + required: true + help_text: "Password for authenticating with the PostgreSQL database." + - name: branding + title: Branding + when: '{{repl LicenseFieldValue "custom_branding_enabled" | eq "true"}}' + items: + - name: site_color + title: Primary Color + type: text + default: "#3B82F6" + help_text: "Primary color for the GameShelf UI (hex format, e.g. #3B82F6). Requires the Custom Branding license entitlement." + validation: + regex: + pattern: '^#[0-9A-Fa-f]{6}$' + message: "Must be a valid hex color code (e.g. #3B82F6)" +``` + +- [ ] **Step 3: Verify file looks correct** + +```bash +cat kots-config.yaml +``` + +Expected: ~90 lines, three groups (`gameshelf`, `database`, `branding`). + +- [ ] **Step 4: Commit** + +```bash +git add kots-config.yaml +git commit -m "feat: add external DB toggle and generated password to config screen" +``` + +--- + +## Task 2: Wire database config values into helmchart.yaml + +**Files:** +- Modify: `helmchart.yaml` + +- [ ] **Step 1: Verify current helmchart.yaml values section** + +```bash +cat helmchart.yaml +``` + +Expected: `values` section has `adminSecret`, `siteName`, `siteColor`, `customBrandingEnabled`, `imageProxy`, `service`, `image`, `replicated`, `postgresql.image`, `redis.image`. No `postgresql.enabled`, no `postgresql.auth`, no `externalDatabase` block. + +- [ ] **Step 2: Add database wiring to the values section** + +In `helmchart.yaml`, replace the existing `postgresql:` block: + +```yaml + postgresql: + image: + registry: 'repl{{ ReplicatedImageRegistry "index.docker.io" }}' +``` + +With: + +```yaml + postgresql: + enabled: 'repl{{ ConfigOption "db_type" | eq "embedded" }}' + auth: + password: 'repl{{ ConfigOption "db_password_generated" }}' + image: + registry: 'repl{{ ReplicatedImageRegistry "index.docker.io" }}' + externalDatabase: + host: 'repl{{ ConfigOption "db_host" }}' + port: 'repl{{ ConfigOption "db_port" }}' + database: 'repl{{ ConfigOption "db_name" }}' + username: 'repl{{ ConfigOption "db_user" }}' + password: 'repl{{ ConfigOption "db_password" }}' +``` + +- [ ] **Step 3: Verify the full helmchart.yaml looks correct** + +```bash +cat helmchart.yaml +``` + +Expected full file: + +```yaml +apiVersion: kots.io/v1beta2 +kind: HelmChart +metadata: + name: gameshelf +spec: + chart: + name: gameshelf + chartVersion: "0.0.0" + values: + adminSecret: repl{{ ConfigOption `admin_secret`}} + siteName: repl{{ ConfigOption `site_name`}} + siteColor: repl{{ ConfigOption `site_color`}} + customBrandingEnabled: repl{{ LicenseFieldValue `custom_branding_enabled` }} + imageProxy: + host: "" + service: + type: NodePort + nodePort: 30081 + image: + registry: 'repl{{ ReplicatedImageRegistry "ghcr.io" }}' + repository: 'aa-replicated/gameshelf' + pullPolicy: IfNotPresent + replicated: + image: + registry: 'repl{{ ReplicatedImageRegistry "proxy.replicated.com" true }}' + postgresql: + enabled: 'repl{{ ConfigOption "db_type" | eq "embedded" }}' + auth: + password: 'repl{{ ConfigOption "db_password_generated" }}' + image: + registry: 'repl{{ ReplicatedImageRegistry "index.docker.io" }}' + externalDatabase: + host: 'repl{{ ConfigOption "db_host" }}' + port: 'repl{{ ConfigOption "db_port" }}' + database: 'repl{{ ConfigOption "db_name" }}' + username: 'repl{{ ConfigOption "db_user" }}' + password: 'repl{{ ConfigOption "db_password" }}' + redis: + image: + registry: 'repl{{ ReplicatedImageRegistry "index.docker.io" }}' + builder: + image: + registry: "ghcr.io" + repository: "aa-replicated/gameshelf" + replicated: + image: + registry: "proxy.replicated.com" + repository: "library/replicated-sdk-image" + postgresql: + image: + registry: "docker.io" + redis: + image: + registry: "docker.io" +``` + +- [ ] **Step 4: Run helm lint to confirm no structural issues** + +```bash +helm lint chart/gameshelf/ +``` + +Expected: `1 chart(s) linted, 0 chart(s) failed` + +- [ ] **Step 5: Commit and push** + +```bash +git add helmchart.yaml +git commit -m "feat: wire external DB toggle and generated password into helmchart.yaml" +git push +``` + +--- + +## Task 3: Verify and deploy + +- [ ] **Step 1: Promote a new release in the Vendor Portal** + +Push triggers CI which creates a new release. Promote it to the Unstable channel. + +- [ ] **Step 2: Install with embedded DB (default)** + +During the EC3 install config screen: +- `Database` dropdown: leave as `Embedded (recommended)` +- Complete install + +Expected: +- `gameshelf-postgresql-0` pod is Running +- App connects successfully + +Verify: +```bash +sudo k0s kubectl get pods -A | grep postgresql +``` + +Expected: `gameshelf-postgresql-0 1/1 Running` + +- [ ] **Step 3: Verify generated password is stable across upgrade** + +After install, trigger an upgrade to a newer release (or re-deploy the same release). App should still connect to the DB without any reconfiguration. No `CrashLoopBackOff` or DB connection errors in the gameshelf pod logs: + +```bash +sudo k0s kubectl logs -l app.kubernetes.io/name=gameshelf -n | grep -i "database\|connect\|error" | tail -20 +``` + +Expected: No connection errors. + +- [ ] **Step 4: Install with external DB** + +During the EC3 install config screen: +- `Database` dropdown: select `External PostgreSQL` +- Fill in host, port, name, user, password for a real external PostgreSQL instance + +Expected: +- No `gameshelf-postgresql-0` pod +- App connects to the external instance + +Verify: +```bash +sudo k0s kubectl get pods -A | grep postgresql +``` + +Expected: no postgresql pod in the output. From 55629e20cb5b61ccec5cfb6db2f1793a152a87b4 Mon Sep 17 00:00:00 2001 From: Adam Anthony Date: Tue, 21 Apr 2026 22:27:52 -0400 Subject: [PATCH 3/4] feat: add external DB toggle and generated password to config screen --- kots-config.yaml | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/kots-config.yaml b/kots-config.yaml index 426d367..6c7dd9e 100644 --- a/kots-config.yaml +++ b/kots-config.yaml @@ -17,6 +17,59 @@ spec: type: text default: "GameShelf" help_text: "The name displayed in the browser title and header." + - name: database + title: Database + items: + - name: db_type + title: Database + type: select_one + default: embedded + help_text: "Choose Embedded to use the built-in PostgreSQL instance, or External to connect to your own PostgreSQL server." + items: + - name: embedded + title: Embedded (recommended) + - name: external + title: External PostgreSQL + - name: db_password_generated + title: Embedded Database Password + type: password + hidden: true + default: '{{repl RandomString 32}}' + help_text: "Auto-generated password for the embedded PostgreSQL instance. Generated once at install and preserved across upgrades." + - name: db_host + title: Database Host + type: text + when: '{{repl ConfigOption "db_type" | eq "external"}}' + required: true + help_text: "Hostname or IP address of your PostgreSQL server (e.g. db.example.com)." + - name: db_port + title: Database Port + type: text + default: "5432" + when: '{{repl ConfigOption "db_type" | eq "external"}}' + help_text: "Port your PostgreSQL server listens on. Default is 5432." + validation: + regex: + pattern: '^\d+$' + message: "Must be a numeric port number." + - name: db_name + title: Database Name + type: text + default: "gameshelf" + when: '{{repl ConfigOption "db_type" | eq "external"}}' + help_text: "Name of the PostgreSQL database to connect to." + - name: db_user + title: Database Username + type: text + default: "gameshelf" + when: '{{repl ConfigOption "db_type" | eq "external"}}' + help_text: "Username for authenticating with the PostgreSQL database." + - name: db_password + title: Database Password + type: password + when: '{{repl ConfigOption "db_type" | eq "external"}}' + required: true + help_text: "Password for authenticating with the PostgreSQL database." - name: branding title: Branding when: '{{repl LicenseFieldValue "custom_branding_enabled" | eq "true"}}' From 177dc929e88c54fe8f3a674d9b12bbbb92279e31 Mon Sep 17 00:00:00 2001 From: Adam Anthony Date: Wed, 22 Apr 2026 10:37:28 -0400 Subject: [PATCH 4/4] feat: wire external DB toggle and generated password into helmchart.yaml --- helmchart.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/helmchart.yaml b/helmchart.yaml index 23d07fe..167e9f1 100644 --- a/helmchart.yaml +++ b/helmchart.yaml @@ -24,8 +24,17 @@ spec: image: registry: 'repl{{ ReplicatedImageRegistry "proxy.replicated.com" true }}' postgresql: + enabled: 'repl{{ ConfigOption "db_type" | eq "embedded" }}' + auth: + password: 'repl{{ ConfigOption "db_password_generated" }}' image: registry: 'repl{{ ReplicatedImageRegistry "index.docker.io" }}' + externalDatabase: + host: 'repl{{ ConfigOption "db_host" }}' + port: 'repl{{ ConfigOption "db_port" }}' + database: 'repl{{ ConfigOption "db_name" }}' + username: 'repl{{ ConfigOption "db_user" }}' + password: 'repl{{ ConfigOption "db_password" }}' redis: image: registry: 'repl{{ ReplicatedImageRegistry "index.docker.io" }}'