Tilt cannot find images that are rewritten by kuik
When Tilt cannot find any matching containers for a LiveUpdate resource during reconciliation, the UI will remain stuck in "Pending" indefinitely, and there is currently no log output indicating why.
After debugging, I discovered that Tilt was comparing the built image reference:
registry.com/image
against the running container’s image reference:
localhost:7879/registry.com/image
The extra localhost:7879 prefix came from Kuik image rewriting in my cluster. Because the references didn’t match, Tilt silently continued without applying the update.
The only workaround was to trigger a full build instead of a live update. I eventually fixed it by disabling Kuik/caching in my Helm charts.
I understand this is designed this way to avoid the pending/restarting containers or containers that are out of liveupdate scope but the lack of any logging made diagnosis much slower; getting no hints through tilt doctor or tilt dump.
Expected Behavior
Tilt should should have a debug log about the names mismatch during an attempted liveupdate instead of being stuck in "Pending"
Current Behavior
Tilt UI will stay stuck in "Pending" with no logs or debug level logs showing why the live update may be stuck.
Steps to Reproduce
- Install a container caching system like Kuik to the k8s cluster
- Deploy your resources using Tilt
- Try doing any changes to trigger the live updates
- Tilt UI will just be stuck in "Pending" due to the name mismatch
for what it's worth, tilt has a pretty rich api for debugging -- eg tilt get liveupdate -o yaml and tilt get kubernetesdiscovery -o yaml can give you a pretty complete picture of what containers tilt is aware of and what it's trying to update.
not sure that debug logs that require you to understand the underlying implementation are the right answer here.
on the other hand -- webhook admission controllers like kuik can do A LOT that make it impossible for tilt to match against what you deployed. need to think a bit on the right way to address this...
Got it, I agree debug logs might not be the right answer here.
The main pain point was figuring out that image rewriting was the cause, Tilt UI already logs the image tilt built and the image the pod is pulling, yet that wasn't my first instinct to check these.
I tried tilt get liveupdate -o yaml and tilt get kubernetesdiscovery -o yaml now, and still, it just don't surface there, it's not obvious that it's failing cause it's comparing localhost:7439/docker.com/registry.gitlab.com_docker.io_api:tilt-build-1755960819 to docker.com/registry.gitlab.com_docker.io_api:tilt-build-1755960819