Commit Graph
458 Commits
Author SHA1 Message Date
Travis Nielsen a3dafbe9cf Merge pull request #12715 from sp98/osd-sleep
osd: make osd pod to sleep when osds are flapping
2023-09-15 12:24:08 -06:00
sp98 4eb9f62205 osd: make osd pod to sleep when osds are flapping
When OSDs flap, ceph stops the OSD daemon if its marked down greater than
5 times in 600 seconds. But OSD pod restarts and marks the OSD `up` again.
This causes the PGs mapped to these OSDs to peer. While the PGs are peering,
IO to these PGs are blocked.

So we need to ensure that if ceph is marking OSD `down` due to flapping, OSD pod
should not restart to mark the OSDs `up` again.

This PR adds a sleep to the OSD pod if the container returned with a 0 exit code
Default behavior is to sleep for 6 hrs. But user can configure it from the
ceph cluster spec.

Signed-off-by: sp98 <sapillai@redhat.com>
2023-09-15 22:59:46 +05:30
travisn 66547d27be mgr: allow more than two mgrs
While two mgrs is considered sufficient, more mgr daemons are
now allowed in case the admin wants even more fault tolerance
to the active mgr going down, in case multiple mgrs go down.
Up to five mgr pods will be allowed. All mgrs will be in
standby mode except one active mgr. All mgr pods have a sidecar
that will update their respective pod specs with the active
or passive label.

Signed-off-by: travisn <tnielsen@redhat.com>
2023-09-14 13:29:11 -06:00
Micah Nagel 0ff224d453 helm: update docs to reflect reef support
some helm comments incorrectly indicate ceph v18 is not supported

Signed-off-by: Micah Nagel <micah.nagel@defenseunicorns.com>
2023-09-08 12:11:58 -06:00
Blaine Gardner 17f0072d9d Merge pull request #12778 from BlaineEXE/multus-allow-cidr-spec
multus: allow using NADs without inspectable CIDRs
2023-09-07 13:42:41 -06:00
Blaine Gardner 3c43268d0a multus: detect network CIDRs via canary
Change how Rook detects network CIDRs for Multus networks. The IPAM
configuration is only defined as an arbitrary string JSON blob with a
"type" field and nothing more. Rook's detection of CIDRs for whereabouts
had already grown out of date since the initial implementation.
Additionally, Rook did not support DHCP IPAM, which is a reasonable
choice for users. And more, Rook did not support CNI plugin chaining,
which further complicates NADs. Based on the CNI spec, network chaning
can result in any changes to network CIDRs from the first-given plugin.

All these problems make it more and more difficult for Rook to support
Multus by inspecting the NAD itself to predict network CIDRs. Instead,
it is better for Rook to treat the CNI process as a black box. To
preserve legacy functionality of auto-detecting networks and to make
that as robust as possible, change to a canary-style architecture like
that used for Ceph mons, from which Rook will detect the network CIDRs
if possible.

Also allow users to specify overrides for CIDR ranges. This allows Rook
to still support esoteric and unexpected NAD or network configurations
where a CIDR range is not detectable or where the range detected would
be incomplete. Because it may be impossible for Rook to understand the
network CIDRs wholistically while residing only on a portion of the
network, this feature should have been present from Multus's inception.

Improving CIDR auto-detection and allowing users to specify overrides
for auto-detected CIDRs rounds out Rook's Multus support for CephCluster
(core/RADOS) installations. No further architectural changes should be
needed for CephClusters as regards application of public/cluster network
CIDRs for Multus networks.

Signed-off-by: Blaine Gardner <blaine.gardner@ibm.com>
2023-09-07 10:12:55 -06:00
Travis Nielsen a06fd8a54d Merge pull request #12811 from parth-gr/external-name
external: change cluster_name to k8s_cluster_name
2023-08-31 08:14:00 -06:00
parth-gr 98c4567219 external: change cluster_name to k8s_cluster_name
it was confusing if we are calling a ceph cluster name
or k8s cluster name, so re-named

Signed-off-by: parth-gr <paarora@redhat.com>
2023-08-30 14:07:58 +05:30
Travis Nielsen 824a0a45d3 Merge pull request #12730 from travisn/object-user-different-ns
object: Allow creating an object user in different namespace
2023-08-25 13:00:43 -06: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
Blaine Gardner 6a0f5fbf42 Merge pull request #12774 from obnoxxx/multus-validation-job-autogen
Multus validation job automated update
2023-08-25 11:51:40 -06:00
Michael Adam 8a6b7786e0 multus: commit updated validation job manifest from make docs
Signed-off-by: Michael Adam <obnox@samba.org>
2023-08-25 18:37:16 +02:00
Michael AdamandBlaine Gardner 22882c5358 multus: auto-update the validation job manifest file with help text
Signed-off-by: Michael Adam <obnox@samba.org>

this change  introduces a new 'make target 'docs'that generates part of the documentation

It particular, it runs the `helm-docs` target.

Additionally, `make docs`  updates the  multus validation job manifest
by inserting the output of `rook multus validation run --help` between
two newly introduced markers.

The result of running `make docs` is intended to be committed to git after running

Fixes: #12706

Signed-off-by: Michael Adam <obnox@samba.org>
Signed-off-by: Blaine Gardner <b.blaine.gardner@gmail.com>
Co-authored-by: Blaine Gardner <b.blaine.gardner@gmail.com>
Co-authored-by: Michael Adam <obnox@samba.org>

Update build/deploy/generate-deploy-examples.sh

Signed-off-by: Michael Adam <obnox@samba.org>
2023-08-25 18:37:16 +02:00
Travis Nielsen e84ba84af6 Merge pull request #12751 from travisn/crd-gen-update
build: Update crds gen for new descriptions
2023-08-17 12:45:04 -06:00
Travis Nielsen 0e3117bd6e Merge pull request #12507 from sp98/osd-migration
Replace OSD to use new backend store
2023-08-17 12:40:49 -06:00
travisn 438b61721f build: update crds gen for new descriptions
The CRDs were not generated for the latest since #12384
was merged without rebasing, and other updates with a newer
dependency required the newer descriptions.

Signed-off-by: travisn <tnielsen@redhat.com>
2023-08-17 12:03:33 -06:00
Travis Nielsen afaadd78c4 Merge pull request #12384 from ideepika/feature/ksd-174
mon: add mon storage class support
2023-08-17 11:52:20 -06:00
sp98 886bb357ef osd: replace osd to use new backend store
If osd store is updated in the ceph cluster, then
delete OSDs one by one, cleanup disks and provision a new OSD on
the same disk

Signed-off-by: sp98 <sapillai@redhat.com>
2023-08-17 21:40:55 +05:30
Travis Nielsen 29f984da3a Merge pull request #12691 from subhamkrai/operator-placement
operator: move most of discover pod setting to cm
2023-08-16 13:54:23 -06:00
Travis Nielsen 9efe0b7db0 Merge pull request #12672 from subhamkrai/fix-update-vault
build: update vault and other indirect imports
2023-08-16 11:11:06 -06:00
subhamkrai fb39580067 operator: move most of discover pod setting to cm
It's better to move most of discover daemon setting
from env to configmap rook-ceph-operator-config.
Although, we are moving to configmap, we keep reading settings
from env but the priority will be configmap settings.

Signed-off-by: subhamkrai <srai@redhat.com>
2023-08-16 22:17:47 +05:30
Blaine Gardner 853bab398a Merge pull request #12495 from Nikhil-Ladha/issue12172/multus-validation-job
multus: Add sample job manifest for multus config validation
2023-08-11 13:28:07 -06:00
Nikhil-Ladha 9fea9cd865 multus: add sample job manifest for multus config validation
added a sample job manifest named `multus-validation` that
validates the multus configuration in the cluster.

Signed-off-by: Nikhil-Ladha <nikhilladha1999@gmail.com>
2023-08-11 10:55:29 +05:30
subhamkrai ab3763767f build: update vault and other indirect imports
update vault and other indirect imports. Also,
updating k8s package to `v0.28.0-rc.0` since with
v0.27.4 it was through build error.

Signed-off-by: subhamkrai <srai@redhat.com>
2023-08-08 08:24:19 +05:30
karthik-us 2675c976d5 csi: add maxUnavailable for cephfs csi daemonset
Adding maxUnavailable parameter to the cephfs csi daemonset. The
default value of maxUnavailable = 1 can make the upgrade process
slower in environments with large number of nodes.

Fixes: #12636
Signed-off-by: karthik-us <ksubrahm@redhat.com>
2023-08-07 19:48:21 +05:30
parth-gr 8a3f058329 object: fix s5cmd for s3 endpoint verification
add a new toolbox yaml manifest which will use the
rook image instead of ceph image
for running s5 cmd container needs to run with rook image

closes: https://github.com/rook/rook/issues/12227

Signed-off-by: parth-gr <paarora@redhat.com>
2023-08-04 18:29:05 +05:30
Deepika Upadhyay 0d86588620 mon: fix some of the zonal storageclass support failures
Signed-off-by: Deepika Upadhyay <deepika@koor.tech>
2023-08-03 16:41:24 +05:30
Deepika Upadhyay fa7162504e docs: update crds for mon zonal support
Signed-off-by: Deepika Upadhyay <deepika@koor.tech>
2023-08-03 16:41:24 +05:30
Travis Nielsen 3757951eca Merge pull request #12534 from Nikhil-Ladha/issue12297/add-v2-flag
external: added an optional flag for enabling v2 mon port
2023-07-31 13:20:21 -06:00
Nikhil-Ladha 5daddbe379 external: added an optional flag for enabling v2 mon port
Added a new flag `--v2-port-enable` to enable the v2 mon port.

Signed-off-by: Nikhil-Ladha <nikhilladha1999@gmail.com>
2023-07-26 18:16:06 +05:30
Blaine Gardner 6e12df32ad Merge pull request #12466 from sp98/osd-store
osd: configure backend store
2023-07-25 15:20:13 -06:00
sp98 c13d34f8d3 osd: configure backend store
Configure osd backend store from the cephCluster spec

Signed-off-by: sp98 <sapillai@redhat.com>
2023-07-24 09:16:30 +05:30
Jiffin Tony Thottan 1bf33f125e object: update ceph cosi driver image to v0.1.1
Update the ceph cosi driver image to v0.1.1, so that it can
work on both amd and arm platforms.

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2023-07-20 14:19:15 +05:30
Travis Nielsen cb44c7b88f Merge pull request #12508 from parth-gr/external0cluster-namesapce
external: create ceph cluster namespace
2023-07-18 16:45:30 -06:00
travisn 182211d26c cosi: correct capitalization for auto policy
The CephCOSIDriver deploymentStrategy requires Auto, Never,
or Always. Change the example to Auto.

Signed-off-by: travisn <tnielsen@redhat.com>
2023-07-18 13:55:48 -06:00
Travis Nielsen 2e7f9045ab Merge pull request #12460 from pgoron/admin-caps-spelling
object: align spelling of user admin capabilities with ceph
2023-07-18 13:23:15 -06:00
parth-gr f9f880e528 external: create ceph cluster namespace
We need to create the namespace with the import script,
As per the documentation

The import script creates the secrets and
cm which is later used by the operator for cluster creation.

Signed-off-by: parth-gr <paarora@redhat.com>
2023-07-19 00:37:42 +05:30
Travis Nielsen 91fea5395e Merge pull request #12415 from thotz/ceph-cosi-driver
object: adding ceph cosi driver
2023-07-18 12:12:12 -06:00
Jiffin Tony Thottan b48dc8a335 object: intial cosi driver controller design
Adding CephCOSIDriver CRD and controller. The controller will bring up
the ceph cosi driver when first object store is created in the rook
operator namespace. Then admin can defined COSI CRDs like BucketClass
and BucketAccessClass for different object stores deployed via Rook.
Using the BucketClass and BucketAccessClass, user can define
BucketAccess for backend bucket in the RGW. The CephCOSIDriver CRD
defines configuration options for ceph cosi driver. In the first version
its usability is minimal. Even if it is not defined Rook will bring up
the ceph cosi driver with default values.

Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2023-07-18 22:49:41 +05:30
Travis Nielsen 0253353add Merge pull request #12502 from neoaggelos/feat/external-keyring
external: support custom ceph keyring file
2023-07-18 11:19:25 -06:00
Angelos Kolaitis c021256e96 external: support custom ceph keyring file
When the ceph.conf is not in a well-known location, it is typical
for a custom ceph.keyring to be required as well. Currently, the
create-external-cluster-resources.py only tries to load the keyring
from well-known paths, and fails.

