Commit Graph
179 Commits
Author SHA1 Message Date
subham rai fa4557a93b Merge pull request #16922 from subhamkrai/remove-fencing-obsolete-code
csi: remove automated node fencing code
2026-02-05 13:22:07 +05:30
Santosh bfbd2c5d38 doc: rgw user account design
Design doc for implementing the Ceph RGW User accounts.

Signed-off-by: Santosh <sapillai@redhat.com>
2026-02-04 10:13:40 +05:30
Tobias Florek db814dcd4b security: remove nodes/proxy rbac grants
It has only been used by the flex driver which is long gone.

This removes the nodes/proxy RBAC grant from the helm chart, the example
YAMl and the security design docs.

Signed-off-by: Tobias Florek <me@ibotty.net>
2026-01-28 08:16:19 +01:00
subhamkrai 20f350a71a csi: remove automated node fencing code
since node fencing is disabled in rook for sometime
and this feature is implemented in csi. So, this
commits remove obsolete code related to node loss

Signed-off-by: subhamkrai <srai@redhat.com>
2026-01-22 15:19:12 +05:30
Travis Nielsen de8c2d2033 Merge pull request #16020 from ideepika/wip-nvmeof
docs: add design doc for ceph nvmeof gateway
2025-11-13 13:06:50 -07:00
Deepika Upadhyay ed85b05933 docs: update design doc for nvmeof
Signed-off-by: Deepika Upadhyay <deepika.upadhyay@clyso.com>
2025-10-14 15:43:11 +05:30
Erik Sundell e7a704ccf1 helm: remove legacy PodSecurityPolicy resource
The helm charts allowed rendering a PodSecurityPolicy resource via the
configuration `pspEnable`. This option is removed and all references to
psp, PodSecurityPolicy, and Pod Security Policy have been cleaned up.

The PSP resource was only rendered if k8s version was lower than 1.25
when it was still supported. It has been deprecated since k8s 1.21.

Signed-off-by: Erik Sundell <erik@sundellopensource.se>
2025-09-30 18:25:35 +02:00
Elias Carter 60a15306e9 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>
2025-09-10 12:05:55 -07:00
Blaine Gardner 540b0c8637 Merge pull request #15915 from BlaineEXE/design-cephx-rotate
doc: add design for cephx key rotation
2025-08-19 15:09:18 -06:00
Blaine Gardner 99332fd9de doc: add design for cephx key rotation
Add a design doc to addres RFE #15904.

This design outlines important UX and implementation details for
achieving automated/assisted workflows for rotating CephX authentication
keys for Ceph daemons and other clients.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2025-08-19 15:08:21 -06:00
Travis Nielsen 66a006b99c core: update ceph version to v19.2.3
With the new squid patch release, update the base
image, the docs, and the examples to all use the latest
stable Ceph release v19.2.3.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2025-07-29 11:51:11 -06:00
Deepika Upadhyay 43436a5b43 docs: add design doc for ceph nvmeof gateway
Signed-off-by: Deepika Upadhyay <deepika.upadhyay@clyso.com>
2025-07-02 20:47:01 +05:30
Vilius Puškunalis 27010f96f3 osd: fix cleanup job disk shredding
Fixes quick disk shredding by using dd to shred data at additional offsets where ceph metadata is duplicated. For full shred, the shred utility remains in use.

Signed-off-by: Vilius Puškunalis <47086537+puskunalis@users.noreply.github.com>
2025-06-23 21:46:41 +03:00
Anthony D'Atri 27418c43a5 doc: improve ceph-managed-disruptionbudgets.md
Signed-off-by: Anthony D'Atri <anthonyeleven@users.noreply.github.com>
2025-06-03 17:18:59 -04:00
Travis Nielsen f62e6d9cc2 core: set default ceph version to v19.2.2
Update the examples and docs and operator base image to
the latest ceph release v19.2.2.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2025-04-14 12:59:39 -06:00
Santosh Pillai a816b4a971 osd: allow one healthy OSD to be drained
One ore more OSDs can be down and PGs can still be active+clean (data
was rebalanced to other available OSDs). This PR sets
maxunavailable=1+downOSDs to allow one healthy to be drained.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
2025-03-26 10:40:46 +05:30
subhamkrai 0e395f0a67 manifest: update default ceph version to v19.2.1
with ceph release v19.2.1 updating it to be dafult version
in rook.

