Commit Graph
13856 Commits
Author SHA1 Message Date
Prabhala Tara Aasrita ebf90170bc pool: support CRUSH MSR rules for EC pools
Added failureDomains and osdsPerDomain fields to the
ErasureCodedSpec, which maps to the crush-num-failure-domains and
crush-osds-per-failure-domain Ceph EC profile parameters. This enables
creating EC pools that distribute chunks across fewer, larger hosts
without needing one host per data chunk.

Signed-off-by: Prabhala Tara Aasrita <taraprabhala@Prabhalas-MacBook-Pro.local>
(cherry picked from commit 715f38de91)
2026-07-28 19:46:04 +00:00
Travis Nielsen 3b678364c8 Merge pull request #18062 from travisn/release-1.20.3
build: Set the release version to v1.20.3
v1.20.3
2026-07-28 13:30:59 -06:00
mergify[bot] 2be504d198 Merge pull request #18064 from rook/mergify/bp/release-1.20/pr-17904
build: retry the docs deploy when the gh-pages push is rejected (backport #17904)
2026-07-28 18:45:19 +00:00
Joshua Hoblitt b905ee8f23 build: retry the docs deploy when the gh-pages push is rejected
Publishing docs runs mike deploy against the rook.github.io gh-pages
branch. When two builds run close together, the branch can advance
between one build's fetch and its push, and the push is rejected as
non-fast-forward, failing the whole push-image-to-container-registry
job even though the images were already published (most recently on the
2026-07-06 master push burst). Reset the local gh-pages branch to the
remote tip and retry the deploy up to three times, so a lost race
redeploys onto the new tip instead of failing the build.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 8b2bedfa9a)
2026-07-28 18:43:23 +00:00
Travis Nielsen 8c5ca91584 build: update the version to v1.20.3
For the patch release update the docs and examples
to v1.20.3

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2026-07-28 11:55:57 -06:00
Travis Nielsen 7136b09418 Merge pull request #18060 from rook/mergify/bp/release-1.20/pr-18042
helm: add toolbox repository and tag settings (backport #18042)
2026-07-28 11:47:23 -06:00
Joshua Hoblitt 8d8dec6fc3 helm: add toolbox repository and tag settings
The operator image in the rook-ceph chart and the Ceph image in the
rook-ceph-cluster chart are both configured as a repository and tag
pair. The toolbox was the exception, taking a single toolbox.image
string.

Add toolbox.repository and toolbox.tag, so the toolbox image can be
configured the same way as the others. Either setting may be applied on
its own; whichever is left unset falls back to cephImage.repository or
cephImage.tag.

The new settings take precedence over toolbox.image, which continues to
apply when neither is set, so existing values files are unaffected.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit faf2bffe5a)
2026-07-28 17:13:32 +00:00
Travis Nielsen 7f943b4729 Merge pull request #18059 from rook/mergify/bp/release-1.20/pr-18029
nfs: support custom NFS server port (backport #18029)
2026-07-28 11:10:11 -06:00
raaizik ec9028a9f8 doc: document CephNFS custom port and exposure examples
Document spec.server.port for host-network port conflicts, and describe
how user-managed LoadBalancer and NodePort Services must align port and
targetPort with the CR.

Signed-off-by: raaizik <raaizik@yahoo.com>
Co-Authored-By: Blaine Gardner <b.blaine.gardner@gmail.com>
(cherry picked from commit a400ae6fd5)
2026-07-28 14:50:05 +00:00
raaizik 8e52af5cfb nfs: add unit tests for custom NFS port
Add coverage for GetPort defaults and custom values, Service and probe
port wiring, Ganesha NFS_Port config, and create-or-update when
spec.server.port changes on an existing Service.

Signed-off-by: raaizik <raaizik@yahoo.com>
(cherry picked from commit b97296c47c)
2026-07-28 14:50:04 +00:00
raaizik 7c4787691d nfs: support custom NFS server port
When NFS runs with host networking, port 2049 may already be in use.
Add CephNFS spec.server.port (default 2049), wire it through Ganesha
config, the operator Service, and probes, and regenerate CRDs.

Signed-off-by: raaizik <raaizik@yahoo.com>
(cherry picked from commit 5e36fa4bc3)
2026-07-28 14:50:04 +00:00
Travis Nielsen 34c8545a9e Merge pull request #18031 from rook/mergify/bp/release-1.20/pr-17785
fix(ceph): deduplicate external MGR endpoints in EndpointSlice (backport #17785)
2026-07-27 15:09:29 -06:00
Travis Nielsen d6bfed466c Merge pull request #17948 from rook/mergify/bp/release-1.20/pr-17919
monitoring: deduplicate pool growth prediction series (backport #17919)
2026-07-22 09:31:39 -06:00
Travis Nielsen 485a5bb87f Merge pull request #18002 from rook/mergify/bp/release-1.20/pr-17790
docs: update node loss handling instructions (backport #17790)
2026-07-22 09:29:23 -06:00
Travis Nielsen a96bbe74e0 Merge pull request #18004 from rook/mergify/bp/release-1.20/pr-17962
rgw: rgw account deletion should remove account from ceph (backport #17962)
2026-07-22 09:27:35 -06:00
Travis Nielsen 97f026f602 Merge pull request #18027 from rook/mergify/bp/release-1.20/pr-18024
core: Update the go text module (backport #18024)
2026-07-22 09:24:59 -06:00
beyondcloud-co 66c9171785 external: deduplicate external MGR endpoints in EndpointSlice
When the active MGR IP already exists at a non-zero position in the
externalMgrEndpoints list, the rotation logic that replaces endpoints[0]
creates duplicate IPs. Also guards against mgr map failure which could
overwrite endpoints[0] with an empty string.

Fixes: #17761

Signed-off-by: beyondcloud-co <87993136+beyondcloud-co@users.noreply.github.com>
(cherry picked from commit 8134d683e3)
2026-07-22 15:06:14 +00:00
Travis Nielsen 041c05cf5c core: update the go text module
The go text package v0.37 has a vulnerability, thus update
to the latest version of the package.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 8c397f6381)
2026-07-21 15:51:31 -06:00
Travis Nielsen 416b3282ca Merge pull request #18023 from travisn/backport-rgw-typo
rgw: Fix an object store comment typo
2026-07-21 15:22:15 -06:00
Michael Adam 2d05950963 rgw: fix a comment typo
This fixes a comment typo caught bt the codespell CI check.

Signed-off-by: Michael Adam <obnox@samba.org>
(cherry picked from commit c90913051b)
2026-07-21 15:08:20 -06:00
mergify[bot] 9b826b29a4 Merge pull request #18016 from rook/mergify/bp/release-1.20/pr-17968
mon: fix data race on failedMonSchedule during scheduling (backport #17968)
2026-07-21 16:31:16 +00:00
Joshua Hoblitt b112056761 Merge pull request #18005 from rook/mergify/bp/release-1.20/pr-17961
docs: fix mirror Placement comments naming rgw pods (backport #17961)
2026-07-21 09:29:54 -07:00
Joshua Hoblitt d27277a746 Merge pull request #18007 from rook/mergify/bp/release-1.20/pr-17965
csi: do not log peer bootstrap token secret (backport #17965)
2026-07-21 09:28:16 -07:00
Anas Khan f79696157d mon: fix data race on failedMonSchedule during scheduling
assignMons schedules each mon in its own goroutine and shares a
failedMonSchedule bool to record whether any of them failed. The
resultLock mutex already guards the shared c.mapping.Schedule map
write, but the three failedMonSchedule = true assignments were done
without holding the lock. When two or more mons fail to schedule at
the same time (for example when waitForMonitorScheduling errors, the
node choice is nil, or getNodeInfoFromNode fails) their goroutines
write the flag concurrently, which is a write-write data race.

Guard the failedMonSchedule writes with the existing resultLock, the
same lock the goroutines already use for the map update. The post-Wait
read is left as is since the WaitGroup orders it after every write.

Add a regression test that fails scheduling for multiple mons at once
and confirms assignMons returns an error; run it with -race to catch
the race.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
(cherry picked from commit 0bbd5de84c)
2026-07-21 16:25:00 +00:00
Anas Khan 245c45d536 csi: do not log peer bootstrap token secret
decodePeerToken logged the whole decoded PeerToken with "%+v" at debug
level. PeerToken embeds Key, the peer cluster's cephx auth secret, so
running the operator with ROOK_LOG_LEVEL=DEBUG wrote that credential to
the operator logs in plaintext (CWE-532).

Log only the non-sensitive fields (fsid, client id, mon host, namespace),
which keep the message useful for diagnostics, and drop Key. Add a
regression test that captures the debug output and asserts the key is
never present.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
(cherry picked from commit 1013a8effc)
2026-07-21 00:24:38 +00:00
Anas Khan 1f79c38d38 docs: fix mirror Placement comments naming rgw pods
The Placement field comments on RBDMirroringSpec and
FilesystemMirroringSpec both read "The affinity to place the rgw pods",
copied from GatewaySpec. Neither spec manages RGW pods: RBDMirroringSpec
configures the rbd mirror daemon and FilesystemMirroringSpec the
cephfs-mirror daemon.

Update the comments to name the correct pods, matching the wording
already used by the sibling Resources and PriorityClassName fields in
each struct, and regenerate Documentation/CRDs/specification.md so the
published CRD API reference matches.

Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
(cherry picked from commit b26cad41ef)
2026-07-20 22:00:37 +00:00
parth-gr 3010491f03 rgw: rgw account deletion should remove account from ceph
currently there was a bug in the code where it didnt removed
the account from the ceph cluster during intial intialize

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit cca7020f0b)
2026-07-20 20:12:38 +00:00
N3rdBot b5d4803cb6 docs: update node loss handling instructions
Expand the Node Loss section in block-storage.md to accurately describe the automatic fencing flow, and add dedicated Network Fencing sections across the CSI documentation to provide configuration examples for both manifest-based and Helm-based deployments.

* block-storage.md: introduce the Network Fencing prerequisite paragraph with links to the new example sections, replace the single-line "auto-fencing" description with three bullets describing the client blocklist flow, and update Node Recovery to a single sentence covering workload rescheduling and the 5-minute cool-down behavior that triggers automatic unblocklist. Add a Warning admonition instructing administrators not to remove the out-of-service taint before the node completes a full power cycle.
* csi-configuration.md: add a Network Fencing section enumerating the three prerequisites (CSI-Addons controller, CSI-Addons sidecar, enableFencing flag) and showing the RBD Driver CR manifest with deployCsiAddons and enableFencing set together.
* csi-drivers-chart.md: add a Network Fencing subsection under Custom settings showing the per-driver Helm values for deployCsiAddons and enableFencing, with a cross-reference to csi-configuration.md.
* ceph-csi-drivers.md: replace the legacy CSI_ENABLE_CSIADDONS configmap patch in the Enable CSI-Addons Sidecar section with the modern deployCsiAddons approach on OperatorConfig or Driver, and add a Network Fencing overview section that links out for configuration details and the operational flow.

Signed-off-by: N3rdBot <wujiafeng17@gmail.com>
(cherry picked from commit bc8d40095d)
2026-07-20 14:20:39 +00:00
Joshua Hoblitt 8f43115c69 Merge pull request #17949 from rook/mergify/bp/release-1.20/pr-17917
helm: add multisite CR support to rook-ceph-cluster chart (backport #17917)
2026-07-13 16:40:28 -07:00
Joshua Hoblitt d82cfb9d4e test: exercise multisite chart values in CephHelmSuite
Configure the CephHelmSuite object store as an RGW multisite zone so the
chart's CephObjectRealm, CephObjectZoneGroup, and CephObjectZone templates
are exercised on a Helm install. The operator must reconcile the realm,
zone group, zone, and store to Ready, which the existing install check
already gates on via the RGW pod count.

The realm/zone group/zone and shared-pool layout mirror the fixture in
tests/integration/object/util/sharedstore: a zone backed by explicit
CephBlockPools referenced through sharedPools.poolPlacements. The rgw pools
are appended to the block pools already configured for CSI, and are torn
down along with the multisite CRs when the default storage CRs are removed.

Gate the multisite configuration behind a new UseMultisiteObjectStore
setting enabled only for CephHelmSuite. The other Helm-based suites keep the
plain object store; the upgrade suite in particular installs an older base
chart that lacks the multisite templates and cannot resolve a zone-based
store.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 8a72d80127)

# Conflicts:
#	tests/integration/ceph_helm_test.go
2026-07-13 13:23:11 -07:00
Joshua Hoblitt 2fe4b8f354 helm: add multisite CR support to rook-ceph-cluster chart
Add optional CephObjectRealm, CephObjectZoneGroup, and CephObjectZone
resources to the rook-ceph-cluster chart so an RGW multisite topology can
be deployed from the chart alongside CephObjectStore.

Each resource type follows the existing per-list template idiom: a new
template ranges over a values list and renders name, namespace, and spec.
The realm template renders spec only when set, supporting both a new realm
(no spec) and a pulled realm (spec.pull.endpoint).

The three lists ship commented out in values.yaml with a multisite
example, matching the opt-in cephECBlockPools precedent, so a default
install creates no multisite resources.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 8989bff653)
2026-07-13 20:10:40 +00:00
Jeff Wallace cf1acb42c7 monitoring: align pool growth alert with ceph mixin
Aggregate pool usage by pool before predict_linear to avoid duplicate series after mgr pod replacement, and add a one-hour hold time to match the source rule update in ceph/ceph#68621.

Signed-off-by: Jeff Wallace <jeff@tjwallace.ca>
(cherry picked from commit 5119f3aeb4)
2026-07-13 17:44:49 +00:00
Travis Nielsen ac8b390cf6 Merge pull request #17934 from rook/mergify/bp/release-1.20/pr-17920
file: reveal swallowed errors on cephfs reconciliation (backport #17920)
2026-07-10 13:07:06 -06:00
Maxime Bertin 084e02a287 file: reveal swallowed errors on cephfs reconciliation
CephFS reconciliation loop on Filesystem creation was swallowing errors.
The err variable which contained the error was replaced with the resulted error from the
kubernetes update status call on the CRD.
This commit fixes that and aggregate both errors in case there is both a kubernetes status update failure and a creation error.

Signed-off-by: Maxime Bertin <mbertin@luccasoftware.com>
(cherry picked from commit 0696b24d9c)
2026-07-10 17:23:17 +00:00
Travis Nielsen 9c82f055a4 Merge pull request #17927 from rook/mergify/bp/release-1.20/pr-17328
CI: Check markdown links (backport #17328)
2026-07-09 14:13:38 -06:00
Michael Adam e468123329 docs: fix some broken links
This change fixes some of the broken links in the markdown
documentatoion sources found by the markdown link checker.

Assisted-by: IBM Bob
Signed-off-by: Michael Adam <obnox@samba.org>
(cherry picked from commit a70d68b882)
2026-07-09 13:20:48 -06:00
Travis Nielsen 99ab48e1d5 Merge pull request #17921 from rook/mergify/bp/release-1.20/pr-17689
mon: update how hostname was set for drbd (backport #17689)
2026-07-09 10:13:38 -06:00
subhamkrai 55526a4e98 mon: update how hostname was set for drbd
currently, drbd hostname was ready using command
but now the change we use kubernetes built-in api
to read hostname from `spec.nodeName`.`

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit c49ef5f079)
2026-07-09 15:38:16 +00:00
Travis Nielsen b40e86043a Merge pull request #17916 from obnoxxx/prep-v1.20.2
build: set the release version to v1.20.2
v1.20.2
2026-07-07 13:06:30 -06:00
Michael Adam 4457429406 build: set the release version to v1.20.2
For the patch release update the docs and images to
v1.20.2.

Signed-off-by: Michael Adam <obnox@samba.org>
2026-07-07 12:33:29 -06:00
mergify[bot] cbedc824ba Merge pull request #17913 from rook/mergify/bp/release-1.20/pr-17824
ci: convert CI to kind and bump latest kubernetes to v1.36.1 (backport #17824)
2026-07-07 18:32:18 +00:00
Joshua Hoblitt 343291cf48 ci: bump the latest tested kubernetes version to v1.36.1
Bump the most recent kubernetes version exercised by the integration and
canary matrices from v1.35.5 to v1.36.1. The kindest/node image for 1.36 is
provided by the kind v0.32.0 pinned by the kind-conversion commit. The older
matrix versions are unchanged.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit a280c3ae2d)
2026-07-07 12:03:40 -06:00
Travis Nielsen 742ec59faf Merge pull request #17915 from rook/mergify/bp/release-1.20/pr-17914
ci: use kind's latest published v1.32 image (v1.32.11) on-release (backport #17914)
2026-07-07 11:59:12 -06:00
Joshua Hoblitt cc841a9eb6 ci: use kind's latest published v1.32 image (v1.32.11) on-release
The minikube-to-kind conversion moved the master/release integration
tests to kind, which selects the Kubernetes version via the
kindest/node:<version> image tag. There is no published
kindest/node:v1.32.13 image (Docker Hub returns 404); the latest 1.32
node image kind ever built is v1.32.11, since later kind releases
advanced to 1.33+ and never produced a newer 1.32 patch.

Pin the on-release matrix's 1.32 entry to v1.32.11 so the 1.32-line
coverage keeps a node image that actually exists. The other matrix
versions (v1.31.14, v1.34.8, v1.36.1) already have published images.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 117e1126c2)
2026-07-07 11:55:01 -06:00
mergify[bot] 21304d6642 Merge pull request #17911 from rook/mergify/bp/release-1.20/pr-17875
csi: update csi-operator version to v1.0.4 (backport #17875)
2026-07-07 17:36:51 +00:00
subhamkrai 6b106fc03f csi: update csi-operator version to v1.0.4
Updating csi-operator to latest v1.0.4 and
updating the required doc changes as well.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit a3e02e607d)
2026-07-07 11:15:12 -06:00
mergify[bot] e16ae7d32e Merge pull request #17903 from rook/mergify/bp/release-1.20/pr-17822
ci: convert integration and canary CI from minikube to kind (backport #17822)
2026-07-07 16:35:31 +00:00
mergify[bot] b8663f911d Merge pull request #17909 from rook/mergify/bp/release-1.20/pr-17847
core: trigger reconcile when node labels or annotations change (backport #17847)
2026-07-07 16:33:36 +00:00
mergify[bot] add8cc3438 Merge pull request #17910 from rook/mergify/bp/release-1.20/pr-17877
ci: fix broken-pipe race in find_extra_block_dev (backport #17877)
2026-07-07 16:01:38 +00:00
Joshua Hoblitt 47f91adcb6 ci: fix broken-pipe race in find_extra_block_dev
find_extra_block_dev piped find_extra_block_devs into head -1. Since
find_extra_block_devs prints every eligible disk and ends with echo
"$devs", head closes the pipe after the first line and the producer's
echo races into SIGPIPE (echo: write error: Broken pipe), failing the
command substitution under pipefail/errexit.

The race only fires reliably now that the runners present two data disks
(sdb and sdc), so find_extra_block_devs emits multiple lines; with a
single disk the one-line output almost never triggered it.

Read the producer to completion with mapfile via process substitution
and return the first element, mirroring find_second_block_dev, so there
is no downstream head to close the pipe early.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 7079c9bf62)
2026-07-07 15:39:31 +00:00