mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
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:
co-authored by
Tyler Longwell
parent
f1fda2e15e
commit
90ebf1ffee
@@ -4,7 +4,7 @@ description: |
|
||||
Buzz — a Nostr-based messaging platform for human–agent 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,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"
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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).
|
||||
|
||||
Reference in New Issue
Block a user