Skip to content

docs: document upgradeChannel and version probe#216

Merged
GrigoryPervakov merged 3 commits into
ClickHouse:mainfrom
arekborucki:docs/upgrade-channel
Jun 3, 2026
Merged

docs: document upgradeChannel and version probe#216
GrigoryPervakov merged 3 commits into
ClickHouse:mainfrom
arekborucki:docs/upgrade-channel

Conversation

@arekborucki
Copy link
Copy Markdown
Contributor

Adds a "Version probe and upgrade channel" section to the configuration guide covering spec.upgradeChannel, spec.versionProbeTemplate, the VersionInSync / VersionUpgraded status conditions, and the operator-wide --version-update-interval / --disable-version-update-checks flags.

Why

The operator does two version-related things that currently have no documentation:

  • It runs a Job to detect the running ClickHouse / Keeper version (spec.versionProbeTemplate).
  • It periodically polls the upstream release feed to surface upgrade availability (spec.upgradeChannel and the VersionUpgraded status condition).

A search for upgradeChannel or versionProbe under docs/ returns no matches, meaning users currently need to read api/v1alpha1/clickhousecluster_types.go, internal/upgrade/, and cmd/main.go to understand these features, accepted release channel values, status condition meanings, and how to disable upgrade checks in air-gapped environments.

What

Adds a new ## Version probe and upgrade channel section to docs/guides/configuration.mdx, placed between ## Additional ports and ## ClickHouse settings, with four subsections:

  • Choosing a release channel: explains the supported upgradeChannel values (empty, lts, stable, and major.minor), including the CRD validation pattern and guidance on when to use each option.
  • Status conditions: documents all reasons for VersionInSync (VersionMatch, VersionMismatch, VersionPending, VersionProbeFailed) and VersionUpgraded (UpToDate, MinorUpdateAvailable, MajorUpdateAvailable, VersionOutdated, WrongReleaseChannel, UpgradeCheckFailed), based on api/v1alpha1/conditions.go.
  • Overriding the version probe Job: provides a spec.versionProbeTemplate example showing tolerations, node selectors, ttlSecondsAfterFinished, and container resource overrides.
  • Operator-wide controls: documents the --version-update-interval (default 24h) and --disable-version-update-checks flags for tuning or disabling upgrade checks, including air-gapped deployments.

No code or chart changes. Documentation only.

Comment thread docs/guides/configuration.mdx Outdated
| Condition | Reason | Meaning |
|---|---|---|
| `VersionInSync` | `VersionMatch` | All replicas report the same version as the image |
| `VersionInSync` | `VersionMismatch` | Replicas are running different versions (typically during a rolling upgrade) |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is suppressed during upgrades. This may happen if a mutable image tag has been specified. For example, latest or only a major version 26.3

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated. Table now says VersionMismatch is suppressed during a planned rolling upgrade, and surfaces when a mutable tag (latest / bare 26.3) pins replicas to different patches of the same tag

Comment thread docs/guides/configuration.mdx Outdated
| `VersionUpgraded` | `MinorUpdateAvailable` | A newer patch is available in the same `major.minor` line |
| `VersionUpgraded` | `MajorUpdateAvailable` | A newer `major.minor` is available within the chosen channel |
| `VersionUpgraded` | `VersionOutdated` | The running version is older than every release in the selected channel |
| `VersionUpgraded` | `WrongReleaseChannel` | The configured `upgradeChannel` does not match any upstream channel (e.g. typo) |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, this means that the chosen image does not match the specified upgradeChannel

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated. The description now says the running image does not belong to the selected upgradeChannel, with the 26.5 + upgradeChannel: lts example I observed locally

Comment thread docs/guides/configuration.mdx Outdated
| `VersionUpgraded` | `UpToDate` | The cluster is on the latest version available in the selected channel |
| `VersionUpgraded` | `MinorUpdateAvailable` | A newer patch is available in the same `major.minor` line |
| `VersionUpgraded` | `MajorUpdateAvailable` | A newer `major.minor` is available within the chosen channel |
| `VersionUpgraded` | `VersionOutdated` | The running version is older than every release in the selected channel |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better to say that the chosen version is out of date and won't get any fixes

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rephrased to highlight the consequence: the running version is out of date and will no longer receive fixes from the selected channel, typically because the major line was dropped from lts/stable upstream

Comment thread docs/guides/configuration.mdx Outdated
| `lts` | Tracks the upstream `lts` channel — long-term support releases. Receives major upgrades less frequently, with longer support windows. |
| `25.8` (or any `<major>.<minor>`) | Pins the channel to a specific major.minor line. Major upgrades beyond it are not proposed even if a newer version exists upstream. |

A cluster left on the default (empty) channel is the safest choice for production: the operator will only flag patch-level updates, and never surprises you with a major version jump even if you redeploy the operator.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doubtful comment. I'd expect that pinning the exact release maj.min is better for production, as it also checks that replicas are deployed within the expected major release, especially if image hash is used instead of human-readable tags

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. Flipped the recommendation. The paragraph now favors pinning to an explicit <major>.<minor> for production (catches drift via WrongReleaseChannel, important when image is referenced by digest), with empty default suitable for development.

@GrigoryPervakov GrigoryPervakov merged commit 4bd8467 into ClickHouse:main Jun 3, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants