Helm Deployment
Helm Deployment
Section titled “Helm Deployment”Chart: deploy/helm/dbward/
Prerequisites
Section titled “Prerequisites”- Helm 3
- Kubernetes cluster with
kubectlaccess - A PostgreSQL or MySQL database accessible from the cluster
Install (two-phase)
Section titled “Install (two-phase)”The agent needs a token generated by the server on first startup. Deploy in two phases:
Phase 1: Server only
Section titled “Phase 1: Server only”helm install dbward deploy/helm/dbward/ \ --set agent.enabled=false \ --set secrets.databaseUrl="postgres://user:pass@db-host:5432/app"Wait for the server to become ready:
kubectl rollout status deploy/dbward-serverPhase 2: Get tokens and enable agent
Section titled “Phase 2: Get tokens and enable agent”# Get the agent tokenkubectl exec deploy/dbward-server -- cat /data/agent-tokenhelm upgrade dbward deploy/helm/dbward/ \ --set agent.enabled=true \ --set secrets.agentToken="dbw_..." \ --set secrets.databaseUrl="postgres://user:pass@db-host:5432/app"Access the server
Section titled “Access the server”The chart creates a ClusterIP Service. To access it:
kubectl port-forward svc/dbward-server 3000:3000For production, add an Ingress resource or change the Service type in a values override.
Configuration (values.yaml)
Section titled “Configuration (values.yaml)”Key settings:
server: image: repository: ghcr.io/dbward-dev/dbward-server tag: "" # defaults to Chart.appVersion port: 3000 persistence: enabled: true size: 1Gi config: | state_dir = "/data" [auth] mode = "token" [[databases]] name = "app" environments = ["production"]
agent: enabled: true image: repository: ghcr.io/dbward-dev/dbward-agent tag: "" replicas: 1 config: | agent_id = "prod-agent" poll_interval_ms = 1000 [server] url = "http://dbward-server:3000" agent_token = "${DBWARD_AGENT_TOKEN}" [databases.app.production] url = "${DATABASE_URL}"
secrets: create: true agentToken: "" databaseUrl: ""
networkPolicy: enabled: trueFor full configuration details, see server.md (server.toml options) and agent.md (agent.toml options).
Why HTTP? The agent URL
http://dbward-server:3000uses a bare hostname (no dots), which is recognized as cluster-internal communication. HTTPS is not required. If you use an external FQDN, configure HTTPS or setallow_insecure = true.
Multi-agent
Section titled “Multi-agent”The chart models a single agent configuration. For multiple databases or environments with different capabilities:
- Deploy a second release:
helm install dbward-staging deploy/helm/dbward/ --set ... - Or extend
values.yamlwith custom templates
Upgrade
Section titled “Upgrade”helm upgrade dbward deploy/helm/dbward/ \ --set server.image.tag=v0.1.3 \ --set agent.image.tag=v0.1.3The server applies SQLite migrations automatically on startup.
Uninstall
Section titled “Uninstall”helm uninstall dbwardNote: The PVC (
dbward-server-data) is not deleted byhelm uninstall. Delete it manually if you want to remove all state.
Network Policy
Section titled “Network Policy”The chart includes a NetworkPolicy when networkPolicy.enabled=true. For details on what traffic is allowed, see Kubernetes deployment — Network Policy.
See also
Section titled “See also”- Server configuration — full server settings reference
- Agent configuration — agent settings, capabilities, resilience
- Kubernetes deployment — raw manifests, PVC and NetworkPolicy details
- Troubleshooting — common deployment issues