Crossplane "cannot run function pipeline" in CI
With pipeline-mode compositions, Crossplane calls each function over gRPC in order. "cannot run function pipeline" means a call failed - the function pod is not running, the package is not installed, or the function returned a fatal result.
What this error means
The XR shows SYNCED False with "cannot compose resources: cannot run function pipeline: cannot run function \"...\"" and names the function that failed.
cannot compose resources: cannot run function pipeline: cannot run function
"function-patch-and-transform": rpc error: code = Unavailable
desc = connection error: desc = "transport: Error while dialing: dial tcp ..."Common causes
The function pod is not running
The Function package installed but its deployment is not Ready, so the gRPC dial fails with Unavailable.
The function returned a fatal result
The function ran but returned a fatal severity result (bad input, unsupported field), which aborts the pipeline.
How to fix it
Check the function is installed and healthy
- List functions and confirm the one named is INSTALLED and HEALTHY.
- If unhealthy, describe its revision and pod for the real error.
- Re-run reconciliation once the function pod is Ready.
kubectl get functions
kubectl -n crossplane-system get pods -l pkg.crossplane.io/functionReproduce the pipeline locally with render
Run render with the same functions file to see the fatal result the function returns, then fix its input.
crossplane beta render xr.yaml composition.yaml functions.yamlHow to prevent it
- Wait for functions to be HEALTHY before reconciling XRs in CI.
- Render pipeline compositions in PR to catch fatal function results.
- Pin function package versions so behavior does not change unexpectedly.