Commit Graph
46 Commits
Author SHA1 Message Date
Joshua Hoblitt 3ef0c90ef8 object: add ObjectStoreUserSpec.OpMask field
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-02-10 15:10:28 -07:00
Mörgæsis d8a809cddb docs: anchor for #enable-tls heading
Signed-off-by: Mörgæsis <morgaesis+git@morgaes.is>
2025-12-30 17:36:46 +00:00
Travis Nielsen c05768feb3 docs: add pool parameter for erasure code optimizations
Ceph Tentacle v20 comes with erasure coding optimizations
that must be enabled explicitly with a setting on the pool.
Add this setting to the docs and examples.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2025-12-04 11:42:07 -07:00
Joshua Hoblitt 39691e3e06 docs: add cephobjectrealm.spec.defaultrealm field to examples
Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2025-09-16 11:42:53 -07:00
Mörgæsis 65427d8cd1 docs: fix usage of undefined attribute
Update ceph-object-store-crd.md to use known attribute.

Signed-off-by: Mörgæsis <morgaesis+git@morgaes.is>
2025-08-31 10:28:56 +00:00
Oded Viner 182cd211ca object: mark realm as default to avoid zone creation
add defaultRealm field to cephobjectstore to allow rook to mark the
created realm as default. this prevents ceph from auto-creating a
"default" zonegroup and zone when the default is not explicitly set.
affects only non-multisite setups.

Signed-off-by: Oded Viner <oviner@redhat.com>
2025-08-07 14:48:21 +03:00
Elias Carter 5a292f1b52 doc: fixup bullet points on rgw docs
In #15961 I updated the rgw docs, but I was looking at the published
docs and the bulleting is broken now for Gateway Settings. When I was
working on the PR I was just using the markdown preview in my editor and
wan't using the `docs-preview` target. It turns out that the markdown
editor and mkdocs render things differently.

This PR fixes the bullet formatting and I verified the fix by running
`make docs-preview` on my box and double checking the local website.

Signed-off-by: Elias Carter <elias@dropbox.com>
2025-06-09 16:18:41 +00:00
Elias Carter 0605067a7d doc: improve documentation around object store certificates
The documentaiton around object store certificates does not specify how
to deal with internally issued certs being used on the RGW. From my
testing it is possible to get the rook operator to validate the RGW
certs if the entire certificate chain is put into the `cert` field of
the `sslCertificateRef` secret.

Additionally, the docs are linking to a broken civetweb link but rook is
now using the beast frontend, so I fixed that link to point towards the
beast frontend documentation instead.

There was also some confusion around the `caBundleRef` and how that is
used so I made the docs more explicit that the `caBundleRef` is used by
the RGW to connect to external services such as LGW and mulitsite RGW.

Signed-off-by: Elias Carter <elias@dropbox.com>
2025-06-05 23:01:05 +00:00
Artem Torubarov 81d0f69aae object: change log level for config from secret
Signed-off-by: Artem Torubarov <artem.torubarov@clyso.com>
2025-03-03 14:48:55 +01:00
Artem Torubarov 3b2e6f5bf6 object: allow overriding rgw config value from secret
Implements #15422
Extends existing ObjectStore configuration options with
rgwConfigFromSecret allowing to refer config value from
kubernetes secret.

Signed-off-by: Artem Torubarov <artem.torubarov@clyso.com>
2025-03-03 14:48:55 +01:00
Travis Nielsen a0b6ecf2c6 Merge pull request #15176 from BlaineEXE/doc-add-object-advanced-volmount-example
doc: add object advanced config and vol mount example
2024-12-17 11:28:45 -07:00
Deepika Upadhyay c5d27467d6 object: add rgw ops sidecar for op logs
the rgw operations for s3 can now be accessible using sidecar
rgw-ops-log availabe in json form that can be further filtered logging
for observability, this will set the rgw_enable_ops_log setting

Signed-off-by: Deepika Upadhyay <deepika.upadhyay@clyso.com>
2024-12-17 22:36:03 +05:30
Blaine Gardner c845d36b20 doc: add object advanced config and vol mount example
Add a sample to the CephObjectStore Advanced configuration section which
shows how the new `rgwConfig` option can be used with the
`additionalVolumeMounts` setting.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-12-16 16:08:22 -07:00
Blaine Gardner aaa16488de object: allow overriding rgw configs and flags
Implement #15119

Allow users to override RGW configurations by specifying Ceph config
options in the CephObjectStore. For configurations that require RGW to
be restarted when the config is applied, allow configs to be specified
as CLI arguments to the RGW as well.

This is an advanced option and is documented as such. Users should be
careful to understand the values they are setting, as there is no
validation to prevent the object store from breaking when these configs
are used.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-12-16 14:57:15 -07:00
Silvio Ankermann fcce3ca520 docs: fix misleading example for urlPrefix
The default value for protocols.swift.urlPrefix is "swift", which makes
the Swift API available at http://host:port/swift/v1. However, in the
documentation our example says "/swift", which resulted in the
unexpected endpoint http://host:port//swift/v1.

