RunnerHealth.ts
RunnerHealth.ts overview
Section titled “RunnerHealth.ts overview”Checks whether cluster runners should be treated as alive.
RunnerHealth is used by sharding when deciding whether assigned shards can
stay on a runner or need to move elsewhere. This module includes the
health-check service, a no-op layer that always reports runners as alive, a
ping-based checker, and a Kubernetes-based checker that looks at pod readiness
for the runner host.
Since v4.0.0
Exports Grouped by Category
Section titled “Exports Grouped by Category”constructors
Section titled “constructors”makeK8s
Section titled “makeK8s”Creates a RunnerHealth service that checks Kubernetes pod readiness for a
runner host, optionally scoped by namespace and label selector.
Gotchas
If the Kubernetes API check fails, the runner is treated as healthy.
Signature
declare const makeK8s: ( options?: { readonly namespace?: string | undefined; readonly labelSelector?: string | undefined } | undefined) => Effect.Effect<{ readonly isAlive: (address: RunnerAddress) => Effect.Effect<boolean> }, never, K8s.K8sHttpClient>Since v4.0.0
makePing
Section titled “makePing”Creates a RunnerHealth service that pings runners through Runners, retrying
failed pings on a short schedule and treating a successful ping within the
timeout as healthy.
Signature
declare const makePing: Effect.Effect< { readonly isAlive: (address: RunnerAddress) => Effect.Effect<boolean> }, never, Scope.Scope | Runners.Runners>Since v4.0.0
layers
Section titled “layers”layerK8s
Section titled “layerK8s”Layer that checks Kubernetes pod readiness to determine whether a runner is healthy.
Details
The provided HttpClient must trust the pod CA certificate and the pod service
account must be allowed to list pods.
Gotchas
If the Kubernetes API check fails, the runner is treated as healthy.
Signature
declare const layerK8s: ( options?: { readonly namespace?: string | undefined; readonly labelSelector?: string | undefined } | undefined) => Layer.Layer<RunnerHealth, never, K8s.K8sHttpClient>Since v4.0.0
layerNoop
Section titled “layerNoop”Layer that always considers a runner healthy.
When to use
Use when you need a runner-health layer for tests or local development where active health checks are unnecessary.
Signature
declare const layerNoop: Layer.Layer<RunnerHealth, never, never>Since v4.0.0
layerPing
Section titled “layerPing”Layer that pings runners directly to check whether they are healthy.
Signature
declare const layerPing: Layer.Layer<RunnerHealth, never, Runners.Runners>Since v4.0.0
models
Section titled “models”RunnerHealth (class)
Section titled “RunnerHealth (class)”Represents the service used to check if a Runner is healthy.
Details
If a Runner is responsive, shards will not be re-assigned because the Runner may still be processing messages. If a Runner is not responsive, then its associated shards can and will be re-assigned to a different Runner.
Signature
declare class RunnerHealthSince v4.0.0