Commit Graph
5179 Commits
Author SHA1 Message Date
Satoru Takeuchi c4f8924beb Merge pull request #17593 from sp98/osd-resize-with-encrypted-host-osds
osd: add cryptsetup resize for encrypted host based osds
2026-06-01 09:24:06 +09:00
Santosh 3e49c9f4cf osd: add cryptsetup resize for encrypted host based osds
when using encryptedDevice:true with host based (non pvc) osds, resizing
the underlying disk and restarting the OSD didn't expand the OSD because
the LUKS encryption layer was not resized.

This PR adds resize capabilities inside the activate container. Full
device stack must be resized: PV → LV → LUKS

Steps:
1. Run pvresize and lvextend to grow the LVM layers.
2. Retrieve the LUKS key from the Ceph config-key store using the
lockbox crednetials already available in the activate container
3. Pass the key explicitly to cryptsetup resize via --key-file.

Signed-off-by: Santosh <sapillai@redhat.com>
2026-05-29 12:09:17 +05:30
Oded Viner 4b5fc9d16a object: add logger for AWS SDK v2 debug signing output
Wire a rookLogger adapter implementing smithy's Logger
interface so that aws.LogSigning output is emitted through
rook's capnslog when debug mode is enabled.

Signed-off-by: Oded Viner <oviner@redhat.com>
2026-05-27 20:08:14 +03:00
Blaine Gardner 469b04e1a9 Merge pull request #17572 from OdedViner/remove_asw_v1
object: remove AWS SDK v1 dependency
2026-05-27 10:30:31 -06:00
Travis Nielsen 9774d2de75 Merge pull request #17570 from subhamkrai/add-tls1.3-ciphers
object: add TLS 1.3 cipher suite support for RGW beast frontend
2026-05-27 09:51:33 -06:00
Oded Viner 254965fff1 object: remove AWS SDK v1 dependency
Remove the AWS SDK v1 (github.com/aws/aws-sdk-go)
dependency entirely. All S3 operations now use AWS SDK v2
exclusively.

- Remove the v1 Client field from S3Agent struct and
  rename ClientV2 to Client
- Remove v1 session/client initialization from NewS3Agent
- Update all call sites referencing ClientV2
- Convert integration tests to use v2 API calling
  conventions (context parameter) and smithy error handling
- Remove aws-sdk-go v1.55.8 from go.mod

Signed-off-by: Oded Viner <oviner@redhat.com>
2026-05-27 18:35:54 +03:00
Joshua Hoblitt 8dd1778655 Merge pull request #17561 from jhoblitt/maint-ref-all-containers-by-name-instead-of-index
core: reference all containers in a spec by name instead of index
2026-05-26 12:10:09 -07:00
Joshua Hoblitt 959c223fa8 Merge pull request #17544 from jhoblitt/maint/sync-prometheusrules
helm: update prometheus rules from upstream ceph/ceph; add `cluster` label to all scraped metrics
2026-05-26 12:08:42 -07:00
Joshua Hoblitt d059c351fc core: reference all containers in a spec by name instead of index
This changeset excludes converting _test.go code as there may be a
legitimate reasons (E.g. convenience) for unit test to be sensitive to
ordering.

Related to:
- https://github.com/rook/rook/issues/15291
- https://github.com/rook/rook/pull/16969

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-05-26 10:09:23 -07:00
subhamkrai b70a0c9257 object: add TLS 1.3 cipher suite support for RGW beast frontend
adding new tls ssl_ciphersuites supporting tls 1.3 and the existing,
ssl_cipher supports tls 1.2 and below. Adding, the docs and unit-test
changs as well.

Signed-off-by: subhamkrai <srai@redhat.com>
2026-05-26 20:50:21 +05:30
Oded Viner bf941235fd ci: bump golang.org/x/net to v0.55.0 to fix GO-2026-5026
The govulncheck CI job is failing on all PRs due to vulnerability
GO-2026-5026 in golang.org/x/net v0.54.0. Bump golang.org/x/net to
v0.55.0 to resolve it.

