Skip to content

Conversation

@wking
Copy link
Member

@wking wking commented Aug 16, 2019

This avoids a race between:

  • The cluster-version operator pushing its internally-generated default and
  • The cluster-bootstrap process pushing the installer-generated ClusterVersion into the cluster (rhbz#1741786)

Because cluster-bootstrap does not override already-existing objects, when the CVO's default won that race, the cluster would come up with a bogus channel (fast, instead of the installer's default stable-4.2, etc.) and clusterID (causing the reported Telemetry to come in under a different UUID than the one the installer provided in its metadata.json output).

By removing the default, the CVO will continue applying the current version and reporting some metrics like cluster_version{type="current"}. But it will not report metrics that depend on the state stored in the ClusterVersion object (past versions, cluster_version{type="failure"}, etc.). And even the metrics it does provide may not make it up to the Telemetry API because the monitoring operator will not be able to pass the Telemeter container the expected clusterID. I'm not clear on how the Telemeter config is updated when the ClusterVersion's clusterID does change because of this guard, but the monitoring operator is willing to continue without it. The monitoring operator only updates the Telemeter Deployment to set (or update) the cluster ID; it never clears an existing cluster ID.

While we won't get Telemetry out of the cluster until the cluster-bootstrap process (or somebody else) pushes the ClusterVersion in, we can still alert on it locally. I haven't done that in this PR, because #232 is in flight touching this space.

The defaulting logic dates back to the early CVOConfig work in ea678b1 (#2). @smarterclayton expressed concern about recovering from ClusterVersion deletion without the default, but:

  • Who deletes their ClusterVersion?

  • Even if someone wanted to delete their ClusterVersion, we'll want to eventually make the CVO an admission gate for ClusterVersion changes (ab4d84a). So (once we set up that admission gate), someone determined to remove ClusterVersion would have to disable that admission config before they could remove the ClusterVersion. That seems like enough steps that you wouldn't blow ClusterVersion away by accident.

  • If you do successfully remove your ClusterVersion, you're going to lose all the status and history it contained. If you scale down your CVO and then remove your ClusterVersion, it's going to be hard to recover that lost information. If you left the CVO running, we could presumably cache the whole thing in memory and push it back into the cluster. That would at least avoid the "compiled-in CVO defaults differ from user's choices" issue. But we'd still be fighting with the user over the presence of ClusterVersion, and I'd rather not.

  • Telemetry will continue pushing reports with the last-seen clusterID, so unless you disabled Telemetry first, future "ClusterVersion is missing" alerts (not added in this commit, see earlier paragraph mentioning alerts) would make it out to let us know that something was being silly.

I'm pushing this up to get feedback on the approach (CC @abhinavdahiya). The WIP is because I haven't updated the unit test to handle the lack of defaulting.

@openshift-ci-robot openshift-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Aug 16, 2019
@openshift-ci-robot openshift-ci-robot added approved Indicates a PR has been approved by an approver from all required OWNERS files. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Aug 16, 2019
@wking wking changed the title WIP: pkg/cvo: Drop ClusterVersion defaulting WIP: Bug 1741786: pkg/cvo: Drop ClusterVersion defaulting Aug 16, 2019
@openshift-ci-robot
Copy link
Contributor

@wking: This pull request references a valid Bugzilla bug. The bug has been moved to the POST state. The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

WIP: Bug 1741786: pkg/cvo: Drop ClusterVersion defaulting

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@openshift-ci-robot openshift-ci-robot added the bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. label Aug 16, 2019
@openshift-ci-robot
Copy link
Contributor

@wking: This pull request references a valid Bugzilla bug.

Details

In response to this:

WIP: Bug 1741786: pkg/cvo: Drop ClusterVersion defaulting

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@wking wking force-pushed the drop-cluster-version-defaults branch from eb16de6 to db2b989 Compare August 16, 2019 23:24
@openshift-ci-robot openshift-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Aug 16, 2019
@wking wking force-pushed the drop-cluster-version-defaults branch from db2b989 to 26e83b2 Compare August 17, 2019 13:40
@wking wking changed the title WIP: Bug 1741786: pkg/cvo: Drop ClusterVersion defaulting Bug 1741786: pkg/cvo: Drop ClusterVersion defaulting Aug 17, 2019
@openshift-ci-robot openshift-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Aug 17, 2019
@wking
Copy link
Member Author

wking commented Aug 17, 2019

Pulled the WIP, because 26e83b2 passes unit tests locally for me. We also have a few rounds of green e2e-aws(-upgrade). I dunno what's going on with the two TestIntegrationCVO_* failures yet. [edit: ah, they're guarded by TEST_INTEGRATION].

