helm repo add chia-network https://chia-network.github.io/helm-chartsTo expose /metrics for Prometheus Operator scrapes, wire container port → Service port → ServiceMonitor with a consistent port name metrics:
deployment.additionalPorts— add a named port, e.g.- name: metrics,containerPort: <listener>,protocol: TCP.service.additionalPorts— expose the same path withname: metrics,port: <listener>(or another cluster port), andtargetPort: metrics(string name matching the container port name).serviceMonitor— setenabled: true.endpointPortdefaults tometricsand must match the Service port name (not the container port number).
If the target cluster does not install monitoring.coreos.com/v1 ServiceMonitors, leave serviceMonitor.enabled false and scrape via static config or another mechanism.
For clusters that route with Contour and issue TLS
with cert-manager, the chart can render a
projectcontour.io/v1 HTTPProxy and a cert-manager.io/v1 Certificate
instead of (or alongside) a plain Ingress. Both require the respective CRDs and
controllers to already be installed in the cluster.
service.enabled: true— the default backend routes to the chart's Service onservice.port, so a Service must exist. This is only required when using the default route/tcpproxy; if you provide customroutesortcpproxythat reference other Services,service.enabledis not needed.contour.httpProxy— setenabled: trueand afqdn. By default a single route sends/to the Service; overrideroutesfor custom routing. Withtls.enabled: true, Contour terminates TLS usingtls.secretName(defaults to<release>-tls). Settls.passthrough: trueto forward encrypted traffic to the backend instead — Contour then routes at L4, so the chart emits a defaulttcpproxyto the Service (override viatcpproxy).certificates— a list of cert-manager Certificates. Each entry passes itsspecthrough to the resource as-is (any cert-manager field is supported), andnamedefaults to the chart fullname (with an index suffix if there are several). Point a cert'sspec.secretNameat the HTTPProxy/Ingress TLS secret (which defaults to<release>-tls) to wire the two together. When defining more than one certificate, set an explicitnameon each — the<fullname>-<index>fallback is position-sensitive, so reordering the list would rename (and therefore reissue) a Certificate.
Using <release>-tls as the shared secret lets a single wildcard Certificate
back multiple releases (e.g. production plus review apps) that reuse the same
Secret. When a cert is issued out-of-band, leave certificates empty and just
set tls.secretName on the HTTPProxy/Ingress.
Adopting an existing Certificate: if a Certificate of the same name was
previously created outside Helm (e.g. via kubectl apply), helm upgrade fails
with an ownership error. Either delete it first (the TLS Secret survives, so
there's no reissue) or annotate/label it (meta.helm.sh/release-name,
meta.helm.sh/release-namespace, app.kubernetes.io/managed-by=Helm) so Helm
adopts it in place.