Signed-off-by: Oded Viner <oviner@redhat.com>
2026-05-25 13:25:12 +03:00
Satoru Takeuchi 4105874d9a Merge pull request #17525 from sp98/lv-osd-with-metadata
osd: allow LVM logical volumes as OSD data devices
2026-05-22 19:44:00 +09:00
Blaine Gardner 645aa741eb Merge pull request #17530 from rook/maint-rm-unused-consts-opus-4.7
core: rm unused consts
2026-05-20 09:01:05 -06:00
Travis Nielsen 5f398420fc Merge pull request #17527 from OdedViner/aws_sdk_2_topic
object: migrate sns topic provisioner to aws sdk v2
2026-05-20 07:54:56 -06:00
Oded Viner 81a2cd8833 object: migrate sns topic provisioner to aws sdk v2
migrate the sns-based topic provisioner from aws-sdk-go (v1)
to aws-sdk-go-v2. replace v1 session, credentials, and
request handlers with v2 aws.Config, static credentials
provider, and endpoint resolver. convert the custom ceph rgw
v2 signer hack from a v1 handler swap to a smithy finalize
middleware. update sns api calls to use context-first
signatures, map[string]string attributes, and typed
snstypes.NotFoundException error handling via errors.As.
update unit tests accordingly.

Signed-off-by: Oded Viner <oviner@redhat.com>
2026-05-20 13:02:00 +03:00
Travis Nielsen 67395ad5e4 Merge pull request #17545 from sp98/fix-TestAddRemoveNode-unit-test
osd: fix flaky TestAddRemoveNode failure
2026-05-15 13:39:11 -06:00
Travis Nielsen d66f1e3465 Merge pull request #17547 from Nordix/Sunnatillo/fix-go1.26-printf-check
build: fix gosec and go vet lint errors for Go 1.26
2026-05-15 13:25:41 -06:00
Sunnatillo 0bd299aa60 build: fix gosec and go vet lint errors for Go 1.26
Signed-off-by: Sunnatillo <sunnat.samadov@est.tech>
2026-05-15 21:45:06 +03:00
Santosh Pillai fda5ab6a63 Merge pull request #17535 from sp98/create-base-rule-only-once
ceph: skip base rule creation if pools exit
2026-05-15 19:44:08 +05:30
Santosh 6781d2e58d osd: fix flaky TestAddRemoveNode failure
User RaceFreeFakeWatcher isntead of FakeWatcher in TestAddRemoveNode
function. The test runs c.Start() in a goroutine whch stops the watcher
when done. If mockNodeOrchestrationCompeltion sends a watch ever after,
that, FakeWatcher panics with "send on a closed channel".
RaceFreeFakeWatcher safely ignores the sends on a stopped channel.

Signed-off-by: Santosh <sapillai@redhat.com>
2026-05-15 17:44:03 +05:30
Santosh df0f4e6c99 pool: skip base rule creation of pools exit
createREplicatedPoolForApp creates a base Crush rule (named after the
pool) on every reconcile, even if the pool already exists and uses a
suffixed rule ( eg pool_host_ssd). This causes orphaned rules to
reappear after every operator restart, immediately after
CleanupUnusedCrushRules deletes them.

This PR ensures that the base rule is created only if the pool does not
exist yet.

Signed-off-by: Santosh <sapillai@redhat.com>
2026-05-15 12:39:10 +05:30
Joshua Hoblitt cc05619dd8 core: add cluster label to all servicemonitor scraped metrics
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-05-14 16:02:34 -07:00
Travis Nielsen 3775bf206a Merge pull request #17407 from cobaltcore-dev/osd-deviceclass-minimal
osd: honor per-device deviceClass in raw-mode prepare and reconcile
2026-05-14 12:04:16 -06:00
Travis Nielsen 52b959e22e Merge pull request #17421 from subhamkrai/add-floating-mon-container-resources
mon: add resource request for mon drbd containers
2026-05-14 11:15:25 -06:00
Travis Nielsen 2ef74f3189 Merge pull request #17447 from subhamkrai/add-stipe-unit-support
pool: add stripe_unit with erasure-code-profile set
2026-05-14 10:38:06 -06:00
Joshua Hoblitt 9eec9c730e core: rm unused consts
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-05-14 09:34:52 -07:00
subhamkrai 9fb0582dd6 pool: add stripe_unit with erasure-code-profile set
this commit adds flag stripe_unit for the command
ceph osd erasure-code-profile set [flags]. This key
increase perfomance for ec pool. The default value
is 4kib/4096 bytes.

Signed-off-by: subhamkrai <srai@redhat.com>
2026-05-14 21:39:15 +05:30
Prabhala Tara Aasrita af03615e97 mon: add watcher for DRBD ConfigMap in TNF deployments
Added a watcher in the cluster controller to detect changes to the DRBD ConfigMap used by floating monitors in TNF deployments. When the ConfigMap is updated, the watcher triggers a CephCluster reconciliation to ensure configuration changes are applied.

