Commit Graph
3904 Commits
Author SHA1 Message Date
Sébastien Han 062e58e053 ceph: do not enforce osd-memory-target
As of Nautilus Ceph auto-tunes its osd_memory_target on the fly so we don't need to force it.
ROok does not support Mimic anymore so this can be removed.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-05-22 11:09:02 +02:00
Travis Nielsen 8bb4f603e6 ceph: default the device set template name to data
In 1.3 we added support for the metadata pvcs, thus requiring the name
to be set on the templates to differentiate between data and metadata.
For backward compatibility we need to assume the template is for data
if it is not set.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-21 11:33:16 -06:00
Travis Nielsen 5ac7b528c3 Merge pull request #5342 from rajatsingh25aug/ceph-mds-deactivate
Ceph: Newer mechanism to scale MDS for Nautilus+
2020-05-19 10:50:00 -06:00
Sébastien Han d28e2f605c Merge pull request #5490 from travisn/monitoring-goroutines
Only run the cluster monitoring goroutines once
2020-05-19 09:40:13 +02:00
Sébastien Han dce5846301 Merge pull request #5488 from travisn/host-cleanup-chan
Stop monitoring a cluster immediately when deleted
2020-05-19 08:50:15 +02:00
Sébastien Han 511772afb9 Merge pull request #5436 from sp98/obc-finalizer
finalizer for OBC cleanup
2020-05-19 08:44:38 +02:00
Sébastien Han 2c550dce83 Merge pull request #5486 from cybozu-go/ceph-stop-operator-if-critical-problems-happens
ceph: gave up to run the operator if the controller-runtime failed to start
2020-05-19 08:43:17 +02:00
Travis Nielsen 394b98cb0b ceph: cancel the host cleanup if pvc deletion pending
During cluster delection, the finalizer will not be removed until
all the PVCs are removed. Since this could wait for a long time,
as long as the deletion event is re-queued, we need to cancel
the goroutine that is watching for cluster deletion so it can
avoid running multiple goroutines as the event runs again
and again.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-18 13:07:35 -06:00
Travis Nielsen 4173bee7c1 ceph: stop monitoring a cluster when deleted
When a cluster is requested for deletion there is no longer
a reason to monitor the cluster health such as whether mons
are in quorum, osds are up and in, or monitor the ceph status.
The cluster will wait potentially for a long time if the
PVCs are not deleted by the admin, therefore we stop monitoring
the cluster even before the finalizer is removed.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-18 13:02:37 -06:00
Travis Nielsen 90fa3a6d22 ceph: set external creds if admin key is available
If the admin key is available, set the external creds struct
to use that admin username and key instead of requiring the
callers to check every time if they should use the admin
key or the external key.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-18 12:56:28 -06:00
Travis Nielsen 81dae96929 ceph: remove obsolete version from osd health check
The Ceph version information is not needed to be passed
to the osd health checker since mimic support was dropped.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-18 12:56:28 -06:00
Travis Nielsen 85b0be301e ceph: simplify ceph user for monitoring goroutines
The ceph username is all that needs to be passed to the goroutines
that are monitoring the health of Ceph. This simplifies the
initialization of the goroutines.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-18 12:56:27 -06:00
Travis Nielsen 52e15b6e36 ceph: only run the cluster monitoring goroutines once
The monitoring goroutines that check for mon and osd health,
the ceph cluster status, and the bucket provisioner should
only be started once for each cluster. Previous to this change
and since the controller runtime conversion the goroutines were
being started again every time a reconcile was run. This means
you could potentially have many goroutines monitoring the same
thing.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-18 12:55:58 -06:00
Santosh PillaiandElise Gafford 5ef88f8f09 ceph: finalizer for OBC cleanup
This PR is for rebasing #4683 with master. With new controller runtime changes most the changes with #4683 got redundant.
Only valid change is waiting for all the object buckets to be cleaned up before removing the finalizer.

Co-authored-by: Elise Gafford <egafford@redhat.com>
Signed-off-by: Santosh Pillai <sapillai@redhat.com>
2020-05-18 23:54:59 +05:30
Satoru Takeuchi f6a3da2760 ceph: gave up to run the operator if the controller-runtime failed to start
The operator continues to run even though the controller-runtime
failed to start. Since the controller-runtime is essential, the operator
is non-functional after that. It makes troubleshooting more difficult.

Closes: https://github.com/rook/rook/issues/5434

Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
2020-05-18 17:38:35 +00:00
Michael Fritch 248178e0c3 ceph: replace CACHEINODE with MDCACHE
CACHEINODE has been deprecated in favor of MDCACHE

https://review.gerrithub.io/c/ffilz/nfs-ganesha/+/454929
https://github.com/nfs-ganesha/nfs-ganesha/commit/4f4d624ceb361e2ac05e9e304583f35832921790

