Commit Graph
3790 Commits
Author SHA1 Message Date
Sunnatillo 638cc3a503 mgr: add hostNetwork field to Manager spec
Add optinal hostnetwork field for Ceph Mgr to control whether the
mgr pods to run in host network. If unset, this defaults to
cluster level Network.HostNetwork value. This particulary useful
when user wants to restrict ceph mgr pod from exposing metrics
port in all host interfaces.

Signed-off-by: Sunnatillo <sunnat.samadov@est.tech>
(cherry picked from commit b9a4685f65)
2025-11-06 16:29:17 +00:00
Joshua Hoblitt 2af3a1584a osd: add CephCluster.spec.storage.OSDMaxUpdatesInParallel
Configures the maximum number of OSDs to update in parallel.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 43f26534ed)
2025-11-04 17:37:04 +00:00
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
subhamkrai 0fc9c0d5a7 mgr: add required k8s label for endpointSlice
k8s requires the endpointSlice must have label
`kubernetes.io/service-name` to be associated with
service. Without this label, the k8s service controller
can't link the EndpointSlice to the service.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 7004213f92)
2025-10-17 16:16:10 +00:00
Travis Nielsen aeda710840 pool: skip setting the target size ratio to 0 by default
The target size ratio is currently always being set to 0, when
neither the legacy targetSizeRatio nor the parameter for
target_size_ratio are set. In this case, we should not set it to 0,
but rather should skip the command to set the target size ratio.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 938380734d)
2025-10-16 17:00:34 +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
subham rai 2c7b515886 Merge pull request #16587 from rook/mergify/bp/release-1.18/pr-16540
mon: update the clusterinfo with v2 port (backport #16540)
2025-10-09 12:27:32 +05:30
parth-gr 58f5cc4f48 mon: update the clusterinfo with v2 port
currently we are updating the mon endpoints
and using it with rook-ceph-csi cm,
But we need latest ports in the cluster info,
during the creation of the ceph connection cr
when csi operator is enabled,
so ceph connection cr can use the latest mons ports

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 76a7132c56)
2025-10-08 18:19:31 +00:00
Tim Buchwaldt 729322ffd7 operator: allow overriding MDS cache memory limit
This change introduces support for setting the ceph cache memory limit
ratios that were previously hardcoded.
Codegen was drivey-by updated as the current version errored.

Resolves #16551

Signed-off-by: Tim Buchwaldt <tim.buchwaldt@deepl.com>
(cherry picked from commit 8db5274703)
2025-10-08 15:57:13 +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
Travis Nielsen 40b8989623 csi: convert csi operator volume settings
The csi volumes and volume mount settings are now
converted to the csi operator driver CR, for example
to allow nix os mounts to be applied to the csi
node plugins.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 7a515eb24a)
2025-10-02 14:56:54 +00:00
parth-gr 225121879f rbdmirror: fix mirroring monitoring settings for rn
currently if we disable the monitoring for rn,
it doesnt reset the status

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit 49c26dbfb0)
2025-09-26 19:49:06 +00:00
subham rai a2054ef9c9 Merge pull request #16525 from rook/mergify/bp/release-1.18/pr-16499
object: add status.{phase,observedGeneration} to cephbn (backport #16499)
2025-09-23 12:55:34 +05:30
Madhu Rajanna ae0dc30ccc csi: use recreate deployment strategy
This is a fix/workaround to set the Recreate
deployment strategy as default in Rook as
its long proven working without any problem.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 333082c397)
2025-09-23 05:19:16 +00:00
Madhu Rajanna 083cb37e34 csi: remove liveness from the driver spec
CephCSI will remove the livess sidecar
container functionality as it was created
very long back and it should be replaced with
kubernetes GRPC livessness problem.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit 46c7d2cc26)
2025-09-23 05:19:15 +00:00
Joshua Hoblitt 628fc97e88 object: add status.{phase,observedGeneration} to cephbn
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
(cherry picked from commit 864c349c1f)
2025-09-22 22:27:16 +00:00
subhamkrai 1477f60e10 csi: add labels to the csi-operator driver pod
currently, labels are not passed to csi-operator but
for csi-driver lables works as expected. This commit
add changes to add labels on csi-operator driver pod as well.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 0c296545a5)
2025-09-22 14:40:42 +00:00
Santosh Pillai 3e0514b947 osd: updated blocking pdbs if drained node is back
If the drained node is added back and one or more others nodes are down
update the blocking pdbs, that is, add blocking pdb to node that was
just added back.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
(cherry picked from commit f2bf0eb200)
2025-09-18 17:10:32 +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
parth-gr 0249d2b6a5 external: fix ipv6 monitoring endpoint reconcile
currently the extraction ipv6 was not correct
used the net package to extract the host ip from
the ipadress

Signed-off-by: parth-gr <partharora1010@gmail.com>
(cherry picked from commit e1873cb2e7)
2025-09-15 16:46:41 +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
Elias Carter 4c31c51ddb osd: exclude down OSDs from main PDB when cluster is clean
Currently, when there are down OSDs but all PGs are clean we add the
number of downed OSDs ot the main PDB maxUnavailable. For example if
OSDs 1,3,5 are down and all PGs are clean we create the following PDB:
```yaml
  maxUnavailable: 4
  selector:
    matchLabels:
      app: rook-ceph-osd
```

