Commit Graph
1618 Commits
Author SHA1 Message Date
Santosh Pillai 4a1b6ca3d6 mon: wait for the canary pods to be terminated
Wait for the mon-canary pods to be terminated before starting the actual
mons. When topology spread constraints are added to evenly spread the
mons, then pod-anti affinity does not allow mons to be created on the
same node where other mons are running, this also includes the
mon-canary pods. We delete the mon-canary pods and then start the actual
mon pods. Sometimes the termination of the canary pods might take more
time, so schedular won't schedular mon pods on that node.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit 3137a857df)
2025-10-23 16:39:16 +00:00
Travis Nielsen f834612c85 osd: set osd resources for specific device class
The OSDs may require different resources based on their device
class. The overall osd resources were only being used, rather
than properly looking up the specific device class resources.
Now the expected resources will take affect per device class.

Co-authored-by: Matthias Osthues <osthues.matthias@gmail.com>
Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit d3c0bacd88)
2025-10-23 15:55:38 +00:00
Travis Nielsen 6f799052eb mon: trap the sigterm in the mon canary
The mon canary should quickly shut down after the pod is
deleted, since it has no purpose to continue running.
Since the sleep does not catch the SIGTERM as pid 1,
use a bash trap to exit quickly.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 48b70500fa)
2025-10-23 05:49:20 +00:00
Travis Nielsen dd3d6109c0 Merge pull request #16604 from rook/mergify/bp/release-1.18/pr-16595
core: fix ceph health check up status check (backport #16595)
2025-10-15 14:30:15 -06:00
Blaine Gardner 71fb066f9a Merge pull request #16606 from rook/mergify/bp/release-1.18/pr-16603
osd: allow OSD init keyring update to be best-effort (backport #16603)
2025-10-15 14:25:36 -06:00
parth-gr 1307ca16a2 osd: add a timeout for osd create and update process
if there a bit long to update osds in parallel,
we need to timeout and abort the synchronous loop
and start the cluster reconcile again from the beginning

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 4377823675)
2025-10-15 16:06:47 +00:00
Blaine Gardner a2176e89d7 osd: allow OSD init keyring update to be best-effort
When OSDs start, init containers attempt to get the latest CephX key for
the OSD to allow OSDs to potentially continue working after key rotation.

However, in Ceph corner cases, mons could be unavailable while OSDs
could still be viable with existing on-disk keys. Since key rotation is
a rare event, it's likely that the on-disk keys are still good.

The worst case scenario is that key updates were needed but didn't
succeed in init containers. In this case, instead of the init container
failing, the OSD startup will fail instead. Thus, this should introduce
no extra risk but merely shift the failure to a different container.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit d9d31fe527)
2025-10-14 19:00:44 +00:00
parth-gr b09e3941e1 external: add cluster connected condition in case of external mode
external mode was dependednt on the ceph status to
update the cluster connected condition,
BUt as now the status check will only update the ceph status,
so we will explicitly update the ceph status condition in the
end of the reconcile

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 3f5ebe2f4f)
2025-10-14 16:38:31 +00:00
parth-gr d267bbf710 core: fix cep health check up status check
currently the health checkup was reporting the
condition and reason to be always connected,
But which might not be the case,
So instead of that dont report the condition and
its phase during the health checkups

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 454c221c53)
2025-10-14 16:38:31 +00:00
Oded Viner 6cebce71ef osd: add detailed debug logs to checktopologyconflicts
added comprehensive debug logs throughout CheckTopologyConflicts

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit 11d7eacdcb)
2025-10-06 17:34:18 +00:00
Santosh Pillai 96d03cb1e4 core: use updated context in prevalidaiton checks
If the CephCluster spec is updated before the prevalidation check, then
Cluster.context still refers to the cancelled context of the operator.
This PR just updates the cluster context to use the latest operator
context.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit 1ff7604f82)
2025-09-16 15:53:11 +00:00
Santosh Pillai 508658f797 mon: fix mon health nil pointer exception
shouldFailoverMonImmediately has a nil pointer exception with mons on
PVC. Rook-ceph-mon-endpoint does not store node information of the mons
on PVC. So `mapping.Hostname` throws nill pointer

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit d399615bdc)
2025-09-15 14:00:10 +00:00
parth-gr 171cb589e2 osd: remove the osd bootstrap keyring
when the osd is created there is no need for
osd bootstrap keyring, so remove the keyring
and keyring file,

