When deploying Erigon with the current Helm chart, it is not possible to cleanly override the default liveness and readiness probes. Even when specifying a custom httpGet probe (using both the flat and nested enabled: true structure), the resulting StatefulSet spec includes both the chart's default tcpSocket handler and the custom httpGet handler. This results in an invalid Pod spec and prevents the StatefulSet from being created:
spec.containers[0].livenessProbe.tcpSocket: Forbidden: may not specify more than 1 handler type, spec.containers[0].readinessProbe.tcpSocket: Forbidden: may not specify more than 1 handler type
Steps to reproduce:
- Set a custom liveness or readiness probe in
values.yaml:
livenessProbe:
enabled: true
httpGet:
path: /eth1/liveness
port: 3000
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
successThreshold: 1
- Deploy the chart.
- Observe that the resulting StatefulSet spec contains both
httpGet and tcpSocket handlers, leading to a validation error.
Expected behavior:
Setting a custom probe in values.yaml should fully override the default probe, ensuring only one handler type is present in the rendered manifest.
Actual behavior:
The chart merges the custom probe with its own default probe, resulting in both handlers being present and an invalid Pod spec.
Workaround:
Currently, the only way to deploy is to disable probes entirely:
livenessProbe:
enabled: false
readinessProbe:
enabled: false
This is not ideal, as it disables health checks for the Erigon container.
Suggested fix:
- Update the chart logic to ensure that when a custom probe is specified, it completely replaces the default probe, rather than merging fields.
- Alternatively, support
customLivenessProbe and customReadinessProbe fields that are used as-is if present.
Environment:
- Chart version:
erigon-1.0.12
- Kubernetes version: (e.g., v1.32.2 via Kind)
- Helm version: (e.g., v3.17.2)
Additional context:
This issue prevents using robust health checks (such as those provided by a sidecar) and may impact node reliability in production.
When deploying Erigon with the current Helm chart, it is not possible to cleanly override the default liveness and readiness probes. Even when specifying a custom
httpGetprobe (using both the flat and nestedenabled: truestructure), the resulting StatefulSet spec includes both the chart's defaulttcpSockethandler and the customhttpGethandler. This results in an invalid Pod spec and prevents the StatefulSet from being created:Steps to reproduce:
values.yaml:httpGetandtcpSockethandlers, leading to a validation error.Expected behavior:
Setting a custom probe in
values.yamlshould fully override the default probe, ensuring only one handler type is present in the rendered manifest.Actual behavior:
The chart merges the custom probe with its own default probe, resulting in both handlers being present and an invalid Pod spec.
Workaround:
Currently, the only way to deploy is to disable probes entirely:
This is not ideal, as it disables health checks for the Erigon container.
Suggested fix:
customLivenessProbeandcustomReadinessProbefields that are used as-is if present.Environment:
erigon-1.0.12Additional context:
This issue prevents using robust health checks (such as those provided by a sidecar) and may impact node reliability in production.