Commit Graph
5064 Commits
Author SHA1 Message Date
Oded Viner d4ba34c43a security: grant scc to rook-ceph-nvmeof service account
the rook-ceph-nvmeof service account is not listed in the
securitycontextconstraints users, causing cephnvmeofgateway
pods to fail on openshift. add the service account to the
scc in the helm charts, go scc builder, and test namespace
substitution.

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit 7f3e2ace27)
2026-04-27 15:50:36 +00:00
Santosh c2cf45e716 core: remove newlines from liveness probe scripts
Strip unnecessary leading and trailing newlines from osdLivenessProbeScript and livenessProbeScript raw string literals in spec.go

Signed-off-by: Santosh <sapillai@redhat.com>
(cherry picked from commit 925acb3e92)
2026-04-24 13:44:34 +00:00
Travis Nielsen 2fb3f54c73 Merge pull request #17289 from subhamkrai/add-helm-annotation-to-csi-1.19
csi: add helm ownership annotation to csi resources
2026-04-24 07:40:45 -06:00
subhamkrai cf42d313a9 csi: add helm ownership annotation to csi resources
We are moving the CSI management to the admin and currently, the
CSI resources are created at runtime so the cluster installed with
helm will face an error that resources are not managed by helm.
To avoid this error, we are adding the annotation at runtime so
that during upgrade users do not face issues.

Signed-off-by: subhamkrai <srai@redhat.com>
2026-04-23 20:07:33 +05:30
David Orman 9a7c43cb60 osd: fix CRUSH device class not applied during OSD re-discovery
When an OSD is purged and reprovisioned, it comes back without the
correct CRUSH device class. NVMe devices configured with
deviceClass: nvme in the CR end up as ssd.

Root cause: the operator sets ROOK_OSD_CRUSH_DEVICE_CLASS on prepare
jobs but not on OSD deployments. During re-discovery
(GetCephVolumeRawOSDs), the daemon reads this env var, finds it
absent, and falls back to auto-detected deviceType which returns ssd
for NVMe.

Fix: add crushDeviceClassEnvVar(osd.DeviceClass) to the OSD
deployment spec in spec.go, alongside the existing
dataDeviceClassEnvVar. Existing deployments pick up the new env var
on operator reconciliation without manual intervention.

Fixes #17227
Signed-off-by: David Orman <ormandj@corenode.com>
(cherry picked from commit 1357d71177)
2026-04-21 12:21:03 +00:00
Denis Egorenko 99e0268bde mds: fix incorrect behaviour for CephFS health state when no active standby
Set expected standby mds daemons, when changing activeStandby mds parameter.

Resolves #17372

