chore(chart): remove the eval-only Typesense subsystem from the Helm chart

Typesense is no longer a relay dependency (search is Postgres FTS), so the
chart no longer provisions, wires, validates, or secrets a Typesense backend:

- Deleted templates/quickstart-typesense.yaml (in-cluster eval Deployment).
- deployment.yaml: dropped TYPESENSE_URL / TYPESENSE_API_KEY env from the relay.
- secret-chart.yaml: dropped the Typesense URL/key composition block.
- _helpers.tpl: removed buzz.typesenseFullname / buzz.typesenseUrl defines.
- _validate.tpl: removed the 'Typesense source must exist' fail-guard.
- values.yaml / values.schema.json: removed the typesense.* value block and
  schema, and the TYPESENSE_* entries from the existingSecret key docs.
- NOTES.txt: dropped Typesense from the quickstart/production profile output.
- ci/, examples/, Chart.yaml: dropped Typesense from the quickstart render
  scenario, the GitOps samples, and the chart description.
- tests/: removed the three Typesense-specific helm-unittest cases and the
  now-meaningless typesense.* set/fixture boilerplate.

Verified: helm-unittest 25/25 green (was 28; -3 Typesense cases); helm lint
clean; ci/quickstart + ha + production-existing-secret render matrices all
template cleanly after helm dependency build.

Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
This commit is contained in:
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d
2026-06-27 14:42:30 -04:00
co-authored by Tyler Longwell
parent f1fda2e15e
commit 90ebf1ffee
21 changed files with 15 additions and 307 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ description: |
Buzz — a Nostr-based messaging platform for humanagent collaboration.
A single relay binary serving WebSocket + REST + web UI, backed by
PostgreSQL, Redis, and Typesense. Configurable for single-node evaluation
PostgreSQL and Redis. Configurable for single-node evaluation
(subcharts on) and HA production (external services, existingSecret).
type: application
version: 0.1.0
+1 -3
View File
@@ -1,6 +1,6 @@
# Quickstart / eval: subcharts on, autogen secrets, single replica.
# This is the scenario `ct install` exercises against a kind cluster — it
# spins up postgres + redis + minio + typesense in-cluster so the relay can
# spins up postgres + redis + minio in-cluster so the relay can
# actually start and pass its S3 conformance probe.
quickstart: true
postgresql:
@@ -9,8 +9,6 @@ redis:
enabled: true
minio:
enabled: true
typesense:
enabled: true
relayUrl: wss://buzz.test.local
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000001"
relay:
@@ -37,9 +37,6 @@ spec:
externalRedis:
url: ""
typesense:
url: "http://typesense.buzz.svc.cluster.local:8108"
# apiKey lives in buzz-secrets
s3:
endpoint: "https://s3.us-east-1.amazonaws.com"
@@ -37,9 +37,6 @@ spec:
secrets:
existingSecret: buzz-secrets
typesense:
url: "http://typesense.buzz.svc.cluster.local:8108"
# apiKey lives in buzz-secrets
s3:
endpoint: "https://s3.us-east-1.amazonaws.com"
@@ -9,8 +9,6 @@
# BUZZ_GIT_HOOK_HMAC_SECRET — 32+ chars; required when replicaCount > 1
# DATABASE_URL — postgres://...
# REDIS_URL — redis://... (required when replicaCount > 1)
# TYPESENSE_URL
# TYPESENSE_API_KEY
# BUZZ_S3_ACCESS_KEY
# BUZZ_S3_SECRET_KEY
apiVersion: v1
@@ -24,7 +22,5 @@ stringData:
BUZZ_GIT_HOOK_HMAC_SECRET: "REPLACE_WITH_RANDOM_64_CHARS"
DATABASE_URL: "postgres://buzz:REPLACE@postgres.buzz.svc.cluster.local:5432/buzz?sslmode=require"
REDIS_URL: "redis://:REPLACE@redis.buzz.svc.cluster.local:6379"
TYPESENSE_URL: "http://typesense.buzz.svc.cluster.local:8108"
TYPESENSE_API_KEY: "REPLACE"
BUZZ_S3_ACCESS_KEY: "REPLACE"
BUZZ_S3_SECRET_KEY: "REPLACE"
+2 -3
View File
@@ -26,19 +26,18 @@
──────────────────────────────────────────────────────────────────────────────
Profile
──────────────────────────────────────────────────────────────────────────────
{{ if or .Values.postgresql.enabled .Values.redis.enabled .Values.minio.enabled .Values.typesense.enabled }}
{{ if or .Values.postgresql.enabled .Values.redis.enabled .Values.minio.enabled }}
⚠ QUICKSTART / EVALUATION PROFILE
{{ if .Values.postgresql.enabled }}- In-cluster Postgres subchart (CloudPirates){{ end }}
{{ if .Values.redis.enabled }}- In-cluster Redis subchart (CloudPirates){{ end }}
{{ if .Values.minio.enabled }}- In-cluster MinIO (eval-only, single replica; bucket "{{ .Values.s3.bucket }}" created by post-install Job){{ end }}
{{ if .Values.typesense.enabled }}- In-cluster Typesense (eval-only, single replica){{ end }}
- Chart auto-generates secrets via the `lookup` pattern. This is NOT
GitOps-safe — secrets will silently rotate under ArgoCD/Flux. For
production, see examples/argocd-app.yaml or examples/flux-helmrelease.yaml.
{{ else }}
✓ PRODUCTION PROFILE
External Postgres, Redis (if enabled), Typesense, S3.
External Postgres, Redis (if enabled), S3.
{{ if .Values.secrets.existingSecret }}- Secrets sourced from: {{ .Values.secrets.existingSecret }}{{ end }}
{{ end }}
+1 -13
View File
@@ -37,7 +37,7 @@ app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/* Relay-specific selector: scopes the relay Deployment + Service so they do
not also match the quickstart MinIO/Typesense pods, which share the base
not also match the quickstart MinIO pods, which share the base
selectorLabels but carry their own component label. */}}
{{- define "buzz.relaySelectorLabels" -}}
{{ include "buzz.selectorLabels" . }}
@@ -98,10 +98,6 @@ secrets.existingSecret, use that. Otherwise use the chart-managed one.
{{- printf "%s-minio" (include "buzz.fullname" .) -}}
{{- end -}}
{{- define "buzz.typesenseFullname" -}}
{{- printf "%s-typesense" (include "buzz.fullname" .) -}}
{{- end -}}
{{/* In-cluster MinIO endpoint, used when minio.enabled and s3.endpoint unset. */}}
{{- define "buzz.minioEndpoint" -}}
{{- printf "http://%s.%s.svc.cluster.local:9000" (include "buzz.minioFullname" .) .Release.Namespace -}}
@@ -116,11 +112,3 @@ secrets.existingSecret, use that. Otherwise use the chart-managed one.
{{- end -}}
{{- end -}}
{{/* In-cluster Typesense URL, used when typesense.enabled and url unset. */}}
{{- define "buzz.typesenseUrl" -}}
{{- if .Values.typesense.url -}}
{{- .Values.typesense.url -}}
{{- else if .Values.typesense.enabled -}}
{{- printf "http://%s.%s.svc.cluster.local:8108" (include "buzz.typesenseFullname" .) .Release.Namespace -}}
{{- end -}}
{{- end -}}
@@ -50,11 +50,6 @@ surface at template time regardless of which manifest helm renders first.
{{- fail "Postgres source missing: enable postgresql.enabled=true, set externalPostgresql.url, or provide secrets.existingSecret with key DATABASE_URL." -}}
{{- end -}}
{{/* Typesense source must exist somewhere */}}
{{- if not (or .Values.typesense.enabled .Values.typesense.url .Values.secrets.existingSecret) -}}
{{- fail "Typesense source missing: enable typesense.enabled=true (quickstart in-cluster), set typesense.url + typesense.apiKey, or provide secrets.existingSecret with keys TYPESENSE_URL + TYPESENSE_API_KEY." -}}
{{- end -}}
{{/* S3 / object-storage source must exist somewhere (relay hard-fails its
startup conformance probe without a reachable bucket). */}}
{{- if not (or .Values.minio.enabled .Values.s3.endpoint .Values.secrets.existingSecret) -}}
@@ -130,16 +130,6 @@ spec:
name: {{ include "buzz.envSecretName" . }}
key: REDIS_URL
optional: {{ and (eq (.Values.replicaCount | int) 1) (not .Values.redis.enabled) (not .Values.externalRedis.url) }}
- name: TYPESENSE_URL
valueFrom:
secretKeyRef:
name: {{ include "buzz.envSecretName" . }}
key: TYPESENSE_URL
- name: TYPESENSE_API_KEY
valueFrom:
secretKeyRef:
name: {{ include "buzz.envSecretName" . }}
key: TYPESENSE_API_KEY
- name: BUZZ_S3_ACCESS_KEY
valueFrom:
secretKeyRef:
@@ -1,96 +0,0 @@
{{- /*
Eval-only in-cluster Typesense for the quickstart profile. NOT for production —
single replica, no TLS, API key from the chart-managed Secret. Production
deploys leave typesense.enabled=false and point typesense.url/apiKey (or
secrets.existingSecret) at a managed Typesense service.
*/ -}}
{{- if .Values.typesense.enabled -}}
{{- if .Values.secrets.existingSecret -}}
{{- fail "typesense.enabled=true (quickstart) is incompatible with secrets.existingSecret. Quickstart autogenerates the Typesense key in the chart-managed Secret; for external Typesense set typesense.enabled=false and provide TYPESENSE_URL/TYPESENSE_API_KEY." -}}
{{- end -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "buzz.typesenseFullname" . }}
labels:
{{- include "buzz.labels" . | nindent 4 }}
app.kubernetes.io/component: typesense
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
{{- include "buzz.selectorLabels" . | nindent 6 }}
app.kubernetes.io/component: typesense
template:
metadata:
labels:
{{- include "buzz.selectorLabels" . | nindent 8 }}
app.kubernetes.io/component: typesense
spec:
containers:
- name: typesense
image: {{ .Values.typesense.image | quote }}
args:
- "--data-dir=/data"
- "--api-key=$(TYPESENSE_API_KEY)"
- "--enable-cors"
env:
- name: TYPESENSE_API_KEY
valueFrom:
secretKeyRef:
name: {{ include "buzz.chartSecretName" . }}
key: TYPESENSE_API_KEY
ports:
- { name: http, containerPort: 8108 }
readinessProbe:
httpGet: { path: /health, port: http }
initialDelaySeconds: 3
periodSeconds: 5
livenessProbe:
httpGet: { path: /health, port: http }
initialDelaySeconds: 5
periodSeconds: 10
volumeMounts:
- { name: data, mountPath: /data }
volumes:
- name: data
{{- if .Values.typesense.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ include "buzz.typesenseFullname" . }}
{{- else }}
emptyDir: {}
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
name: {{ include "buzz.typesenseFullname" . }}
labels:
{{- include "buzz.labels" . | nindent 4 }}
app.kubernetes.io/component: typesense
spec:
selector:
{{- include "buzz.selectorLabels" . | nindent 4 }}
app.kubernetes.io/component: typesense
ports:
- { name: http, port: 8108, targetPort: http }
{{- if .Values.typesense.persistence.enabled }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "buzz.typesenseFullname" . }}
labels:
{{- include "buzz.labels" . | nindent 4 }}
app.kubernetes.io/component: typesense
annotations:
helm.sh/resource-policy: keep
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: {{ .Values.typesense.persistence.size | quote }}
{{- end }}
{{- end -}}
@@ -73,28 +73,6 @@ data:
REDIS_URL: {{ .Values.externalRedis.url | b64enc | quote }}
{{- end }}
{{- /* Typesense — bundled (quickstart) composes URL + autogen key; else
pass through external values. */}}
{{- if .Values.typesense.enabled }}
{{- $tsKey := "" }}
{{- if (index $existingData "TYPESENSE_API_KEY") }}
{{- $tsKey = index $existingData "TYPESENSE_API_KEY" | b64dec }}
{{- else if .Values.typesense.apiKey }}
{{- $tsKey = .Values.typesense.apiKey }}
{{- else }}
{{- $tsKey = randAlphaNum 32 }}
{{- end }}
TYPESENSE_URL: {{ include "buzz.typesenseUrl" . | b64enc | quote }}
TYPESENSE_API_KEY: {{ $tsKey | b64enc | quote }}
{{- else }}
{{- if .Values.typesense.url }}
TYPESENSE_URL: {{ .Values.typesense.url | b64enc | quote }}
{{- end }}
{{- if .Values.typesense.apiKey }}
TYPESENSE_API_KEY: {{ .Values.typesense.apiKey | b64enc | quote }}
{{- end }}
{{- end }}
{{- /* S3 creds — bundled MinIO (quickstart) autogenerates; else pass
through external values. */}}
{{- if .Values.minio.enabled }}
-2
View File
@@ -8,8 +8,6 @@ externalPostgresql:
url: "postgres://buzz:pw@postgres.example.com:5432/buzz"
externalRedis:
url: "redis://:pw@redis.example.com:6379"
typesense:
url: "https://typesense.example.com"
s3:
bucket: "buzz-media"
persistence:
@@ -8,8 +8,6 @@ externalPostgresql:
url: "postgres://buzz:pw@postgres.example.com:5432/buzz"
externalRedis:
url: "redis://:pw@redis.example.com:6379"
typesense:
url: "https://typesense.example.com"
s3:
endpoint: "https://s3.us-east-1.amazonaws.com"
bucket: "buzz-media"
@@ -9,8 +9,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -29,8 +27,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -47,8 +43,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -68,8 +62,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -1,10 +1,9 @@
suite: quickstart bundled services
# The dev quickstart must stand up MinIO + Typesense in-cluster so the relay's
# The dev quickstart must stand up MinIO in-cluster so the relay's
# startup S3 conformance probe passes with zero external dependencies.
templates:
- templates/quickstart-minio.yaml
- templates/quickstart-minio-init.yaml
- templates/quickstart-typesense.yaml
- templates/deployment.yaml
- templates/secret-chart.yaml
- templates/service.yaml
@@ -17,7 +16,6 @@ tests:
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
postgresql.enabled: true
redis.enabled: true
typesense.enabled: true
minio.enabled: true
asserts:
- containsDocument:
@@ -32,24 +30,6 @@ tests:
name: rel-buzz-minio-init
template: templates/quickstart-minio-init.yaml
- it: renders the in-cluster Typesense Deployment when typesense.enabled
release:
name: rel
set:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
postgresql.enabled: true
redis.enabled: true
typesense.enabled: true
minio.enabled: true
asserts:
- containsDocument:
kind: Deployment
apiVersion: apps/v1
name: rel-buzz-typesense
template: templates/quickstart-typesense.yaml
documentIndex: 0
- it: relay S3 endpoint resolves to the bundled MinIO Service
release:
name: rel
@@ -58,7 +38,6 @@ tests:
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
postgresql.enabled: true
redis.enabled: true
typesense.enabled: true
minio.enabled: true
asserts:
- contains:
@@ -68,7 +47,7 @@ tests:
value: "http://rel-buzz-minio.NAMESPACE.svc.cluster.local:9000"
template: templates/deployment.yaml
- it: chart Secret composes TYPESENSE_URL at the bundled Typesense Service
- it: chart Secret composes the bundled MinIO credentials the relay reads
release:
name: rel
set:
@@ -76,15 +55,8 @@ tests:
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
postgresql.enabled: true
redis.enabled: true
typesense.enabled: true
minio.enabled: true
asserts:
- matchRegex:
path: data.TYPESENSE_URL
decodeBase64: true
pattern: "^http://rel-buzz-typesense\\..+:8108$"
template: templates/secret-chart.yaml
documentIndex: 0
# MinIO creds the relay reads must exist for the conformance probe.
- isNotNullOrEmpty:
path: data.BUZZ_S3_ACCESS_KEY
@@ -95,7 +67,7 @@ tests:
template: templates/secret-chart.yaml
documentIndex: 0
- it: relay Service selector is scoped to component=relay (must NOT match bundled MinIO/Typesense pods)
- it: relay Service selector is scoped to component=relay (must NOT match bundled MinIO pods)
release:
name: rel
set:
@@ -103,7 +75,6 @@ tests:
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
postgresql.enabled: true
redis.enabled: true
typesense.enabled: true
minio.enabled: true
asserts:
- equal:
@@ -1,5 +1,5 @@
suite: quickstart guards
# Quickstart autogenerates MinIO/Typesense creds in the chart-managed Secret,
# Quickstart autogenerates MinIO creds in the chart-managed Secret,
# so it is mutually exclusive with secrets.existingSecret. Isolated single-
# template suites so the fail-guard is the only document under assertion.
tests:
@@ -10,26 +10,8 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
postgresql.enabled: true
typesense.url: http://ts:8108
typesense.apiKey: k
minio.enabled: true
secrets.existingSecret: "buzz-secrets"
asserts:
- failedTemplate:
errorPattern: "incompatible with secrets.existingSecret"
- it: typesense.enabled is incompatible with existingSecret
templates:
- templates/quickstart-typesense.yaml
set:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
postgresql.enabled: true
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
typesense.enabled: true
secrets.existingSecret: "buzz-secrets"
asserts:
- failedTemplate:
errorPattern: "incompatible with secrets.existingSecret"
+1 -5
View File
@@ -8,14 +8,12 @@ templates:
- templates/service.yaml
- templates/pvc-git.yaml
tests:
- it: renders cleanly in production profile (external pg/redis/typesense)
- it: renders cleanly in production profile (external pg/redis)
set:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
externalRedis.url: redis://h:6379
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -39,8 +37,6 @@ tests:
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
externalRedis.url: redis://h:6379
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -8,8 +8,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -31,8 +29,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -47,8 +43,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -70,8 +64,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -93,8 +85,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -114,8 +104,6 @@ tests:
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
postgresql.enabled: true
redis.enabled: true
typesense.url: http://ts:8108
typesense.apiKey: k
s3.endpoint: http://minio:9000
s3.accessKey: a
s3.secretKey: s
@@ -7,8 +7,6 @@ tests:
relayUrl: ""
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
asserts:
- failedTemplate:
errorMessage: "relayUrl is required: set --set relayUrl=wss://your.domain"
@@ -18,8 +16,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: ""
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
asserts:
- failedTemplate:
errorPattern: "ownerPubkey is required when relay.requireRelayMembership=true"
@@ -29,8 +25,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "NOTAHEX"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
asserts:
- failedTemplate:
errorPattern: "ownerPubkey: Does not match pattern"
@@ -40,8 +34,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
replicaCount: 3
asserts:
- failedTemplate:
@@ -53,8 +45,6 @@ tests:
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
externalRedis.url: redis://h:6379
typesense.url: http://ts:8108
typesense.apiKey: k
replicaCount: 3
persistence.git.accessMode: ReadWriteOnce
asserts:
@@ -66,8 +56,6 @@ tests:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
ingress.enabled: true
httproute.enabled: true
asserts:
@@ -78,28 +66,15 @@ tests:
set:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
typesense.url: http://ts:8108
typesense.apiKey: k
asserts:
- failedTemplate:
errorPattern: "Postgres source missing"
- it: fails when Typesense source is missing
set:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
asserts:
- failedTemplate:
errorPattern: "Typesense source missing"
- it: fails when S3/object-storage source is missing
set:
relayUrl: wss://buzz.example.com
ownerPubkey: "0000000000000000000000000000000000000000000000000000000000000000"
externalPostgresql.url: postgres://u:p@h:5432/d
typesense.url: http://ts:8108
typesense.apiKey: k
asserts:
- failedTemplate:
errorPattern: "S3/object-storage source missing"
-18
View File
@@ -162,24 +162,6 @@
"url": { "type": "string", "pattern": "^(rediss?://.+)?$" }
}
},
"typesense": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"url": { "type": "string", "pattern": "^(https?://.+)?$" },
"apiKey": { "type": "string" },
"image": { "type": "string", "minLength": 1 },
"persistence": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"size": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$" }
}
}
}
},
"s3": {
"type": "object",
"additionalProperties": false,
+5 -21
View File
@@ -2,22 +2,22 @@
#
# Two supported tiers:
#
# PRODUCTION (default) — external Postgres/Redis/Typesense/S3, existingSecret
# PRODUCTION (default) — external Postgres/Redis/S3, existingSecret
# refs everywhere, no chart-side autogeneration, GitOps-safe (ArgoCD/Flux).
# HA-ready: replicaCount >= 2 (requires Redis and RWX storage for git).
#
# QUICKSTART — bundles in-cluster Postgres + Redis + MinIO + Typesense and
# QUICKSTART — bundles in-cluster Postgres + Redis + MinIO and
# auto-generates relay secrets via the `lookup` pattern (NOT GitOps-safe —
# see README), single replica, evaluation only. Opt in by enabling each
# bundled service: postgresql.enabled, redis.enabled, minio.enabled,
# typesense.enabled. See ci/quickstart-values.yaml and the README.
# bundled service: postgresql.enabled, redis.enabled, minio.enabled.
# See ci/quickstart-values.yaml and the README.
#
# See examples/argocd-app.yaml and examples/flux-helmrelease.yaml for the
# canonical GitOps configurations.
# Intent marker for the evaluation profile, surfaced in NOTES.txt. It does NOT
# by itself enable any bundled service — set the per-service .enabled flags
# (postgresql / redis / minio / typesense) to bring them up in-cluster.
# (postgresql / redis / minio) to bring them up in-cluster.
quickstart: false
# ── Image ────────────────────────────────────────────────────────────────────
@@ -56,8 +56,6 @@ ownerPubkey: ""
# BUZZ_GIT_HOOK_HMAC_SECRET — 32+ chars; required when replicaCount > 1
# DATABASE_URL — full Postgres URL (preferred over externalPostgresql.url)
# REDIS_URL — full Redis URL with auth
# TYPESENSE_URL — Typesense base URL
# TYPESENSE_API_KEY — Typesense API key
# BUZZ_S3_ACCESS_KEY — S3 access key
# BUZZ_S3_SECRET_KEY — S3 secret key
secrets:
@@ -211,20 +209,6 @@ redis:
externalRedis:
url: "" # redis://:pass@host:6379
# ── Typesense ────────────────────────────────────────────────────────────────
# Production: point url/apiKey at an external Typesense service (or supply
# TYPESENSE_URL/TYPESENSE_API_KEY via secrets.existingSecret).
# Quickstart (`enabled: true`): the chart runs an in-cluster, eval-only
# Typesense Deployment and composes TYPESENSE_URL with an autogenerated key.
typesense:
enabled: false # quickstart: set true for bundled in-cluster Typesense
url: ""
apiKey: ""
image: typesense/typesense:30.2
persistence:
enabled: true
size: 4Gi
# ── S3 / object storage (media) ──────────────────────────────────────────────
# Production: point endpoint/bucket at an external S3-compatible service and
# supply credentials (inline below or via secrets.existingSecret).