New keyring will be created if
new osd need to be provisoned

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 794a232835)
2025-09-04 15:43:38 +00:00
Blaine Gardner 393722d6ff Merge pull request #16424 from rook/mergify/bp/release-1.18/pr-16372
core: delete bootstrap keys (backport #16372)
2025-09-02 15:08:53 -06:00
Blaine Gardner d2d69da654 Merge pull request #16398 from rook/mergify/bp/release-1.18/pr-16271
core: rotate client.admin cephx key (backport #16271)
2025-09-02 15:08:42 -06:00
Santosh Pillai 76285baf24 core: delete bootstrap keys
Delete the client.boostrap.* keys. These keys are not created by rook so
it can't rotate them. This PR just delete these keys in the
postMonStartUpAction.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit 4cdba0df54)
2025-09-02 18:17:44 +00:00
Santosh Pillai da12810130 osd: rotate lockbox keys for encrypted osd
ceph-volume creates osd-lockbox keys for the encryted osds. This PR
rotates those keys along with the OSD keys.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit b4e1c1720d)
2025-09-02 18:16:40 +00:00
subhamkrai 8ff513e8ae csi: add watcher for cm cluster controller
this commit add watcher for cm `rook-ceph-operator-config`
to look for updated value of `ROOK_USE_CSI_OPERATOR` before
adding this watcher we had to restart rook operator pod
so that it reconciles and create cephConnection CR.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit dd6693ff97)
2025-08-29 14:24:43 +00:00
Travis Nielsen 2c3543a292 csi: default to secure kernel mount options if network encrypted
If the network is encrypted with msgr2, cephfs requires
the mount options to include ms_mode=secure. Now this
will be set by default if the mount options are not
already set in the cephcluster CR or the operator env
var CSI_CEPHFS_KERNEL_MOUNT_OPTIONS.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 6309cd367e)
2025-08-28 16:28:06 +00:00
Blaine Gardner 14490a075e core: admin cephx key rotation
Implement CephX key rotation for Rook's client.admin user.

Admin user rotation is risky, so this has been tested extensively both
in unit tests as well as by manually injecting failures during runtime.
In testing, all failures were able to be recovered by the recovery
routine.

A mutex is also added to help ensure that two simultaneous admin key
rotation processes cannot be running simultaneously for any given
namespace. The mutex is tested in unit tests, and it was verified during
runtime via  manual testing.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit 7c33186e72)
2025-08-27 21:21:29 +00:00
Blaine Gardner af70853894 core: allow cephx rotation for ceph 19.2.3 except mons
Allow Rook to rotate CephX keys for Ceph v19.2.3 and up with the
exception of Ceph mons. While v19.2.3 has the `ceph auth rotate` command
that Rook needs to perform key rotation, there is still ongoing work in
Ceph to change how the `mon.` key is tracked internally. Rook's mon key
rotation requires those currently-unreleased Ceph changes.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit a952b7511a)
2025-08-19 20:56:15 +00:00
Blaine Gardner 0241a57f05 core: finalize CephCluster CephX status handling
Cleanup up overall usage of CephX statuses in CephCluster.

Convert all CephX statuses to non-pointer types. There is no specific
need for pointer types, and keeping these as non-pointers means there is
not a risk of nil pointer exceptions in all the various Rook controllers
for upgraded clusters.

Move initialization of CephCluster CephX status items to
`preMonStartupActions()`. This helps resolve 2 issues:

1. 'Uninitialized' state was being set for external CephClusters where
   CephX statuses are not relevant.
2. 'Uninitialized' state was being set for upgraded clusters whose key
   status cannot be determined.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit 2fd9c9a88c)
2025-08-19 20:56:15 +00:00
Santosh Pillai bfe8d50db6 mon: rotate keys
rotate mon daemon keys and update the cephx status for mons in the
cephcluster resource.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit fe42fe102f)
2025-08-15 17:07:19 +00:00
Denis Egorenko 6b27d08221 operator: mount udev to cleanup job and disable udev sync
Mount /run/udev inside cluster cleanup jobs and disable udev sync
with DM_DISABLE_UDEV.