Signed-Off-By: Denis Egorenko <degorenko@mirantis.com>
(cherry picked from commit b3ffac9e0d)
2026-04-20 20:16:12 +00:00
Elias Carter 14cddd314b doc: fix out of date references to default PgHealthyRegex
Signed-off-by: Elias Carter <elias@dropbox.com>
(cherry picked from commit 5a065948e2)
2026-04-20 17:52:48 +00:00
Travis Nielsen 3c4ae5a9a9 Merge pull request #17378 from rook/mergify/bp/release-1.19/pr-17300
build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 (backport #17300)
2026-04-17 15:19:13 -06:00
dependabot[bot] a32e98cb63 build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4
Bumps [github.com/go-jose/go-jose/v4](https://github.com/go-jose/go-jose) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/go-jose/go-jose/releases)
- [Commits](https://github.com/go-jose/go-jose/compare/v4.1.3...v4.1.4)

---
updated-dependencies:
- dependency-name: github.com/go-jose/go-jose/v4
  dependency-version: 4.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 7feeafe9b5)
2026-04-17 13:31:30 -06:00
Travis Nielsen d5852b3b32 mon: prevent mon drains more reliably when mons are down
The mon PDB was previously only being adjusted
during mon failover, where the maxunavailable was set to 0
before failover, then reset to 1 after failover. This allowed
for a race condition where one mon had been drained and is
not fully back in quorum before the next mon is allowed to drain.
This is now prevented by disallowing drains until a mon
is fully back in quorum. Anytime a mon falls out of quorum,
the mon pdb will be adjusted to prevent further drains
from causing a mon quorum outage.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 80b50969b2)
2026-04-17 18:15:53 +00:00
Sonny Sasaka 7128bd9178 csi: fix swapped provisionerPriorityClassName with pluginPriorityClassName
Previously provisionerPriorityClassName config is applied to node plugin
but pluginPriorityClassName is applied to controller plugin. This causes
a misconfiguration since the default values for
provisionerPriorityClassName is system-cluster-critical and
pluginPriorityClassName is system-node-critical.

The default priority for node plugin ought to be system-node-critical so
we can leverage this information to kill the pods in this priority last,
allowing other pods that may mount RBD-backed volume to unmount cleanly
first, otherwise the shutdown sequence may hang due to failure
unmounting RBD-backed volume when the node plugin pod is already killed.

Signed-off-by: Sonny Sasaka <sonnysasaka@gmail.com>
(cherry picked from commit dff04494fe)
2026-04-17 04:37:23 +00:00
Alexander Degenhart 9a5acd919b csi: add 'CSIMetadataRadosNamespace' parameter to CephFilesystemSubVolumeGroup
This parameter is written to .spec.cephFS.radosNamespace of the generated
ClientProfile.

The parameter is called 'CSIMetadataRadosNamespace' to clarify that it is used
for CSI metadata and unrelated to the actual CephFS (meta)data.

Context:

The ceph-csi CephFS plugin stores additional metadata related to PV(C)s
in RADOS objects in the metadata pool of the CephFS.
By default those objects are stored in the 'csi' RADOS namespace.

For a multi-tenant CephFS setup (that is used by multiple K8s Clusters/
ceph-csi drivers) segregating those additional objects into separate RADOS
namespaces is desireable so the clusters can not modify the metadata of other
clusters (enforced by appropriate ceph client capabilities).

'ceph-csi' implemented this via the `cephFS.radosNamespace` config option for
cluster entries in the `ceph-csi-config` ConfigMap with https://github.com/ceph/ceph-csi/pull/4661.

The `ceph-csi-operator` added support for that config entry by adding
'radosNamespace' to the 'CephFsConfigSpec' of the 'ClientProfile' with
https://github.com/ceph/ceph-csi-operator/pull/165.

Signed-off-by: Alexander Degenhart <degenhart@fim.uni-passau.de>
(cherry picked from commit 17b98da89e)
2026-04-15 23:14:39 +00:00
Travis Nielsen 89ead2f314 Merge pull request #17299 from rook/mergify/bp/release-1.19/pr-17160
test: add integration tests for CephObjectStoreUser capabilities (backport #17160)
2026-04-08 13:09:00 -06:00
Travis Nielsen 99c90c6d8e osd: add logging when detecting osd versions
When osd versions are being detected, log more info
about the versions to understand better if the
require-osd-version release is being set as
expected.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit a80ca49855)
2026-04-08 17:07:28 +00:00
Joshua Hoblitt 01eeb21aeb test: add integration tests for CephObjectStoreUser capabilities
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 0139637e34)
2026-04-02 20:41:07 +00:00
hjk068 ff79144fef object: call generateUserCaps after AdminOpsClient calls
This prevents overwriting the user-specified capabilities
and correctly copies the Capabilities into UserCapabilities
after the AdminOpsClient calls.

Signed-off-by: hjk068 <hello.hyunjin@gmail.com>
(cherry picked from commit b113e37dae)
2026-04-02 15:15:22 +00:00
Tarun Gupta Akirala 89129f03cd cosi: update default sidecar image version
Encountered this bug in current image kubernetes-sigs/container-object-storage-interface#173
which is fixed in recent release via kubernetes-sigs/container-object-storage-interface#197

Signed-off-by: Tarun Gupta Akirala <tarun.akirala@nutanix.com>
(cherry picked from commit 9803964d03)
2026-04-01 11:28:33 -06:00
majiayu000 c9e0bca7ff object: add labels field to CephObjectStore RGW service spec
Allow users to configure custom labels on CephObjectStore RGW services
by adding a Labels field to the RGWServiceSpec, following the existing
pattern used for Annotations. This enables use cases such as service
mesh integration and monitoring discovery that require specific labels
on Kubernetes services.

Fixes: #17235
Signed-off-by: majiayu000 <1835304752@qq.com>
(cherry picked from commit ac6ec79865)
2026-03-30 16:38:49 +00:00
Santosh 00b127ceb4 osd: zap disks for forceful OSD installation
When cephCluster is resinstalled and WipeDevicesFromOtherClusters is set
to true, then Rook cleans up the OSD disks using ceph-volum lvm zap, so
that new OSD can created on this disk. This PR removes the dependencies
of the "ceph-volume lvm zap" and provides implements the entry disk
"ceph-volume lvm zap" logic within rook

Signed-off-by: Santosh <sapillai@redhat.com>
(cherry picked from commit 92324588ba)
2026-03-26 18:46:25 +00:00
Oded Viner 7ec6cb6aef pool: clean up erasure code profile on pool deletion
deleting an erasure coded CephBlockPool left the ec profile
orphaned. recreating with different settings failed because
the old profile could not be overridden.
- delete ec profile during CephBlockPool deletion
- disable --format json on ec profile set command
- fix ec profile name mismatch in CephObjectStore deletion

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit b88648d10f)
2026-03-19 16:05:04 +00:00
Oded Viner 5e62a9bedd pool: set ec pool status to ready after reconcile
ec pools skip the mirroring configuration path where
the status is set to ready, leaving them stuck in
progressing state forever. add status update to ready
in the else branch when mirroring is skipped.

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit ba9fad77a0)
2026-03-17 21:34:56 +00:00
Niraj Yadav 333904ac0a csi: update ceph-csi image to v3.16.2
This patch updates the ceph-csi image version
to v3.16.2

