Shepherd is a single Go binary with the UI embedded in it, and it keeps no state outside PostgreSQL. The list is genuinely short.
| To⦠| You need |
|---|---|
| Deploy on Kubernetes the intended way |
Kubernetes 1.32+, Helm 3 or 4, and PostgreSQL 16 or newer
that the cluster can reach (the test suites run 16, the dev and e2e stacks 18; older
majors are untested). The chart needs no CRDs by default.
|
| Run Shepherd anywhere else | The same PostgreSQL and somewhere to run one container. Shepherd is stateless, so nothing else is needed β but the fleet it manages is a Kubernetes concern, so this is mainly useful for development. |
| Run the receiver tier optional |
The Gateway API CRDs, v1.4 or newer on the Standard channel, and an implementation that runs a Gateway (tested with NGINX Gateway Fabric). A CNI that enforces NetworkPolicy — the receiver accepts traffic only from your gateway's pods, and without enforcement that rule does nothing. See Receiver tier. |
| Run collectors | Grafana Alloy v1.20.1 β
the version whose component schema this build validates against, pinned in
deploy/versions.env. Alloy needs remotecfg support. |
| Build from source | Go 1.27.2 (per go.mod), Node 26 and pnpm 12, Docker (the Go suite starts real
Postgres via testcontainers), and Helm for the chart tests. |
Two configuration values are mandatory and the server refuses to start
without them: database.url and security.encryption_key (a
base64-encoded 32 bytes). The encryption key protects git credentials and the OIDC client
secret at rest β keep it, because a replacement key cannot decrypt what the
old one wrote.