Related-Issue: rook#16292
Signed-off-by: Denis Egorenko <degorenko@mirantis.com>
(cherry picked from commit 09622a8b8d)
2025-08-14 13:10:47 +00:00
Santosh Pillai 519ec6821c core: rotate rbd mirror peer key
rotate the client.rbd-mirror-peer key based on the cephxconfig.
Also update the cephxStatus in the cephcluster as well as the
mirrored cephblockpool.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit ee0b137d75)
2025-08-11 16:55:09 +00:00
Madhu Rajanna 41c4e24e35 csi: use cluster namespace for cephConn
CephConnection CR is created with the
kubernetes namespace name as its the
unique name in the entire cluster.
This PR removes unwanted input
parameters and adjust the namespace
name for the cephConnection CR.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 1ff3f07ac5)
2025-08-11 07:12:44 +00:00
Santosh Pillai c78c66f7e6 core: rotate mirror daemon keys
rotate RBD mirror daemon keys, add secret resource version to the mirror
deployment and update the mirror resource status after the key is
rotated

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit d0fbf6c424)
2025-08-08 15:46:23 +00:00
Travis Nielsen 66b3e42e03 mon: failover mon immediately if node not exist
During mon failover, if a mon is assigned to a node
but the node does not exist, the mon should be failed
over immediately instead of waiting for a 10 or 20
minute timeout. If the node does not exist, the mon pod
will be in a pending state until the failover is finally
triggered, and no point in waiting that long if the
node is gone.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 8b4d3b19cf)
2025-08-07 16:41:14 +00:00
Oded Viner 13faad2269 osd: validate node topology to prevent invalid crush map hierarchy
add a validation check to fail osd deployment when topology labels
like rack or chassis are duplicated across parent domains
(e.g., zones). this prevents invalid crush map hierarchies
(dfbugs-2610).

Signed-off-by: Oded Viner <oviner@redhat.com>
(cherry picked from commit 973f8a3a35)
2025-08-05 13:58:38 +00:00
mergify[bot] 60ffd2991e Merge pull request #16218 from rook/mergify/bp/release-1.18/pr-16210
exporter: automate rotate exporter cephx keys (backport #16210)
2025-08-01 17:20:35 +00:00
parth-gr 3df15cacef exporter: automate rotate exporter cephx keys
rotate cephx keys based on keyRotationPolicy
and update cephxStatus for the ceph exporter daemon pods.

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 9ec7a767c3)
2025-08-01 16:11:14 +00:00
Blaine Gardner 55de1bcb38 osd: implement automated cephx key rotation for osds
Implement automated CephX key rotation for OSDs.

OSDs have marshalled CephX statuses applied as an annotation on the OSD
pod spec, which differs from other Rook Ceph daemons for a two reasons:

A large cluster could have hundreds or thousands of OSDs, so it is more
critical that Rook avoid rotating OSD keys more than once in the event a
CephCluster reconcile restarts partway through OSD creation/updation.

OSDs do not have their CephX keys stored in K8s Secrets, whose resource
version is used for enforcing the desired restart behavior other daemon
pods like RGWs.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit 4189a196c1)
2025-08-01 16:09:14 +00:00
Santosh Pillai fd2b4333e8 Merge pull request #16171 from parth-gr/cephx-crashcollector
core: automate rotate crashcollector  cephx keys
2025-07-31 13:41:13 +05:30
parth-gr fd6d22fcfe core: automate rotate crashcollector keys
rotate cephx keys based on keyRotationPolicy
and update cephxStatus for the crashcollector
daemon pods.

Signed-off-by: parth-gr <partharora1010@gmail.com>
2025-07-31 11:30:55 +05:30
chentao.2022 62631d2614 osd: exclude labels with a value of null from the topology string
Avoid the OSD startup failing to parse crush_location when
the topology label is empty.