Signed-off-by: Niraj Yadav <niryadav@redhat.com>
(cherry picked from commit c5613a3320)
2026-03-13 15:50:47 +00:00
Artem Torubarov 4a33f52954 rgw: fix integration test to detect new zone pools
Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
(cherry picked from commit 91086e5803)
2026-03-11 22:13:44 +00:00
Artem Torubarov 5b5cc0e234 rgw: integration test to check new pools in zone.json
Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
(cherry picked from commit 3c0bfd8572)
2026-03-11 22:13:44 +00:00
Artem Torubarov eb17bb490f rgw: not update shared pools if prev pool is not empty
Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
(cherry picked from commit 845293c3cd)
2026-03-11 22:13:43 +00:00
Artem Torubarov e2ce1ea2b0 rgw: support new RGW pools in shared pools zone json config
Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
(cherry picked from commit a134643352)
2026-03-11 22:13:42 +00:00
Muhammad Adil Ghaffar ee5eb68223 exporter: delete orphaned ceph-exporter deployments on reconcile
Clean up stale exporter deployments whose target node no longer exists.
This handles the case where the operator was down when a node was deleted,
so the deletion event was missed and the stale deployment was never removed.

Signed-off-by: Muhammad Adil Ghaffar <muhammad.adil.ghaffar@est.tech>
(cherry picked from commit 0b8ed65749)
2026-03-10 21:26:06 +00:00
Travis Nielsen 9ca5560d22 exporter: continue reconciling all clusters when disabled in the first
When reconciling the crash collectors and exporters, if one cluster
has disabled them, they will be deleted, then the reconcile
will complete, thus skipping reconcile of the crash collectors
and exporters for the remaining clusters.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 71e1dbffa4)
2026-03-10 17:56:41 +00:00
Travis Nielsen 46d9c79f8a exporter: remove exporter resources as best effort
Remove the exporter deployment when needed as best effort
in case the removal fails, there is no need to block other
reconcile.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 256a338c14)
2026-03-10 17:56:41 +00:00
Travis Nielsen 0cce6bac21 exporter: remove obsolete version checking for ceph v18
Rook no longer supports earlier than Ceph v18, so remove the
obsolete version checking in the ceph exporter reconcile.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 733406b175)
2026-03-10 17:56:41 +00:00
mergify[bot] 5de7b5423e Merge pull request #17163 from rook/mergify/bp/release-1.19/pr-17161
rgw: cephobjectstoreuser should create correct ipv6 formatted secret (backport #17161)
2026-03-06 21:14:11 +00:00
parth-gr cee051da5c rgw: cephobjectstoreuser should create correct ipv6 formatted secret
currently the ipv6 parsing was not done right,
so the ipv6 endpoint was skewed,
It was happening at multiple places for external mode
1) cephobjectstore status
2) cephobjectstoreuser secret
3) and more places where GetAdvertiseEndpointUrl is called

so fixed the GetAdvertiseEndpointUrl func to make use of ipv6 address

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit aa12b5c00c)
2026-03-06 20:15:08 +00:00
parth-gr 379f313e97 pool: skip miroring if the pool is ec
the ec pool doesnt support mirroring from ceph end
so skip if the mirroring spec is set on the ec pools

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 9f932d477e)
2026-03-06 14:41:49 +00:00
mergify[bot] dd72e9917a Merge pull request #17158 from rook/mergify/bp/release-1.19/pr-17116
exporter: add configurable port for ceph exporter (backport #17116)
2026-03-05 19:22:51 +00:00
Oded Viner b3f26bc27a exporter: add configurable port for ceph exporter
the ceph exporter port was hardcoded to 9926, preventing
co-location of exporters from different ceph clusters on
the same node. add a port field to cephexporterspec so
users can override it via spec.monitoring.exporter.port.

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit c2a2fc4241)
2026-03-05 17:11:45 +00:00
Travis Nielsen 0e21503455 test: increase osd reconcile wait timeout
The osd unit tests periodically fail with a timing issue
when canceling an orchestration. Attempt to stabilize
the test with a longer timeout before canceling the
test.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 96f4320a34)
2026-03-05 16:24:34 +00:00
Santosh 744ea9faf5 osd: check devlinks while cleaning osd disks
In getOSDDiskToBeWiped(), when the RealPath doesn't match the device path reported by ceph-volume, also check each entry in the space-separated DevLinks string. This handles the case where ceph-volume raw list reports an LVM symlink (e.g. /dev/rhel/ceph-data) that differs from the resolved RealPath (e.g. /dev/mapper/rhel-ceph--data).

