Open dkoshkin opened 9 months ago
This issue is currently awaiting triage.
If CAPI contributors determines this is a relevant issue, they will accept it by applying the triage/accepted
label and provide further guidance.
The triage/accepted
label can be added by org members by writing /triage accepted
in a comment.
@jackfrancis @willie-yao could you kindly triage this issue?
/triage accepted Will take a look and try to reproduce!
Cluster topology controller only waits for Kubernetes upgrades. We check if all Machines have been upgraded via versions on the corresponding Nodes.
/retitle MachinePool observedGeneration is updated without changing conditions on upgrades
/priority important-longterm
@willie-yao @mboersma @Jont828 PTAL
/remove-triage accepted
@willie-yao @mboersma @Jont828 Do you have some time to take a look?
What steps did you take and what happened?
Create an AKS cluster with machinepools with CAPZ then upgrade the
spec.version
in the MachinePool.What did you expect to happen?
We rely on
status.observedGeneration
and different status fields and conditions to determine if the MachinePool is still being upgraded. This works great withMachineDeployments
with lots of different infra providers, but for MachinePools there is no clear signal when the upgrade has started.I've captured the MachinePool objects during an upgrade:
spec.version
was upgraded tov1.28.3
but observedGeneration is still2
, this is expected the controllers haven't acted yet.The controller picks up the spec change and reconciles it, updating
observedGeneration
to3
which matchesgeneration
. This is where I would expect to some status change that the spec is outdated and will be upgraded.Then about 10 seconds later we get a status change with
Ready
andInfrastructureReady
conditions changing toFalse
. By this point our wait code has exited since it checks forobservedGeneration==generation
and theReady
condition.Cluster API version
v1.5.3
Kubernetes version
No response
Anything else you would like to add?
We would like to avoid solving this and not have "sleeps" to wait for changes to happen (or not happen) and instead would like to use the
status
.I'm looking for some guidance
Label(s) to be applied
/kind bug One or more /area label. See https://github.com/kubernetes-sigs/cluster-api/labels?q=area for the list of labels.