Signed-off-by: chentao.2022 <chentao.2022@bytedance.com>
2025-07-30 16:07:13 -06:00
Travis Nielsen 7b2dfdba17 Merge pull request #16150 from OdedViner/log_panics_controller
core: log panics in controller reconcile functions
2025-07-29 09:59:27 -06:00
Oded Viner cf13deee6f core: log panics in controller reconcile functions
add RecoverAndLogException() helper to log panics with stack trace.
added defer call in all rook controller Reconcile() methods for
better error visibility in operator logs

Signed-off-by: Oded Viner <oviner@redhat.com>
2025-07-29 13:20:38 +03:00
Santosh Pillai c615967fa8 Merge pull request #16040 from subhamkrai/rotate-csi-keyrings
csi: automate CSI cephx key rotation
2025-07-29 11:09:50 +05:30
subhamkrai 6d5401c50d csi: automate CSI cephx key rotation
This PR implements the CSI cephx key rotation feature,
which follows overlapping rotation for non-daemon keys.
Refer to the cephx rotation API from design PR 15915 for details.

Signed-off-by: subhamkrai <srai@redhat.com>
2025-07-25 15:39:00 +05:30
subhamkrai 6df727b91a csi: update csi-operator yaml to v1
this commit updates the csi-operator complete deployment
file csi-operator.yaml to v1 from v1alpha1.

Signed-off-by: subhamkrai <srai@redhat.com>
2025-07-23 21:02:59 +05:30
Santosh Pillai b486e308c3 mgr: rotate cephx keys
rotate cephx keys based on keyRotationPolicy and update cephxStatus for
the MGR daemon pods.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
2025-07-21 12:31:35 +05:30
Blaine Gardner a156f27f34 Merge pull request #16115 from sp98/clusterCephxStatus-uninitialized
core: init cephxStatus on cephCluster
2025-07-11 13:52:31 -06:00
Travis Nielsen aa61ddb57e mon: failover with host network must use different node
When a mon is failed over, the old mon is left in mon quorum
until the new quorum is confirmed in quorum. When host networking
is enabled, this may result in two mons being in quorum with the
same ip, if the new mon is scheduled on the same node as the
down mon. This results in daemon crashes in the cluster since
they are confused by multiple of the same ip in the mon map.

The solution is to avoid scaling down the bad mon when host networking
is enabled. This will ensure the new mon is not scheduled on the
same node as the previous mon. With host networking, either another
node is necessary or the original mon must come back online to
restore quorum.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2025-07-10 10:13:17 -06:00
Santosh Pillai a07f2478f3 core: init cephxStatus on cephCluster
Set cephXStatus on the CephCluster status to Uninitialized when the
cluster is first created.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
2025-07-10 20:43:58 +05:30
Travis Nielsen a00c6fba64 Merge pull request #15846 from patrostkowski/fix/mon-run-as-root-15564
mon: allow running mon pods as root
2025-07-07 16:08:48 -06:00
raaizik 1b3f36ff5c core: fix CephObjectRealm controller generated generated AccessKey invalid chars
Suggested fix for issue https://github.com/rook/rook/issues/16072
Adds key type differentiation to exclude invalid characters from AccessKey

Signed-off-by: raaizik <132667934+raaizik@users.noreply.github.com>
2025-07-01 18:32:48 +03:00
Travis Nielsen d6ebc96be9 Merge pull request #16025 from Nordix/add-host-network-cephexporter/adil
exporter: Add Hostnetwork bool to ceph-exporter
2025-06-24 14:49:36 -06:00
Muhammad Adil Ghaffar 5ea7a177b7 exporter: add hostnetwork bool to cephexporter
Signed-off-by: Muhammad Adil Ghaffar <muhammad.adil.ghaffar@est.tech>
2025-06-24 23:17:51 +03:00
Blaine Gardner c3ee142866 Merge pull request #16003 from BlaineEXE/osd-allow-manual-rotation
osd: load latest cephx key during osd pod init
2025-06-19 13:57:36 -06:00
Kyori Sakao 015e4f4ecf osd: remove redundant err check
remove redundant nested `if err != nil` checks

Signed-off-by: Kyori Sakao <system.222.down@gmail.com>
2025-06-19 10:08:33 +09:00