Signed-off-by: Santosh <sapillai@redhat.com>
(cherry picked from commit 475fc7c7a6)
2026-03-02 18:22:50 +00:00
mergify[bot] 1d243854d4 Merge pull request #17127 from rook/mergify/bp/release-1.19/pr-17119
deploy: update CSI sidecars to latest versions available (backport #17119)
2026-02-26 19:02:19 +00:00
Travis Nielsen 9c1100abc7 Merge pull request #17125 from rook/mergify/bp/release-1.19/pr-17112
osd: update lockbox key rotation for encrypted OSDs (backport #17112)
2026-02-26 11:45:15 -07:00
Praveen M 95e4a8a082 csi: update CSI sidecars to latest versions available
Updated the following csi sidecars to their latest available versions:
- csi-attacher: v4.11.0
- csi-snapshotter: v8.5.0
- csi-resizer: v2.1.0
- csi-provisioner: v6.1.1
- csi-node-driver-registrar: v2.16.0

Signed-off-by: Praveen M <m.praveen@ibm.com>
(cherry picked from commit 6b55092abf)
2026-02-26 17:51:03 +00:00
Artem Torubarov 7dd938b222 rgw: skip non-raw commands on object deletion path when pools not exists
Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
(cherry picked from commit a7f176b366)
2026-02-26 17:50:08 +00:00
Artem Torubarov 16ea704cb6 rgw: force objectStore controller to wait until zone and sharedPools are ready
Fixes race condition for rgw multisite deployments caused by ObjectStore
and Zone controllers calling period commit concurrently. See: https://github.com/rook/rook/issues/17013

Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
(cherry picked from commit b47d2c2f79)
2026-02-26 17:50:08 +00:00
Blaine Gardner ef9e8be357 osd: update lockbox key rotation for encrypted OSDs
Update `lockbox.keyring` rotation for encrypted OSDs to ensure the key
is not lost if the init container fails but continues assuming
(reasonably) that the key is likely still relevant.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit 931006fb91)
2026-02-26 15:41:51 +00:00
Satoru Takeuchi ec6008e2ea osd: set device-type label on update
We should set OSDInfo.DeviceType if "device-type" label is
set on the corresponding Deployment. Otherwise, Rook
deletes this label on Update.

Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
(cherry picked from commit dac71d9edd)
2026-02-25 12:27:01 +00:00
Praveen M 08985245ad csi: update imagePullPolicy in operatorconfig and driver CR
Adds ImagePullPolicy configuration to CSI node plugin and controller
plugin specs in both the operator config and driver CR generation functions.
This ensures the CSI driver components use the configured pull policy
from CSIParam.ImagePullPolicy.

Signed-off-by: Praveen M <m.praveen@ibm.com>
(cherry picked from commit 67c4203531)
2026-02-24 16:52:57 +00:00
Satoru Takeuchi 33b937a1cb osd: fix osd on multipath device with metadata device
OSDs are created with `ceph-volume lvm batch` if `metadataDevice`
field is specified in CephCluster CR. Since this command does not
support kernel names (e.g. `/dev/dm-X`) for multipath devices,
we should use real names (e.g. `/dev/mapper/mpathX`) instead.

NOTE:
I intentionally keep raw mode OSD creation code as is
because `ceph-volume raw prepare` supports kernel names
for any devices.

Closes: https://github.com/rook/rook/issues/17057

Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
(cherry picked from commit 6f8b2aee94)
2026-02-24 15:20:36 +00:00
Oded Viner 27a3576407 nvmeof: add default gateway pod spreading
ensure each gw pod runs on a different node when possible.
add default pod anti-affinity and topology spread constraints.
keep user placement overrides by merging defaults with spec placement.
add tests for default spread and user override behavior.

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit bc6e5fbc86)
2026-02-18 18:43:15 +00:00
Santosh c9b4e2d60b rgw: fix status info when http is disabled
When http is disabled, the spec.status.info.insecure will keep on
showing the insecure endpoint. This PR makes sure that the
spec.status.info.insecure is empty when http is disabled

Signed-off-by: Santosh <sapillai@redhat.com>
(cherry picked from commit 6b9b0231b7)
2026-02-12 15:48:38 +00:00
Joshua Hoblitt 0e25b2089f object: add ObjectStoreUserSpec.OpMask field
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 3ef0c90ef8)
2026-02-11 17:11:07 +00:00
subham rai 7be1e02dca Merge pull request #17062 from rook/mergify/bp/release-1.19/pr-16584
exporter: add log collector for ceph exporter pod (backport #16584)
2026-02-11 11:34:05 +05:30