Signed-off-by: subhamkrai <srai@redhat.com>
2025-02-20 23:24:54 +05:30
Blaine Gardner 3294d96f34 Merge pull request #15119 from BlaineEXE/object-add-rgw-config-options
doc: design ceph config passthru for object store
2024-12-16 13:01:27 -07:00
Blaine Gardner d3b9b74165 doc: design ceph config passthru for object store
Add a design for CephObjectStore to allow users to pass through Ceph
configs (e.g., `rgw_enable_apis`, `debug_rgw`) to the object store. This
design will help users set configs that they want for their environments
that aren't covered under Rook's umbrella of managed configs. This will
benefit users by allowing them to make use of rare RGW features that
Rook devs don't have ability to prioritize, as well as newly-released
RGW features that Rook devs haven't had time to plan API interfaces for.
This frees up Rook developers to focus effort on implementing APIs that
have integration benefits with Kubernetes or other resources and less
effort on simple configs.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-12-12 11:44:23 -07:00
Travis Nielsen 07d8012d36 manifest: update default ceph version to v19
With the v19.2.0 release being out for some time now,
update the default version to be deployed with Rook
as v19.2.0.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2024-12-11 14:45:26 -07:00
Santosh Pillai 85c81946ce osd: enable encryption as day-2 operation
Migrate OSDs to enable encryption as day-2 operation.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
2024-12-06 09:33:03 +05:30
Emmanuel Ferdman 011a04762b docs: update Ceph Block Pool CRD reference
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-11-21 04:52:10 -08:00
Blaine Gardner 5539eedd1b multus: finish deprecating holder pods
Finish the process of deprecating holder pods by removing Rook's ability
to deploy them. The intent of this change is to make the most
superficial changes possible to accomplish this. There are still
remnants of code in Rook (particularly the CSI controller) that helped
configure or deploy holder pods. Due to the risk of breaking some
features, cleanup work of hose remnants will be deferred for future
work.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-10-23 16:29:02 -06:00
Santosh Pillai 0465908912 Merge pull request #14719 from sp98/osd-migration-api
doc: osd migration design
2024-10-08 11:25:58 +05:30
Travis Nielsen b665d7a7b7 core: remove support for ceph quincy
Given that Ceph Quincy (v17) is past end of life,
remove Quincy from the supported Ceph versions,
examples, and documentation.

Supported versions now include only Reef and Squid.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2024-10-03 11:12:55 -06:00
Santosh Pillai 2f69bd006d doc: osd migration design doc
Existing OSD migration process is limited to updating the OSD backend store. This docs proposes
a more generic API for the OSD migration that will help with other scenarios as well.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
2024-09-27 15:50:17 +05:30
Blaine Gardner 5f98d2ea3e Merge pull request #13807 from jklippel/feature/swift-and-keystone
rgw: implement support for authentication using keystone for s3 and swift
2024-08-08 09:55:34 -06:00
ee8bcad49d rgw: add support for keystone auth + swift/s3
For the specification see:
<https://github.com/rook/rook/blob/master/design/ceph/object/swift-and-keystone-integration.md>

* extend the API object specs for swift and keystone integration

* adapt rgw to the new go-ceph version

  - The parameter lists of the API call have changes, as parameters
    ignored by the RGW Admin Ops API are no longer serialized, therefore
    the mock has to be adapted.

  - There is now validation for the user keys that are passed to the
    User get API, therefore things failed when we had empty keys in our
    User proxy object.

* expand the reconcile loop for the swift and keystone integration

* fix minor mistakes in design document

