You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pkg/cvo/internal: Do not block on Degraded=True ClusterOperator
We have blocking on this condition since 545c342 (api: make status
substruct on operatorstatus, 2018-10-15, #31) when it was Failing.
We'd softened our install-time handling to act this way back in
b0b4902 (clusteroperator: Don't block on failing during
initialization, 2019-03-11, #136), motivated by install speed [1].
And a degraded operator may slow dependent components in their own
transitions. But as long as the operator/operand are available at
all, it should not block depndent components from transitioning, so
this commit removes the Degraded=True block from the remaining modes.
We still have the warning ClusterOperatorDegraded alerting admins
when an operator goes Degraded=True for a while, we will just no
longer block updates at that point. We won't block ReconcilingMode
manifest application either, but since that's already flattened and
permuted, and ClusterOperator tend to be towards the end of their
TaskNode, the impact on ReconcilingMode is minimal (except that we
will no longer go Failing=True in ClusterVersion when the only issue
is some Degraded=True ClusterOperator).
[1]: #136 (comment)
nestedMessage=fmt.Errorf("cluster operator %s is available and not degraded but has not finished updating to target version", actual.Name)
254
+
varupdateEffect payload.UpdateEffectType
255
+
256
+
ifdegradedError==nil {
257
+
nestedMessage=fmt.Errorf("cluster operator %s is available and not degraded but has not finished updating to target version", actual.Name)
258
+
updateEffect=payload.UpdateEffectNone// block on versions, but nothing to go Failing=True over
259
+
} else {
260
+
nestedMessage=fmt.Errorf("cluster operator %s is available but %s=%s and has not finished updating to target version", actual.Name, degradedCondition.Type, degradedCondition.Status)
261
+
updateEffect=payload.UpdateEffectFail// block on versions, go Failing=True on Degraded=True
262
+
}
263
+
260
264
return&payload.UpdateError{
261
265
Nested: nestedMessage,
262
-
UpdateEffect: payload.UpdateEffectNone,
266
+
UpdateEffect: updateEffect,
263
267
Reason: "ClusterOperatorUpdating",
264
268
PluralReason: "ClusterOperatorsUpdating",
265
269
Message: fmt.Sprintf("Cluster operator %s is updating versions", actual.Name),
Message: "Multiple errors are preventing progress:\n* Cluster operator A is not available\n* Cluster operator B is updating versions\n* Cluster operator C is degraded",
567
+
Message: "Multiple errors are preventing progress:\n* Cluster operator A is not available\n* Cluster operator B is updating versions",
0 commit comments