Fixes #17338

Signed-off-by: Prabhala Tara Aasrita <taraasrita@ibm.com>
2026-05-14 18:15:32 +05:30
Santosh c6d48178dd osd: allow LVM logical volumes as OSD data devices
remov restrictions that prevented LVM logical volume from being
provisioned as OSDs. LV devices with a metadatadevice were rejected at
the filtering stage. LV devices without one were incorrectly being
routed to ceph-volume raw mode which was resuting in error. This PR:

- removes metadatadevice restriction on LV devices.
- Adds LVM time check to isSafeToUseRAWMode to prevent raw mode on lvm

Signed-off-by: Santosh <sapillai@redhat.com>
2026-05-14 11:43:45 +05:30
Blaine Gardner 5920f47d58 Merge pull request #17468 from OdedViner/aws_sdk_2_notification
object: migrate notification package to aws sdk v2
2026-05-13 11:35:46 -06:00
Oded Viner f5df592106 object: migrate notification package to aws sdk v2
migrate the notification provisioner and s3ext packages from
aws sdk v1 to v2. the custom DeleteBucketNotification call is
rewritten to manually build and sign the HTTP request using the
v2 v4 signer, since this ceph-specific API has no sdk equivalent.

also fix t.Skipped() -> t.Skip() in notification integration test.

Signed-off-by: Oded Viner <oviner@redhat.com>
2026-05-13 19:06:52 +03:00
Travis Nielsen 2898acddfc Merge pull request #17494 from immanuwell/docs-fix-duplicated-words
docs: fix duplicated words in docs and comments
2026-05-12 12:41:18 -10:00
Travis Nielsen 4cf71d9a27 Merge pull request #17472 from texasich/codex-rook-17405
mgr: retry self-signed cert creation on wrapped context deadline errors
2026-05-12 12:37:11 -10:00
Parth Arora d9d6461bf2 Merge pull request #17502 from sp98/fix-CleanupUnusedCrushRules
core: skip crush rule cleanup if no pools exist yet
2026-05-12 19:53:46 +05:30
Santosh 1c1d6cf261 core: skip crush rule cleanup if no pools exist yet
During the initial cluster setup, CleanUnusedCrushRules() runs after MGR
startup but before any pools are created (if user does not create the
.mgr pool along with the cephCluster manifest). It deletes the default
replicated_pool since no pool references it.

This leaves the cluster in a state if Zero crush rules. When the MGR
tries to start the device_health_metris during this window, thne it
fails to find the crush rule and crashes.

Skip the cleanup when no pools exists yet, since there is nothing
meaninful to cleanup.

Signed-off-by: Santosh <sapillai@redhat.com>
2026-05-12 11:45:04 +05:30
Travis Nielsen 0dc9191237 Merge pull request #17503 from OdedViner/test_nvme_ocp
nvmeof: add sys_admin to scc allowedcapabilities for gateway pods
2026-05-11 12:03:33 -10:00
Artem Torubarov b41d63788d osd: honor per-device deviceClass in raw-mode prepare and reconcile
Fixes #16834 and #17384. Per-OSD CR deviceClass was ignored in
osd prepare job when reporting the osd config back to the operator,
and in the operator's reconcile override.
Fixed by resolving the per-device class from the CR devices list
in GetCephVolumeRawOSDs and in makeDeployment.

Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
2026-05-11 15:37:16 +02:00
Oded Viner f8c1c99cb4 nvmeof: add sys_admin to scc allowedcapabilities for gateway pods
the nvmeof gateway requires privileged containers with
sys_admin capability. the rook-ceph scc only allowed mknod,
causing pod creation to fail on openshift with:
"unable to validate against any security context constraint"

add sys_admin to allowedcapabilities in the helm chart sccs
and the go scc helper. this does not affect other daemons
(osd, rgw, mgr, mon) since they do not request sys_admin.

the operator-openshift.yaml example already includes
sys_admin, so this aligns the helm charts to match.

Signed-off-by: Oded Viner <oviner@redhat.com>
2026-05-11 13:47:12 +03:00
Oded Viner 20fa0128f5 build: bump golang.org/x/net to fix govulncheck ci failure
bump golang.org/x/net from v0.52.0 to latest patched version
to resolve known http2 vulnerability flagged by govulncheck.

the vulnerable call path is:
  object.debugHTTPClient.Do
  -> httputil.DumpRequestOut
  -> http2.Transport.RoundTrip