* add env var to pass extra args to minikube

  Minikube decides CPU cores and memory automatically based on the
  available resources on the machine which may be insufficient to
  run rook. This commit adds an environment variable to add arbitrary
  arguments to the minikube command, so both can be specified if
  desired.

* integration tests for swift and keystone

  The new integration of swift or s3 and keystone support by rook
  does not have any integration tests yet.

  This commit introduces integration tests for swift and keystone. The
  tests are done against a minimal keystone setup (keystone container
  image from Yaook-project (https://yaook.cloud), sqlite as database
  backend, cert-manager and trust-manager for test certificate setup).

  To prevent hardcoded credentials, passwords are generated
  by the tests. The integration tests use the openstack client
  (keystone- and swift-functionality) (https://docs.openstack.org/
  python-openstackclient/ latest/). This was a concious design decision
  to use client tooling as close as possible to the end user instead of
  using other go-libraries (such as gophercloud).

* add documentation on swift and keystone

  Currently there is no documentation on the use of Swift to access
  an object store as well as the use of OpenStack keystone for
  authentication.

  This commit adds documentation on the use of Swift and OpenStack
  keystone, as well as CRD-related documentation and an example setup.

* add integration tests for S3 via keystone

  This commit introduces integration tests for s3 and keystone. The
  tests are run against the same minimal keystone setup that the tests
  for swift and keystone use.

  The integration tests use the aws s3 client to use client tooling as
  close as possible to the end user instead of using other go-libraries.

Co-authored-by: Jan Klippel <jan.klippel@uhurutec.com>
Co-authored-by: Silvio Ankermann <silvio.ankermann@cloudandheat.com>
Signed-off-by: Sebastian Riese <sebastian.riese@cloudandheat.com>
Signed-off-by: Jan Klippel <jan.klippel@uhurutec.com>
Signed-off-by: Silvio Ankermann <silvio.ankermann@cloudandheat.com>
2024-08-08 14:26:21 +02:00
Travis Nielsen 400f4edd01 Merge pull request #14455 from cobaltcore-dev/target-placement
target placement design doc
2024-08-06 11:17:11 -06:00
Blaine Gardner b4a2285aa6 object: use advertise endpoint for admin ops
RGW can only serve a single certificate. This limitation means that the
prior behavior of using the default service for admin ops when TLS is
enabled may mean it requires additional complex certificate management
to make sure the object store uses a certificate valid for Rook internal
admin ops and user connections.

This is needlessly complex for users. Instead, change Rook's behavior
and documentation to clarify that it will use the same endpoint intended
for S3 client applications. This means that users have a more
straightforward path to enabling both Rook and consuming applications.

More info: https://github.com/rook/rook/issues/14530

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-08-05 14:32:59 -06:00
Artem Torubarov e16b683257 docs: target placement storage class
Signed-off-by: Artem Torubarov <artem.torubarov@clyso.com>
2024-08-01 13:12:22 +02:00
Artem Torubarov edcedd3124 docs: pool placement design doc
Signed-off-by: Artem Torubarov <artem.torubarov@clyso.com>
2024-07-30 11:24:57 +02:00
Travis Nielsen e26920a483 manifest: update the ceph recommended version to v18.2.4
Since Reef v18.2.4 is released, set it to the default
ceph version that is deployed with Rook.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2024-07-24 11:06:09 -06:00
Blaine Gardner 00f20b1212 doc: update vhost-style S3 bucket design
Update the vhost-style S3 bucket access design doc to reflect recent
user feedback and configuration issues. The primary goal is to add a
field to disambiguate for users and Rook which endpoint should be used
for CephObjectStoreUsers, OBCs, and COSI buckets.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-07-16 16:50:50 -06:00
Liang Zheng e76dd03f54 ci: add misspell linter
add misspell linter to check all source codes

Signed-off-by: Liang Zheng <zhengliang0901@gmail.com>
2024-04-08 18:51:04 +08:00
Travis Nielsen a67d742195 Merge pull request #13913 from travisn/reef-18.2.2
core: Set default ceph version to v18.2.2
2024-03-12 10:07:45 -06:00
Travis Nielsen fdacfd51c5 object: create an object store based on shared pools
Until now, an object store would create all the necessary
metadata pools and the data pool that were exclusively
for its own object store. When isolation between object
stores is necessary, this would cause many pools and
PGs to be created in the cluster, which was not
manageable.

Now one set of pools can be created to be shared
by any number of object stores. The metadata and data
between each object store is isolated by
RADOS namespaces, which by design will keep the
data safe for multi-tenancy.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2024-03-11 11:20:57 -06:00
Travis Nielsen 026d745f8a core: set default ceph version to v18.2.2
With the release of Reef v18.2.2 we update the default
recommended version of Ceph to fix the prometheus issues
seen with v18.2.1

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2024-03-11 11:06:59 -06:00
travisn 27265ff279 helm: remove cpu limits from all pods
When CPU requests and limits are assigned to a pod,
the pod will be guaranteed the requests, up to the limits.
Even if there are spare CPU cycles, the pod cannot use
them. Thus, pods can be unnecessarily denied compute
when they need to burst if the limits are set.

Therefore, it is not recommended to set CPU limits
since the CPU requests are already guaranteeing that
no pod will be starved at least for its requests.

Signed-off-by: travisn <tnielsen@redhat.com>
2024-02-07 17:36:59 -07:00
Travis Nielsen 7b94ce6160 Merge pull request #13499 from travisn/ceph-18.2.1-docs
helm: Update cluster chart and all examples to ceph v18.2.1
2024-01-04 09:09:38 -07:00
Travis Nielsen 88d67d0b80 Merge pull request #13022 from thotz/design-doc-s3-domanin-style-bucket
doc: design specification for virtual host style for RGW buckets
2024-01-04 07:53:02 -07:00
Jiffin Tony Thottan edc0debb7a doc: design specification for DNS subdomain style for RGW buckets
Support DNS subdomain style for RGW buckets.

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2024-01-04 10:17:17 +05:30
travisn 56a3370d83 docs: update all examples to ceph v18.2.1
Since v18.2.1 is the default recommendation for the ceph version,
update all the docs and examples to that version.

Signed-off-by: travisn <tnielsen@redhat.com>
2024-01-03 14:37:11 -07:00
Blaine Gardner 18f514e8ea Merge pull request #12140 from thotz/design-doc-object-store-isolated-pools
docs: Design doc for isolated namespaces for different rgw
2023-12-08 11:01:29 -07:00
Jiffin Tony Thottan efb759c105 docs: design doc for isolated namespaces for different rgw
Using same set of pools creating isolated ceph object store for users.

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2023-12-07 22:01:23 +05:30
Alexander Trost 3097455d78 Merge pull request #13246 from koor-tech/ceph_config_via_cluster_crd_impl
operator: allow setting ceph config options via ceph cluster crd
2023-12-02 11:27:20 +01:00
Alexander Trost 4ed35d6bd6 operator: allow setting ceph config options via ceph cluster crd
This implements the "Ceph Config via Ceph Cluster CRD" design document
as a `cephConfig:` structure on the CRD.
This also fixes the `yq` commands used to manipulate the
`cluster-test.yaml` that caused CI issues for this PR and potentially
unknowingly others.

Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2023-12-02 00:05:48 +01:00
subhamkrai 28cc1ebc55 core: remove webhook & controller-runtime from apis
This commits removes controller-runtime dependencies
from the apis dir and to achieve that we are removing
webhook.

Signed-off-by: subhamkrai <srai@redhat.com>
2023-12-01 14:15:40 +05:30
Alexander Trost d7311c8e87 docs: add design doc for setting ceph config via cluster crd
Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2023-11-16 16:47:00 +01:00
Anthony D'Atri ebb8d4f043 doc: cleanup of the OSD migration design document
Signed-off-by: Anthony D'Atri <anthonyeleven@users.noreply.github.com>
2023-08-30 00:37:58 -04:00