This is potentially dangerous as there can be race conditions which can
break the cluster, for example:
1. A new node is added to the cluster with 4 OSDs
2. Those OSDs are down as they have not started up and joined the cluster yet
3. All PGs are healthy as the new OSDs haven't started yet and they are new
4. The rook operator sets maxUnavailable to 5 on the OSD PDB
5. The new OSDs move from down to up as they start
6. Something in the cluster starts a disruption (eviction request)
7. Any 5 OSDs can be disrupted as maxUnavilable is still 5 and the downed OSDs are now up
8. If the 5 disrupted OSDs contain all the replicas of a PG it will cause the PG to go down

To better protect from this scenario, we can instead exclude the downed
OSDs from the main PDB instead of adding to maxUnavailable.
```yaml
  maxUnavailable: 1
  selector:
    matchExpressions:
    - key: app
      operator: In
      values: ["rook-ceph-osd"]
    - key: osd
      operator: NotIn
      values: ["1", "3", "5"]
```

This allows drains to still process when there are downed OSDs and PGs
are clean without allowing the non-downed OSDs to be disrupted.

Signed-off-by: Elias Carter <elias@dropbox.com>
(cherry picked from commit 60a15306e9)
2025-09-11 18:47:12 +00:00
subhamkrai 5b30ead7c1 nfs: rotate nfs cephx key
Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 5e21d43365)
2025-09-11 16:44:12 +00:00
Travis Nielsen 8a8e1eddef csi: allow csi controller pod to set host networking
The ceph csi controller plugin did not have the capability to
set host networking, in case the host networking is being enforced
with ROOK_ENFORCE_HOST_NETWORK: true.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit e294c280ed)
2025-09-10 19:42:40 +00:00
Blaine Gardner c729d02dc7 Merge pull request #16460 from rook/mergify/bp/release-1.18/pr-16452
csi: fix prior cephx key deletion logic (backport #16452)
2025-09-10 10:48:51 -06:00
Blaine Gardner 9b71f192ed csi: fix prior cephx key deletion logic
Fix an issue where keepPriorKeyCountMax would be counted differently
when rotation was currently in progress, versus when rotation was not in
progress.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit 7911469016)
2025-09-10 16:02:44 +00:00
subhamkrai 649489c504 csi: add multus network annotation to csi-operator
this commit adds multus network annotation to the
csi-operator node plugin and controller plugin pods
when multus is enabled in the ceph cluster.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit d2a1286606)
2025-09-10 15:57:40 +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
Travis Nielsen a3df18d58b Merge pull request #16410 from rook/mergify/bp/release-1.18/pr-16382
csi: add watcher for cm cluster controller (backport #16382)
2025-08-29 10:07:00 -06:00
subhamkrai 6339c574c7 csi: delete csi operator CR's when disabled
this commit deletes csi operator CR's when
user wants to revert back to csi driver for
some reasons. This commits deletes CR's like
`clientProfile, cephConnection, driver,
operatorConfig, and clientProfileMapping`.

Signed-off-by: subhamkrai <srai@redhat.com>
(cherry picked from commit 3b7a7b8958)
2025-08-29 14:32:48 +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 7c2347b30c csi: cleanup formatting of csi log statement
The csi key creation was not correctly logging params

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit 0a9262e73b)
2025-08-29 07:58:35 +00:00
Travis Nielsen 904881bd74 csi: set csi operator as default if no settings found
If the ROOK_USE_CSI_OPERATOR setting is not found in the
rook-ceph-operator-config configmap, the default now
is to use the csi operator instead of the previous
csi driver

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit b2b28e1280)
2025-08-29 07:58:35 +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
Travis Nielsen ea8270fd82 csi: set kernel mount options from env var if not in cluster spec
If the cephfs kernel mount options are not specified in the
cephcluster.spec.csi CR settings, fall back to the setting
in the operator env var CSI_CEPHFS_KERNEL_MOUNT_OPTIONS.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit eeebfbf496)
2025-08-28 16:28:06 +00:00
Travis Nielsen e7d0cfdfa0 csi: update client profile when changing
The csi client profile CR needed to be updated if
the spec changed. Previously, the client profile was never
being updated because it was calling Update() on the
existing CR retreived from Get(), rather than with
the updated spec.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit cc39368964)
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 1872784128 csi: fix wrong use of daemon config for cephx status
Fix a wrong usage of the CephX daemon config that should be CephX CSI
config.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
(cherry picked from commit 480b407bc2)
2025-08-27 21:15:27 +00:00
Travis Nielsen d25ae43bb6 csi: always initialize driver names
The driver names were only being initialized in certain code paths
where the drivers were being started and stopped. However, another
code path relied on those names being set. Now, we initialize the
driver names every time the CSI params are initialized, instead of
initializing the names separately.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
(cherry picked from commit af548ef2f6)
2025-08-27 17:48:19 +00:00