this is a pre-existing issue blocking ci on all pull requests.

Signed-off-by: Oded Viner <oviner@redhat.com>
2026-05-10 17:35:52 +03:00
immanuwell c3a9f5fdd9 docs: fix duplicated words in docs and comments
Clean up duplicated words and a typo in object storage docs, comments, and user-facing messages.

Signed-off-by: immanuwell <pchpr.00@list.ru>
2026-05-09 12:50:31 +04:00
Santosh Pillai 0100ecaa9b Merge pull request #17484 from taraasrita10/fixing-mon-failover
mon: check node existence on every health check iteration
2026-05-07 11:33:12 +05:30
subhamkrai 01ef98c1e3 rgw: add option for tls and cipher in objectstore
this commit add option in the ceph objecstore CR
to configure TLS profile and TLS ciphersuite for
rgw beast.

Signed-off-by: subhamkrai <srai@redhat.com>
2026-05-06 21:02:30 +05:30
Prabhala Tara Aasrita aeae61e5be mon: check node existence on every health check iteration
Previously, shouldFailoverMonImmediately() was called only when a mon first went out of quorum. If the node gets deleted after the timeout starts, it does not get detected until the timeout expires. Moved the call outside the timeout initialization block so it runs on every health check iteration and detects node deletion immediately.

Fixes #15953

Signed-off-by: Prabhala Tara Aasrita <taraasrita@ibm.com>
2026-05-06 20:04:05 +05:30
texasich beb6c0f373 mgr: retry self-signed cert creation on wrapped deadline errors
Signed-off-by: texasich <texasich@users.noreply.github.com>
2026-05-01 11:31:01 -05:00
Santosh Pillai f9c9a9b1b6 Merge pull request #17453 from sp98/fix-osd-encrypted-label-values
osd: detect encryption label from dmcrypt path
2026-04-30 13:37:51 +05:30
subhamkrai 4eefad42e8 csi: move csi management to admin
Going forward, admin will manage the csi operator
CR's and rook will only manage Ceph Connection cr
and client Profile cr.

The old csi driver is completely removed from Rook
and can no longer be used starting in Rook v1.20.

The upgrade guide will contain the needed transition steps
for managing the csi operator settings.

Signed-off-by: subhamkrai <srai@redhat.com>
2026-04-29 14:24:26 -06:00
Travis Nielsen 07fce20daf Merge pull request #17451 from rohan47/exporterDnsPolicy
exporter: set correct DNSPolicy for rook-ceph-exporter
2026-04-29 12:11:23 -06:00
Santosh fc9e3b54f3 osd: detect encryption label from dmcrypt path
Detect OSD encryption from the dmcrypt block path in `getOSDInfo` as a
fallback when the `encrypted` label is missing on pre-label deployments.

Include `osd.Encrypted` in the label check in `makeDeployment` so the
label reflects the actual OSD state on upgrade.

Fixes a bug where upgrading to a Rook version with the `encrypted` label
would set the label to `false` on already-encrypted OSDs, because the
label didn't exist yet and `getOSDInfo` defaulted to `false`.

Signed-off-by: Santosh <sapillai@redhat.com>
2026-04-29 19:18:05 +05:30
Oded Viner 5ba3e1a2c0 object: migrate bucket provisioner to aws sdk v2
migrate bucket provisioner from aws sdk v1 to v2.

replace awserr.Error type assertions with smithy.APIError
using errors.As for v2-style error handling.

switch setBucketPolicy and setBucketLifecycle to use
the v2 s3 client (ClientV2) directly with context.

replace v1 s3 types (BucketLifecycleConfiguration,
GetBucketLifecycleConfigurationOutput) with v2 equivalents
from s3types and s3v2 packages.

add cmpopts.IgnoreUnexported to cmp.Diff calls to handle
unexported noSmithyDocumentSerde fields in v2 sdk types.

add nil guard on lifecycle output before accessing rules
to prevent nil dereference when get returns an error.

depends on #17414

Signed-off-by: Oded Viner <oviner@redhat.com>
2026-04-29 16:34:22 +03:00
Rohan Gupta 17873d3af2 exporter: set correct DNSPolicy for rook-ceph-exporter
rook-ceph-exporter should use DNSPolicy ClusterFirstWithHostNet when
hostNetwork is enabled

Signed-off-by: Rohan Gupta <rohgupta@redhat.com>
2026-04-29 15:07:21 +05:30