feat(helm): add Helm chart for Kubernetes deployment
WW
4mo ago+1259+1259+0123456789012345678901234567890123456789-3-3-0123456789
Summary
Adds a Helm chart under charts/vane to deploy Vane on Kubernetes. A single variant value selects the official image, so both published images are covered by one chart:
variant | Image | SearXNG |
|---|---|---|
full (default) | itzcrazykns1337/vane:latest | bundled inside the image |
slim | itzcrazykns1337/vane:slim-latest | deployed by the chart (searxng.deploy=true) or external (searxng.url) |
What's included
- Vane workload: Deployment, Service, ServiceAccount, optional Ingress and HPA
- Persistence: PVCs for the config/SQLite database (
/home/vane/data) and uploads (/home/vane/uploads) - Optional in-cluster SearXNG (slim only): Deployment/Service/Secret generated from the repo's
searxng/settings.yml(JSON format + Wolfram Alpha engine enabled), with a stable auto-generatedsecret_key, wired to Vane throughSEARXNG_API_URL - Probes (liveness/readiness/startup), resource limits and scheduling controls (nodeSelector/tolerations/affinity)
values.schema.jsonfor install-time validation of the values- Security default:
automountServiceAccountToken: false - Guardrails (
fail) for an invalidvariantor a slim install with no search backend
Usage
# Full image (Vane + bundled SearXNG) — recommended default
helm install vane ./charts/vane
# Slim image with a chart-managed SearXNG
helm install vane ./charts/vane --set variant=slim --set searxng.deploy=true
# Slim image with an existing SearXNG instance
helm install vane ./charts/vane \
--set variant=slim --set searxng.deploy=false \
--set searxng.url=http://my-searxng:8080
See charts/vane/README.md for the full list of options.
Notes / tradeoffs
- The image tag defaults to the floating
latest/slim-latesttags; overrideimage.tagto pin a release such as1.12.2/slim-1.12.2. - No enforced non-root
securityContextby default: thefullimage starts SearXNG viasudoand both images run as root, so hardening is left configurable rather than forced. - Vane stores its config and history in a local SQLite database on a
ReadWriteOncevolume, so the chart defaults toreplicaCount: 1with aRecreatestrategy.
Validation
helm lintpasses forfull,slim+ in-cluster SearXNG, andslim+ external SearXNGhelm templaterenders valid manifests in all three modes; the JSON schema rejects invalid values (unknown keys, wrong types, out-of-range ports, invalid variant)prettierclean — chart templates are excluded from Prettier via.prettierignorebecause Go templating conflicts with it
Summary by cubic
Add a Helm chart to deploy Vane on Kubernetes, supporting both full and slim images via a single variant switch. This makes K8s installs simple, with optional in-cluster SearXNG, persistence, and basic ops features.
- New Features
- Chart added under
charts/vanewithvariant=full|slim; slim supports in-cluster or external SearXNG. - Core resources: Deployment, Service, optional Ingress and HPA, ServiceAccount with
automountServiceAccountToken=false. - Persistence: PVCs for
/home/vane/dataand/home/vane/uploads. - Slim SearXNG: deploys
searxng/searxng(JSON format + Wolfram Alpha enabled) with a stable auto-generatedsecret_key, or usesearxng.url. - Probes and controls: liveness/readiness/startup probes; nodeSelector/tolerations/affinity.
- Validation:
values.schema.jsonand guardrails for invalidvariantor slim without a search backend. - Docs/tooling: README adds Helm install steps;
.prettierignoreexcludes Helm templates.
- Chart added under