@wking wking force-pushed the drop-cluster-version-defaults branch 3 times, most recently from c591707 to 0361562 Compare August 18, 2019 04:18
@wking
Copy link
Member Author

wking commented Aug 18, 2019

All green :). @abhinavdahiya, @smarterclayton, please take a look.

@smarterclayton
Copy link
Contributor

/hold

Why are we creating cluster version during install and why do we have to? Your description alluded to it but didn’t lay out the current justifications. Originally CV was moving to not installer created

@openshift-ci-robot openshift-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Aug 18, 2019
@smarterclayton
Copy link
Contributor

To explore the counter, why does channel need to be set by installer? Metadata.json having it is a bit weird.

The CVO shouldn’t be syncing anything out of the payload until it has written the CV, so the bug here seems to be with bootstrap using idempotent create for objects instead of idenpotent create or update?

@smarterclayton
Copy link
Contributor

Also alternatively, perhaps the bootstrap process should be passing intiital cluster id and channel to cvo to create bootstrap deployment,

@wking
Copy link
Member Author

wking commented Aug 18, 2019

Why are we creating cluster version during install and why do we have to?

Historically, this was used to override broken components, but we haven't needed to do that since openshift/installer#851. Although obviously we could have been managing that from this repo instead of managing it via the installer repo.

Metadata.json having it is a bit weird.

Yeah. In fact, ClusterVersion having it is a bit weird ;). If it's just for telemetry, shouldn't it just be in the Telemetry config? Is telemetry/monitoring represented by a custom resource? Nothing stands out to me in the API. Maybe configuration is via a ConfigMap?

At the moment, Hive is using the telemetry from metadata.json to hold space for "coming OSD cluster". It could pull the Telemetry ID put of the running cluster instead, but then OSD-ness would race cluster Telemetry reporting vs. Hive's extraction. Until we get OSD-ness via the cluster_installer metrics (openshift/installer#1890 #213), which may be where we want it long-term (we'd still need a way to associate Hive-reported admin creds with the appropriate Telemetry ID).

The CVO shouldn’t be syncing anything out of the payload until it has written the CV, so the bug here seems to be with bootstrap using idempotent create for objects instead of idenpotent create or update?

I don't like multiple parties having opinions about cluster config specs. Components that have opinions about their own config could represent their defaults in status, but should stay out of spec, which should be admin-managed for these top-level configs (and installer-managed as a proxy for the admin at install-time). I'd be fine with cluster-bootstrap clobbering spec (repeatedly?) until all resource specs matched its expectations, but that's a reasonably large change vs. its current behavior.

Also alternatively, perhaps the bootstrap process should be passing intiital cluster id and channel to cvo to create bootstrap deployment...

As in "but not via ClusterVersion"? I'm fine just leaving channel/upstream defaulting to the CVO. And if we adjust Telemetry ID injection, I'd rather move it to an in-cluster Telemetry custom resource.

@smarterclayton
Copy link
Contributor

smarterclayton commented Aug 19, 2019 via email

wking added a commit to wking/cluster-version-operator that referenced this pull request Aug 19, 2019
As an alternative to:

* removing the ClusterVersion defaulting [1], or
* moving the telemetry ID out into a Telemetry-specific config object [2]

this commit allows us to address the race between the
installer-created ClusterVersion and the
cluster-version-operator-generated default ClusterVersion by removing
the former while still allowing an installer-generated Telemetry ID.

We currently need an installer-generated Telemetry ID to support
things like OpenShift Dedicated (OSD) [3], where we currently use the
telemetry ID that the installer exposes in metadata.json [4] to feed
the cluster manager [5].  There is concern that if Hive [6] extracted
the Telemetry ID from the running cluster (vs. feeding in an
installer-chosen ID), that this would race with the cluster's reported
Telemetry and that, for example, Hive-launched OSD Telemetry might be
erroneously claimed to be a user-provisioned cluster.

I'm less clear on why we don't prefer pushing the Telemetry ID into a
Telemetry-specific config.  It seems like it would be less work than
this commit (which has a lot of middleman plumbing).  I'm not entirely
clear on the API we're committed to supporting for ClusterVersion's
spec.clusterID property.  But this CVO plumbing was what we were able
to form a good-enough-for-now consensus around, and we can come back
later with a Telemetery-config approach if we can build consensus
around that.

[1]: openshift#238
[2]: openshift#238 (comment)
[3]: https://www.openshift.com/products/dedicated/
[4]: https://github.com/openshift/installer/blob/4e204c5e509de1bd31113b0c0e73af1a35e52c0a/pkg/types/clustermetadata.go#L17-L18
[5]: https://cloud.redhat.com/openshift/
[6]: https://github.com/openshift/hive/
@abhinavdahiya
Copy link
Contributor

