# Error: Helm release "metamorph" did not become ready within 10m0s

## TL;DR
This is almost always a chart problem, not a Pulumi problem. One of the chart's workloads never became Ready inside the release `timeout`. Check which resource is stuck with `kubectl`, fix the underlying workload (image pull, probes, webhook ordering), or raise the release `timeout`, then re-run `pulumi up`.

## The error

```
error: Helm release "metamorph" did not become ready within 10m0s.
```

## Fix it

1. Find the stuck resource. Run `kubectl get pods -n [your namespace]` and look for pods in `ImagePullBackOff`, `CrashLoopBackOff`, or `Pending`.
   - Success check: every pod shows `Running` with all containers ready.
2. Check why it is stuck: `kubectl describe pod [pod name] -n [namespace]` and read the Events section.
   - Success check: you see a concrete cause, e.g. a bad image tag, a failing readiness probe, or a webhook that is not reachable yet.
3. If the workload just needs more time (large images, slow first boot), raise the timeout on the release: set `timeout` to a larger value in the Helm release args (e.g. 20 minutes) and re-run.
   - Success check: `pulumi up` completes and the release shows `deployed`.
4. If a chart installs admission webhooks in the same release as the workloads that call them, split them into two releases so the webhook is up before dependents install.
   - Success check: no more `failed calling webhook` errors wrapped inside the release failure.

## When to use this
You hit this after `pulumi up` on a stack that manages a Kubernetes Helm release, and the failure names a release timeout.

## When NOT to use this
Do not use this for Helm chart template/render errors at preview time, or for `helm repo` download failures. Those fail before any readiness wait starts.

## Compatibility
Pulumi CLI 3.x, the Pulumi Kubernetes provider, Helm v3 charts. The timeout behavior is the same across recent provider versions.

## Variants
- `error: Helm release "[name]" timed out waiting for the condition`
- `error: Helm release "[name]" failed: timed out waiting for the condition`
- `Internal error occurred: failed calling webhook "[name]": Post "[webhook url]": dial tcp: connect: connection refused` wrapped in a release failure

## Root cause
The Pulumi Kubernetes provider waits for every resource in the chart to report Ready, up to the release `timeout`. If anything is slow or broken (bad image, failing probe, webhook not yet serving), the wait expires and the provider reports the timeout. The chart's resources are the thing to debug, not Pulumi.

## Edge cases
- `pulumi up --target` on the release alone still waits the full timeout; the stuck workload is unchanged.
- Setting a very long timeout on a genuinely broken chart just delays the same failure. Fix the workload first.