This commit adds a new optional argument `--keyring` to help in this
situation. When specified, create-external-cluster-resources.py will
attempt to use this as the keyring to authenticate with Ceph.

Signed-off-by: Angelos Kolaitis <neoaggelos@gmail.com>
2023-07-17 20:34:29 +03:00
Lucas Henry 393d09347e rgw: add option to disable synchronization traffic
Some users want to deploy two CephObjectStores for a single Zone. The first
configures RGWs to process the synchronization of the data, while the second
CephObjectStore configures the client RGWs.

Currently, this can be implemented by setting the RGW option
'rgw_run_sync_thread' in the 'rook-config-override' ConfigMap, though it is not
really user friendly.

Ref: https://docs.ceph.com/en/latest/radosgw/config-ref/#confval-rgw_run_sync_thread

This commit adds a new option in the CephObjectStore CRD as defined in issue
https://github.com/rook/rook/issues/12272. The new option
'disableMultisiteSyncTraffic' determine whether the operator should disable the
multisite sync threads for the RGWs.

If the option is set to 'false', or if the option is not specified, the operator
does nothing. This ensures that the multisite sync threads will not be enabled
for users that disabled explicitely the multisite sync threads either manually
or with the 'rook-config-override' ConfigMap.

This commit also recommends to use two objectstore when scaling Ceph Objectstore
Multisite replication, with one objectstore configured with disabled replication
traffic.

Signed-off-by: Lucas Henry <polyedre@disroot.org>
2023-07-17 09:27:20 +02:00
Blaine Gardner 647a4e3534 Merge pull request #12477 from parth-gr/subvolume-pinning-external
external: pin the default csi subvolume
2023-07-13 09:40:22 -06:00
parth-gr 53413e5a24 external: pin the default csi subvolume
set the csi subvolume to pin type distributed and pin setting 1
So to statically balance the PVs across all MDS ranks

Signed-off-by: parth-gr <paarora@redhat.com>
2023-07-12 20:32:27 +05:30
Javier 46cb9435a6 test: support Ceph Reef v18 with updated integration tests
update test files to support the next version of ceph, ceph reef v18

Signed-off-by: Javier <sjavierlopez@gmail.com>
2023-07-10 15:24:36 -06:00
Travis Nielsen 65f413ce1f Merge pull request #12286 from subhamkrai/fix-node-loss-rbd
core: faster recovery from rbd rwo node loss
2023-07-07 10:35:59 -06:00
subhamkrai 39b5c057ce core: faster recovery from rbd rwo node loss
in the existing node watcher, we'll check for node update
event and see if there are `out-of-service` taints are applied
and `ROOK_WATCH_FOR_NODE_FAILURE` is enabled in rook-ceph-operator-configmap,
if then we'll create the networkFence cr and delete the cr if nodes come back.
And, added the unit test too.

Signed-off-by: subhamkrai <srai@redhat.com>
2023-07-07 21:16:25 +05:30
Travis Nielsen 18e2502a69 Merge pull request #12295 from subhamkrai/remve-default-scc
security: remove default scc privileges
2023-07-07 08:24:37 -06:00
subhamkrai 48f84b37e8 security: drop all capabilities to the container
adding drop `ALL` capabilities in rook operator container
as this is not required and will remove warning in ocp cluster.

Signed-off-by: subhamkrai <srai@redhat.com>
2023-07-07 17:06:48 +05:30
Travis Nielsen 854bc7d980 Merge pull request #12143 from parth-gr/IPV6-external
external: add support for IPV6 ceph daemons
2023-07-06 15:39:05 -06:00