Yeah. In fact, ClusterVersion having it is a bit weird ;). If it's just for telemetry, shouldn't it just be in the Telemetry config? Is telemetry/monitoring represented by a custom resource? Nothing stands out to me in the API. Maybe configuration is via a ConfigMap?

The cluster version ID is the UUID for the cluster. We use it to identify the cluster in telemetry on red hat side, also the cincinatti stacks needs a way to identify the cluster.

So I think the ID definitely belongs to the clusterversion object.

@wking wking changed the title Bug 1741786: pkg/cvo: Drop ClusterVersion defaulting Bug 1741786: pkg/cvo: Drop ClusterVersion defaulting during bootstrap Aug 21, 2019
@wking
Copy link
Member Author

wking commented Sep 11, 2019

/cherrypick release-4.1

@openshift-cherrypick-robot

@wking: failed to push cherry-picked changes in GitHub: pushing failed, output: "To https://github.com/openshift-cherrypick-robot/cluster-version-operator\n ! [rejected] cherry-pick-238-to-release-4.1 -> cherry-pick-238-to-release-4.1 (non-fast-forward)\nerror: failed to push some refs to 'https://openshift-cherrypick-robot:[email protected]/openshift-cherrypick-robot/cluster-version-operator'\nhint: Updates were rejected because the tip of your current branch is behind\nhint: its remote counterpart. Integrate the remote changes (e.g.\nhint: 'git pull ...') before pushing again.\nhint: See the 'Note about fast-forwards' in 'git push --help' for details.\n", error: exit status 1

Details

In response to this:

/cherrypick release-4.1

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@wking
Copy link
Member Author

wking commented Sep 11, 2019

Oops, we already had one :p.

wking added a commit to wking/cluster-version-operator that referenced this pull request Oct 27, 2021
…to --wait-for-cluster-version

We've been using --enable-default-cluster-version to avoid a
cluster-bootstrap vs. cluster-version operator race since d7760ce
(pkg/cvo: Drop ClusterVersion defaulting during bootstrap, 2019-08-16, openshift#238).
But [1] is considering passing component configuration to the CVO via
ClusterVersion that would affect the manifests getting applied.  So
this commit pivots to a new option that blocks the whole sync cycle on
the existence of a ClusterVersion resource.  That way, we know we have
up-to-date data before reconciling any manifests (although it might
slow down the bootstrapping process a bit).

[1]: openshift/enhancements#922
wking added a commit to wking/cluster-version-operator that referenced this pull request Oct 27, 2021
…to --wait-for-cluster-version

We've been using --enable-default-cluster-version to avoid a
cluster-bootstrap vs. cluster-version operator race since d7760ce
(pkg/cvo: Drop ClusterVersion defaulting during bootstrap, 2019-08-16, openshift#238).
But [1] is considering passing component configuration to the CVO via
ClusterVersion that would affect the manifests getting applied.  So
this commit pivots to a new option that blocks the whole sync cycle on
the existence of a ClusterVersion resource.  That way, we know we have
up-to-date data before reconciling any manifests (although it might
slow down the bootstrapping process a bit).

[1]: openshift/enhancements#922
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Feb 24, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Feb 25, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Feb 25, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Feb 25, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Feb 28, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 1, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 2, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 2, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 2, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 2, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 2, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 3, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 3, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 3, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 4, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 4, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 4, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 4, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 4, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 4, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 7, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 9, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
jottofar added a commit to jottofar/cluster-version-operator that referenced this pull request Mar 11, 2022
Since at least 90e9881 (cvo: Change the core CVO loops to
report status to ClusterVersion, 2018-11-02, openshift#45), the CVO
created a default ClusterVersion when there was none in the
cluster. In d7760ce (pkg/cvo: Drop ClusterVersion
defaulting during bootstrap, 2019-08-16, openshift#238), we removed
that defaulting during cluster-bootstrap, to avoid racing
with the installer-supplied ClusterVersion and its
user-specified configuration. In this commit, we're removing
ClusterVersion defaulting entirely, and the CVO will just
patiently wait until it gets a ClusterVersion before
continuing. Admins rarely delete ClusterVersion in practice,
creating a sane default is becoming more difficult as the
spec configuration becomes richer, and waiting for the admin
to come back and ask the CVO to get back to work allows us
to simplify the code without leaving customers at risk.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. lgtm Indicates that a PR is ready to be merged. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants