๐Ÿ“ฆ kwatch Helm chart

September 6, 2026 ยท View on GitHub

The Helm chart installs kwatch and its Kubernetes resources in one release. Use it when you manage cluster configuration with Helm or GitOps.

If you want the fewest decisions, use the interactive manager.

โœ… Requirements

  • Helm 3 or newer
  • A supported Kubernetes cluster
  • Permission to create resources in the target namespace

๐Ÿš€ Install

Add the kwatch chart repository:

helm repo add kwatch https://kwatch.dev/charts
helm repo update

Create a local config.yaml. Credentials must be file references:

crd:
  enabled: true
alert:
  slack:
    webhook: "${file:/config/slack-webhook}"
app:
  clusterName: "production"

Create an existing Secret from that file and a local credential file:

kubectl create namespace kwatch --dry-run=client -o yaml | kubectl apply -f -
kubectl label namespace kwatch \
  pod-security.kubernetes.io/enforce=restricted \
  pod-security.kubernetes.io/audit=restricted \
  pod-security.kubernetes.io/warn=restricted --overwrite
kubectl -n kwatch create secret generic kwatch-config \
  --from-file=config.yaml \
  --from-file=slack-webhook

Then set the Secret name in values.yaml:

configSecretName: kwatch-config

When configSecretName is set, the Secret's config.yaml is the complete base configuration; .Values.config is not merged into it.

Install it:

helm install kwatch kwatch/kwatch \
  --namespace kwatch \
  --values values.yaml

The public chart repository contains stable releases. To test a release candidate, use its tagged Kubernetes manifests instead.

๐Ÿ”Ž Verify the install

kubectl get pods -n kwatch
kubectl logs -n kwatch deployment/kwatch

The pod should show READY 1/1 and STATUS Running.

โฌ†๏ธ Upgrade

helm repo update
helm upgrade kwatch kwatch/kwatch \
  --namespace kwatch \
  --values values.yaml

Helm upgrades the KwatchConfig CRD automatically. The chart keeps the CRD when the release is removed so configuration resources are not deleted by surprise.

๐Ÿงน Uninstall

helm uninstall kwatch --namespace kwatch

Delete the namespace only if it contains no other resources you want to keep:

kubectl delete namespace kwatch

โš™๏ธ Values

ValuePurposeDefault
configNon-sensitive kwatch configuration{crd: {enabled: true}}
configSecretNameExisting Secret containing config.yaml""
service.portHealth-check port8060
resourcesCPU and memory requests/limits100m CPU, 256Mi memory
securityContext.runAsNonRootRun without root privilegestrue
securityContext.readOnlyRootFilesystemUse a read-only root filesystemtrue
securityContext.allowPrivilegeEscalationPrevent privilege escalationfalse
securityContext.capabilities.dropLinux capabilities removed from the container[ALL]
securityContext.seccompProfile.typeSeccomp profileRuntimeDefault
podAnnotationsAdditional Pod annotations{}
podLabelsAdditional Pod labels{}
nodeSelectorChoose nodes by label{}
tolerationsAllow configured taints[]
affinityControl Pod placement{}
upgrader.disableUpdateCheckDisable the startup update checkfalse

The full configuration reference is in docs/configuration.md.