Apparently, Ceph distinguishes between both values even though their
docs[1] seem to suggest that using leading slashes is fine.

This commit fixes the examples in the documentation to use the default
value "swift".

[1]
https://docs.ceph.com/en/reef/radosgw/config-ref/#confval-rgw_swift_url_prefix

Fixes #15065

Signed-off-by: Silvio Ankermann <silvio.ankermann@cloudandheat.com>
2024-12-12 21:08:20 +01:00
Artem Torubarov 83c8ec8160 rgw: add rgw_enable_apis config option
Signed-off-by: Artem Torubarov <artem.torubarov@clyso.com>
2024-12-10 11:53:27 +01:00
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
Blaine Gardner eea43b7b79 rgw: allow users to add custom volume mounts
Allow RGW users to mount arbitrary volumes to RGW pods. This follows the
pattern that was established for NFS to support SSSD and LDAP, and
reuses much of the same code.

This opens the door wider for advanced users to take advantage of some
Ceph RGW features that Rook doesn't have first class support for.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-08-27 16:16:53 -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
Blaine Gardner a2b0b6449c object: add hosting.advertiseEndpoint config
Add CephObjectStore spec.hosting.advertiseEndpoint configuration. This
provides a clear documented default for which endpoint Rook "advertises"
to dependent resources like CephObjectStores, OBCs, and COSI
Buckets/Accesses and allows users to override the default behavior if
desired.

The current default is to round-robin an endpoint from
spec.hosting.dnsNames, which has proven to be troublesome for some
users' object store configurations. This change provides much-needed
disambiguation for users.

This may be a breaking change for some existing spec.hosting.dnsNames
users. This is unexpected but is documented.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-07-22 14:43:51 -06:00
Blaine Gardner c9d99e01a0 ci: use markdownlint to enforce mkdocs compatibility
mkdocs uses a markdown renderer that is hardcoded to 4 spaces per tab
for detecting indentation levels, including ordered- and
unordered-lists. Since we cannot easily change the renderer, begin using
a markdown linter in CI that will fail if official docs do not adhere to
the spacing rules.

As a starting point, the markdownlint config does not begin with the
default set of checks, which might overwhelm attempts to fix them.
Instead, focus on list-tab-spacing rules and a few other highly useful
checks.

markdownlint also has some gaps in its abilities that allow common Rook
doc issues to pass acceptance. However, it allows creating custom
linting plugins. Create 2 such linting plugins to check 2 things:

- all doc lines (except code blocks) must be aligned to a 4-space
  boundary, without exception. This ensures that markdown will render
  correctly with mkdocs. This unfortunately makes it possible to create
  lists that are internally aligned strangely.
- admonitions must all follow the same format of
  ```
  !!! header
      body
  ```

For the strange lists, this is allowed and renders correctly, but it
looks strange:

```md
- first bullet
- second bullet
    still second bullet
- third bullet

    has a paragraph
    of text inside

- last bullet

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2024-04-29 17:25:11 -06:00
ev c1e727384a docs: fixing typo in ceph-object-store-crd.md
Example cephobjectstore uses wrong field name for "dnsNames".

Signed-off-by: Adam Prycki <adam.prycki@gmail.com>
2024-04-23 18:36:13 +02:00
Jiffin Tony Thottan b0989ee1d2 object: add rgw dns names
The virtual hosting for bucket is provided with help of `rgw_dns_name`

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2024-03-08 13:43:25 +05:30
parth-gr 2c922c2879 doc: remove legacy rgw service documentation
the rgw service was removed, because users reported certificate
issues when Rook created Services for RGWs that had TLS (HTTPS) enabled.
It is now up to the user to create a Service if they want to use one.

part-of: https://github.com/rook/rook/discussions/13863

Signed-off-by: parth-gr <partharora1010@gmail.com>
2024-03-06 20:59:04 +05:30
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
Blaine Gardner 685a60ed76 docs: remove lingering notes about required quincy ver
Remove some lingering notes stating that features require Ceph Quincy.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2023-12-08 14:15:51 -07:00
Alexander Gil d6edc3bba4 docs: fix user capability name in object store user
Signed-off-by: Alexander Gil <pando855@gmail.com>
2023-11-02 11:58:39 +01:00
travisn 2b1cc4c7b8 object: allow creating an object user in different namespace
The object user was previously required to be created in the
same namespace as the object store and the cluster. Now,
the object user can be reconciled even in a different namespace
from the cluster and object store. The namespace would be specified
in the object user CR.

Signed-off-by: travisn <tnielsen@redhat.com>
2023-08-25 11:54:57 -06:00
Travis Nielsen f6da90d539 Merge pull request #12264 from parth-gr/rgw-external-tls
external: fqdn should be persisted
2023-05-31 14:00:59 -06:00
parth-gr f66de7b9df external: fqdn should be persisted
1) donot change rgw fqdn to ip if provided,
As now the bucket class supports the
entry of fqdn

2) update crds with new description in EndpointAddress

Signed-off-by: parth-gr <paarora@redhat.com>
2023-05-31 17:36:29 +05:30
Jiffin Tony Thottan ad0c000e6a object: add missing caps for object store user
Lot of new caps added to rgw users, reflecting same changes on the
object store user CRD.

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2023-05-26 17:36:00 +05:30
travisn 0f6b099403 docs: remove obsolete comments about old versions
Remove old mentions of rook or ceph versions that
are no longer relevant.

Signed-off-by: travisn <tnielsen@redhat.com>
2023-05-11 11:45:04 -06:00
Alexander Trost 787be917dc docs: fix ceph cluster crd list indentation issue
Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2023-01-17 15:21:39 +01:00
Blaine Gardner 17c5cf7384 object: update startup, liveness, readiness probes
Based on the latest info from the Ceph RGW team, update all probes. Get
rid of the liveness probe entirely. Update startup and readiness probes
to support return codes for misconfiguration (500) and for server-side
throttling (498 or 503).

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
2022-12-20 15:23:22 -07:00
Travis Nielsen 05590dfc9b docs: set crd page titles to crd name
The name of the CRD is more clear for finding the CRD specs
instead of a modified form of the name that was intended
to be more human readable. When someone is looking for the
CRD settings, they more naturally expect the CRD name
in the title

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2022-11-09 16:12:58 -07:00
Blaine Gardner a777b1d7d1 object: do not create service for external object stores
External CephObjectStores already have endpoints defined by
spec.gateway.externalRgwEndpoints, and if the external store is
configured with TLS (HTTPS), the store's certificates will likely not
accept connections intended for the Service endpoint Rook creates. Some
users might not be able to easily add the service endpoint to their
certificates. Therefore, don't even bother creating a Service for
external clusters.

This does introduce a few issues. The Service seems to have been
initially created to allow multiple external RGW endpoints to be
addressable via a single address in Rook. For all connections to an
external CephObjectStore with multiple endpoints, simply choose an
endpoint at random. Random selection will prevent Rook from failing to
create buckets or users on an external store if one of the external
store's endpoints fails.

The latest OBC library (lib-bucket-provisioner) allows updating the
endpoints on ObjectBuckets after they are created. This allows Rook
users to change endpoints on external CephObjectStores without breaking
all existing OBCs. It requires implementation of the new GetUserID()
library call, requires updating Provision() and Grant() calls to be
idempotent, and it requires removing the Update() call.

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
2022-11-04 17:30:30 -06:00
Blaine Gardner a7c0c7ee93 object: remove health checker
Remove the health checker for CephObjectStore. The liveness and
readiness probes go through the same code paths in RGW as creating
buckets without as much affect on the storage backend.

Full discussion: https://github.com/rook/rook/issues/11031

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
2022-10-18 13:41:46 -06:00
Sheetal Pamecha 4dd8ee9520 docs: clarify Object Pool CRD is same as Block Pool CRD
Signed-off-by: Sheetal Pamecha <spamecha@redhat.com>
2022-09-19 15:33:38 +05:30
Jiffin Tony Thottan c98628eb0f rgw: delete zone/pools for multisite configuation
Allow option to delete the zone/pools created by ceph object zone CR.

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2022-09-12 21:44:55 +05:30
Jiffin Tony Thottan 8003e764f9 rgw: add custom endpoint list option for zone
User can define his desired endpoint list in Zone CR so that it will
overwrite the default service name for rgw.

Resolves #6432

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
2022-08-17 10:03:12 +05:30
Alexander Trost fe2000e6d8 docs: rename Rook-Ceph to Rook Ceph
Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2022-08-11 14:58:57 +02:00
Jiffin Tony Thottan 5c8ca01bd0 object: adding support for sse s3 for RGW
The RGW support server side encryption with help of s3 protocol, till
now the `sse:kms` was support in which keys will be provided by the user
and but it will be saved in external management service like vault. Now
the support for `sse:s3` is added so the entire encryption key
management is performed by RGW itsels.

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2022-07-28 11:50:48 +05:30
Travis Nielsen 37a4d9e959 Merge pull request #10491 from zhucan/feat-10451
object: network mode can be set separately for cephcluster and rgw
2022-07-14 11:21:26 -06:00
zhucan 5ee75d6652 object: support separated network for objectstore
Signed-off-by: zhucan <zhucan.k8s@gmail.com>
2022-06-30 10:56:03 +08:00
Travis Nielsen 34ca5d661b docs: refactor cluster crd doc for subtopics
The cluster CR doc is extremely long and in need of refactoring.
Now we have four new sub-topics for a host-based cluster,
PVC-based cluster, stretch cluster, and an external cluster.
Each of those topics has its own description and examples.
The main cluster CR topic still contains the details about
all the possible cluster CR settings.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2022-06-27 17:04:54 -06:00
Alexander Trost 74431443e3 docs: use mkdocs and restructure docs
Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2022-05-18 16:06:22 +02:00