Skip to content

orca-chart: Add container probes - #120

Open
AlveElde wants to merge 4 commits into
mainfrom
orca-pod-probes
Open

orca-chart: Add container probes#120
AlveElde wants to merge 4 commits into
mainfrom
orca-pod-probes

Conversation

@AlveElde

Copy link
Copy Markdown
Member

_pod.tpl had no probe block, so the livenessProbe and readinessProbe keys in values.yaml were unused. This wires them up and adds a startup probe.

Port names

The container port was only named http when exactly one HTTP listener was configured, otherwise every listener got an http-<port> name. The first listener of each scheme now keeps the bare name and only the ones after it are suffixed.

Startup probe

Kubernetes suspends the liveness and readiness probes for as long as a startup probe is failing, so a slow first boot cannot trip a restart and the pod stays out of the Service until it can serve.

Endpoints

Liveness asks /healthz, readiness and startup ask /readyz. Today these are the same static synth(200) in main.vcl, but the plan is to split them so /healthz answers from process start and /readyz only when the pod can actually serve.

Upgrade notes

  • Anyone who set livenessProbe or readinessProbe in their own values has had it silently ignored until now. Those settings start applying, including any that were wrong.
  • Pods now gate Service membership on readiness, so rollouts wait where they previously did not.
  • There is a restart path that did not exist before: a pod that never becomes ready is killed after 5 minutes instead of sitting live but useless.
  • Multi-listener deployments get their first port renamed from http-<port> to http. That is a pod spec change, so it triggers a rollout on upgrade, and their Service starts resolving.

AlveElde added 3 commits July 29, 2026 12:22
The container port name was only "http" when exactly one HTTP
listener was configured, otherwise every listener got an
"http-<port>" name. Both Services hardcode "targetPort: http" and
"targetPort: https", so any multi-listener config rendered a
Service aimed at a port name no container declared.

Name the first listener of each scheme "http" and "https", and
suffix only the ones after it. Single-listener output is
unchanged. This also makes "port: http" safe as a probe default.
_pod.tpl had no probe block, so the livenessProbe and readinessProbe
keys in values.yaml were dead: settable, documented, and rendered
nowhere.

Add the three `with` blocks, and a startup probe to own the slow part
of boot. Kubernetes suspends liveness and readiness for as long as a
startup probe is failing, so a cold start cannot trip a restart and
the pod stays out of the Service until it can serve.
The readiness probe asked /healthz, inherited from the chart scaffold
rather than chosen. Today the two endpoints are the same static
synth(200) in main.vcl, so this changes no behavior.

It matters for what comes next: /healthz is to report that the process
is up, and /readyz that the pod can actually serve traffic. Pairing
each probe with the endpoint it means now avoids a silent behavior
change in the chart when the two are pulled apart.

Startup stays on /readyz, which also means a pod that never finishes
booting is eventually restarted rather than sitting live but useless.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR wires container health probes into the Orca Helm chart’s pod template, updates listener port naming so http/https always exist as stable named ports, and documents the new probe behavior.

Changes:

  • Render startupProbe, livenessProbe, and readinessProbe from values.yaml into the container spec.
  • Adjust multi-listener port naming so the first port of each scheme is named http/https and only additional ports are suffixed.
  • Update unit tests and README docs to reflect probe defaults and the new port naming behavior.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
orca-chart/values.yaml Adds default startup probe and changes readiness endpoint to /readyz, plus extended probe documentation comments.
orca-chart/templates/_pod.tpl Implements stable port naming for multi-listener configs and renders probes into the pod spec via with blocks.
orca-chart/test/unit_common/common.bats Updates/extends unit tests for port naming and for probe rendering/overrides.
orca-chart/README.md Updates values table entries for probes and adds a new “Startup time and probes” section.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread orca-chart/values.yaml Outdated
Comment thread orca-chart/README.md Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants