Juju has no way of waiting until Kubernetes charms are actually ready
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical Juju |
Triaged
|
Low
|
Unassigned |
Bug Description
I would like to have a way of saying "Wait until every is 100% up and ready" in regular Juju. Right now there's the `juju-wait` plugin (which seems like it should be part of core juju), but that doesn't actually wait for the Kubernetes resources spun up by charms to complete setting themselves up, it only waits for the charms to report ready. See here for an example of how we have to do additional waiting in the kubeflow bundle setup:
https:/
Additionally, there's a rare race condition that I've encountered where even the above isn't enough to ensure readiness. The steps that it goes through are:
- script configures dex-auth with public-url configuration option
- scripts runs `juju wait -wv` and `microk8s kubectl wait` as linked above
- script determines that everything has settled and exits with successful completion message
- juju actually configures dex-auth charm with new public-url configuration option
- dex-auth charm deploys new dex-auth pod, triggering a rolling update
- tests that are now running in CI fail due to dex-auth not being ready
So in other words, I would like some way to say "wait until all configuration changes that are in the pipeline have been processed, and everything is then 100% up and responsive"
juju-wait works pretty well, but it sounds like your charms are lying when they say they are Ready. Shouldn't they not report Ready until they're actually ready?