Signed-off-by: Michael Fritch <mfritch@suse.com>
2020-05-18 10:32:44 -06:00
Travis Nielsen 6d130864f3 ceph: set pg_num_min on new rgw metadata pools
pg_num_min needs to be set on all new and existing rgw
metadata pools so the autoscaler won't immediately
increase the pg count. The pg_num_min was only being set
on existing pools and not on new pools.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-15 16:22:38 -06:00
Travis Nielsen d1da12c6ac ceph: wait indefinitely for cleanup before removing cluster finalizer
During cluster deletion, we currently only retry for a couple minutes
to wait for the pvcs to be deleted. After the timeout, we proceed
with the cluster deletion. To properly protect the pvcs for proper
cleanup, the finalizer should not be removed until the pvcs
are all confirmed to be deleted. In order to not block other cluster
events, we re-queue the deletion event to run again every 10s
until the pvcs are deleted or the finalizer is manually removed.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-14 16:52:24 -06:00
Travis Nielsen f47bb945c2 ceph: remove duplicate controller wait setting
The controller setting for requeuing an event moved to the
opcontroller package and was no longer needed in the main
controller package.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-14 16:52:24 -06:00
Travis Nielsen 4c384953d0 Merge pull request #5462 from Madhu-1/dep-anti-aff
CSI: set pod anti affinity to provisioner pod
2020-05-14 09:29:26 -06:00
Madhu Rajanna 747865283a CSI: set deployment strategy to Recreate
updated deployment strategy of provisioner
deployment to Recreate to avoid issue during
update, Recreate strategy will Kill all existing
pods before creating new ones.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2020-05-14 11:05:54 +05:30
Madhu Rajanna a16d3bd422 k8sutil: Make client as the first argument
To have parity with other functions and
also client should be the first argument to
the function.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2020-05-14 11:02:14 +05:30
Madhu Rajanna 4febbb09b8 CSI: set pod anti affinity to provisioner pod
sometimes the kube schedular will schedule the
provisioner pod on the same node. it doesnot make
sense to have both provisioner pod running on the same
node, we need to set the pod anti affinity to make
sure that no provisioner pods runnings on the same
node.

Fixes: #5271

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2020-05-14 11:01:11 +05:30
Sébastien Han bc581da75e ceph: change rgw certificate mode
Because the secret is mounted and owned by root and the rgw is running
under the 'ceph' user then it cannot access it. So moving from 0400 to
0444 fixes the issue.

Closes: https://github.com/rook/rook/issues/5265
Signed-off-by: Sébastien Han <seb@redhat.com>
2020-05-13 18:07:53 +02:00
Sébastien Han 812f1bd4bb ceph: revert "objectstore: Add ceph group as FsGroup"
This reverts commit 68fc50686a since it
now conflict with OCP environments with the other scc in place.

Closes: https://github.com/rook/rook/issues/5468
Signed-off-by: Sébastien Han <seb@redhat.com>
2020-05-13 15:58:10 +02:00
Sébastien Han ec388ed3aa Merge pull request #5465 from leseb/obc-deletion-fixes
ceph: obc relax error handling and user deletion
2020-05-12 17:40:16 +02:00
Sébastien Han 58577a3537 ceph: obc relax error handling and user deletion
When a user or a bucket does not exist anymore, let's stop the reconcile
loop instead of waiting forever.
Also, unlink the user before deleting it otherwise the deletion fails.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-05-12 16:28:47 +02:00
Travis Nielsen 516520ff47 Merge pull request #5450 from leseb/external-workload-secret
ceph: create missing secret on external cluster
2020-05-11 14:19:27 -06:00
Sébastien Han 1fef75bc6a ceph: create missing secret on external cluster
When Rook-Ceph is connected to an external cluster and the admin tries
to create resources such as CephFilesystem or CephObjectStore, we must
create the rook-ceph-config secret so that the daemons can get their mon
information.

Closes: https://github.com/rook/rook/issues/5439
Signed-off-by: Sébastien Han <seb@redhat.com>
2020-05-11 18:51:44 +02:00
Travis Nielsen 65377cbe63 ceph: osd on pvc node assignment is node selector
An OSD on a PVC when portable=false is assigned to a node
with a node selector. The same node assignment is expected
for the lifetime of the cluster. On subsequent reconciles,
the operator was looking up the node assignment from the
nodeName on the pod spec, which is not set if the pod is down.
The operator needs to retrieve the assignment from the
deployment spec node selector.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-07 10:51:46 -06:00
Sébastien Han 2e5d6c749e Merge pull request #5362 from thotz/ssl_regression_rgw
objectstore: Add ceph group to FsGroup
2020-05-07 17:18:49 +02:00
Jiffin Tony Thottan 68fc50686a objectstore: Add ceph group as FsGroup
ceph gid (167) provided as supplymentary group, so that all the mounts can
be accessed by the same. This is required for ssl certificate consumed by
the rgw server from ceph octopus onwards.

Closes: https://github.com/rook/rook/issues/5265
Signed-off-by: Jiffin Tony Thottan <thottanjiffin@gmail.com>
2020-05-07 18:37:36 +05:30
Sébastien Han 228041902b Merge pull request #5406 from cybozu-go/ceph-cleanup-osd-on-pvc
ceph: judge whether an OSD is on PVC or not by function
2020-05-07 09:13:39 +02:00
Travis Nielsen 1e50ca374b Merge pull request #5414 from travisn/force-osd-delete-if-not-out
Delete terminating osd pods even if not out
2020-05-06 17:53:45 -06:00
Travis Nielsen 3c6bae56b7 ceph: delete terminating osd pods even if not out
When an OSD pod is stuck in terminating state, there is no need
to check if the OSD is marked as out before force deleting.
As long as the osd is down we will force delete the pod.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-06 15:43:04 -06:00
Travis Nielsen b375e81c37 ceph: allow csi driver version to be undetected
If ROOK_CSI_ALLOW_UNSUPPORTED_VERSION=false and the csi canary image
is set to quay.io/cephcsi/cephcsi:canary, the csi driver fails
to load as expected since it is not supported. But if the
flag is set to true, it is expected to allow the canary image
which isn't versioned. The supported version check was requiring
that the version be detected in the image.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-06 12:36:10 -06:00
Satoru Takeuchi 417ea131bc ceph: judge whether an OSD is on PVC or not by function
There are many duplicated code to judge whether an OSD is on PVC
or not. Instead, let's introduce a function for this purpose.
It can also be applied to the logic of judging whether an OSD
on PVC has metadata device or not.

Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
2020-05-07 00:49:17 +09:00
Travis Nielsen f82a07d441 Merge pull request #5394 from Madhu-1/csi-prio
CSI: Set PriorityClassName for CSI pods
2020-05-06 07:08:54 -06:00
Madhu Rajanna ec3ab55d94 CSI: Set PriorityClassName for CSI provisioner pods
provide an option to set PriorityclassName on the
CSI provisioner pods to avoid pod eviction, as the CSI provisioner
pods a critical in system for storage. the default value
for the CSI provisioner pods is set to system-cluster-critical.

provisioner pods are less priority than plugin pods.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2020-05-06 15:45:06 +05:30
Madhu Rajanna cc6ec58891 CSI: Set PriorityClassName for CSI plugin pods
provide an option to set Priorityclassname on the
CSI plugin pods to avoid pod eviction, as the CSI plugin pods are
critical in system for storage. the default value
for the CSI plugin pods is set to system-node-critical.
more info can be found at
https://kubernetes.io/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2020-05-06 15:45:01 +05:30
Sébastien Han 7589573e0b Merge pull request #5405 from travisn/operator-setting-logging
Log the operator settings and their source
2020-05-06 11:27:04 +02:00
Sébastien Han cecbfcfba6 Merge pull request #5372 from leseb/obc-independent-mode
ceph: add support for OBC on external cluster
2020-05-06 10:30:15 +02:00
RAJAT SINGH 9feb0287c5 Ceph: Newer mechanism to scale MDS for Nautilus+
ceph mds deactivate is not valid command for Nautilus, changing the mechnaism of upgrading so that it can be done in the way Nautilus does it.

Closes: https://github.com/rook/rook/issues/5278
Signed-off-by: RAJAT SINGH <rajasing@redhat.com>
2020-05-06 13:33:26 +05:30
Travis Nielsen cd806c83ee ceph: log the operator settings and their source
The operator settings can come either from the configmap, an
env var, or a default value. Knowing where the setting is loaded
from is an important detail to see in the log.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-05-05 13:10:01 -06:00
Madhu Rajanna 73c74d8a42 CSI: Update CSI version to v2.1.1
cephcsi v2.1.1 is released with fix for xfs formatting
issue. This PR updates the cephcsi image version to
v2.1.1

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2020-05-05 13:08:23 +05:30
Sébastien Han b86bb9c528 ceph: add support for OBC on external cluster
We can now consume an external s3 endpoint which is not managed by Rook.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-05-04 18:14:26 +02:00
Travis Nielsen c713fd30f9 ceph: restart portable osd pod if stuck
If the OSD pod is portable and is on a failed node, the node
will be stuck indefinitely in the terminating state. The pod
can be force deleted in this scenario in order to allow the
underlying volume to be detached and then mounted on another
node.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-04-30 09:52:54 -06:00
Sébastien Han 1ea73ce123 Merge pull request #5364 from Madhu-1/err-cleaup
cleanup: use err.Wrap when the formatting is not required
2020-04-30 15:57:27 +02:00
Dmitry Yusupov 9b6c1ede66 Merge pull request #5360 from dyusupov/master
edgefs: provide a way to configure ADS
2020-04-29 09:27:56 -07:00
Travis Nielsen f8e884d2ce Merge pull request #5287 from Madhu-1/resource-limit-csi
CSI: Add resource request and limit for CSI pods
2020-04-29 08:09:19 -06:00