Commit Graph
1007 Commits
Author SHA1 Message Date
travisn 9d7474467c set the fully qualified apiVersion for OwnerReferences
OwnerReferences are now created with the fully qualified apiVersion
such that the references will work properly on OpenShift.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-07-01 06:55:08 -06:00
travisn 8226d577f6 remove obsolete check for setting the resource ownerreferences
The check for whether to set the OwnerReferences is no longer
necessary. When passing the correct value to the apiVersion,
the OwnerReferences can be successfully set for OpenShift.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-07-01 06:55:07 -06:00
Blaine Gardner 004f795a79 Merge pull request #3326 from krig/rook-binary-location
ceph: Look for binaries on PATH if not found
2019-06-25 09:51:45 -06:00
Travis Nielsen e663624827 Merge pull request #3324 from Madhu-1/csiv1.1.0
update rook to use ceph-csi canary image
2019-06-25 08:24:21 -06:00
Sébastien Han bc50971b75 Merge pull request #3268 from noobaa/guy-init-context
Refactor operator context init and allow to run local
2019-06-25 14:20:42 +02:00
Madhu Rajanna 71f369303e update rook to use ceph-csi canary version
ceph-csi canary version is close to ceph-csi v1.1.0
release

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2019-06-25 17:15:46 +05:30
Alexander Trost 9b7eff4ab2 Merge pull request #3321 from phantooom/rui.zou/fix-3141
Minio: throw validatefunc err msg
2019-06-24 18:39:27 +02:00
Sébastien Han d3845e7f75 ceph: stop enforcing crush tunable
This requirement is long gone and was reported in 2017. Clients should
have been updated by then, so there is no reason to set the CRUSH
tunable to such an old client. Actually, we should let Ceph run its own
tunable. They can always be changed later. Also, this was really
restrictive and applied on every orchestration and thus would override
any other config done by an administrator. Even worse, this will trigger
data movement back and forth...

Closes: https://github.com/rook/rook/issues/3138
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-24 09:47:32 +02:00
Kristoffer Grönlund b3ba6b40fd ceph: Look for binaries on PATH if not found
Similarly to #2675, try to find the rook binary
on PATH in case it isn't found in /usr/local/bin/rook.

Distributions generally disallow installing files
into /usr/local, as it is reserved for non-system
installations by the FHS.

Signed-off-by: Kristoffer Grönlund <kgronlund@suse.com>
2019-06-21 19:15:56 +02:00
Guy Margalit 2ce2382676 Refactor operator context init and allow to run local
Signed-off-by: Guy Margalit <guymguym@gmail.com>
Co-Authored-By: Sébastien Han <seb@redhat.com>
Co-Authored-By: Travis Nielsen <tnielsen@redhat.com>

This change is meant to allow running operators locally on a developer machine.
The idea is to allow faster development cycles by reducing the time and complexity of building -> deploying -> debugging on cluster.

For operators that rely only on kubernetes API this works easily - see cockroachdb and minio examples in development-flow doc.

The change includes:

- rook.NewContext() - Refactored to remove repeating initialization code that was copy-pasted in most of the operators in order to create the clusterd.Context and the Clientsets. Also it detects the mode of working in-cluster vs external and sets up the external mode with standard user config (~/.kube/config) and a job executor.
- rook.GetOperatorImage() - Refactor this repeating code in many operators to detect the operator pod image. Also added a global flag --operator-image that developers can use to override this when running locally.
- rook.TerminateOnError() - Added a convenient function.
2019-06-19 20:47:55 +03:00
xiaorui.zou 0ab2309911 Minio: throw validatefunc err msg
Signed-off-by: xiaorui.zou <xiaorui.zou@gmail.com>
2019-06-19 16:08:35 +08:00
Travis Nielsen 818ad9c7ca Merge pull request #2939 from travisn/delay-system-daemons
Delay starting the Rook system daemons until a CephCluster CR is created
2019-06-18 16:52:12 -06:00
Travis Nielsen 1d35f26302 Merge pull request #3313 from leseb/osd-sdn
ceph: osd: fix startup on sdn
2019-06-18 16:13:52 -06:00
Travis Nielsen 9df4b24197 Merge pull request #3117 from rohan47/osd_marked_out
Clean up the OSD after the OSD is marked "out"
2019-06-18 08:13:35 -06:00
Sébastien Han b2f2ff6b9d ceph: osd: fix startup on sdn
This commit adds a new flag to the osd startup so that on msgr2 (default
on Nautilus and above) the osd is able to find the IP address in the
container to bind to.

This requires this Ceph patch https://github.com/ceph/ceph/pull/28589
and is already present in Octopus.

Closes: https://github.com/rook/rook/issues/3140
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-18 10:19:19 +02:00
travisn c6c4a9b42a ceph: delay starting the system daemons until a cluster is created
When the operator first starts, the only operation needed
is to watch for new cephcluster crds to be created and
start the discovery to find available devices. The flexvolume
agent, the csi driver, and the volume provisioning can all be delayed
starting until the first cluster is created.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-06-17 15:44:33 -06:00
Travis Nielsen 8da2221296 Merge pull request #3283 from leseb/rgw-refactor
ceph: refactor rgw bootstrap
2019-06-14 15:17:58 -06:00
Travis Nielsen 488fe64815 Merge pull request #3281 from phantooom/master
Fix onDelete func panic
2019-06-14 11:59:35 -06:00
rohan47 a420db69fe osd: Clean the osds that are out and safe-to-destroy
- When an osd is marked out, and it is safe to be destroyed then delete the osds deployment.
- Removed osdGracePeriod
- Updated unit tests to test osd marked out action

Signed-off-by: rohan47 <rohgupta@redhat.com>
2019-06-14 22:50:33 +05:30
Sébastien Han 93b2448619 ceph: refactor rgw bootstrap
This commit does multiple things:

* remove support for AllNodes where we would deploy one rgw per node on
all the nodes.
* a transition path is implemented in the code so that if someone has an
existing deployment, daemonsets will be removed and replaced by an
deployments.
* when using "instances", each rgw deployed has its own key which makes
Ceph reporting the exact number of rgw running, see:

```
[root@rook-ceph-operator-775cf575c5-bh4sr /]# ceph -s
  cluster:
    id:     611fcf39-0669-4864-9a12-debb35c0397a
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum a,b,c (age 12h)
    mgr: a(active, since 12h)
    osd: 3 osds: 3 up (since 12h), 3 in (since 12h)
    rgw: 3 daemons active (my.store.a, my.store.b, my.store.c)

  data:
    pools:   6 pools, 600 pgs
    objects: 235 objects, 3.8 KiB
    usage:   3.0 GiB used, 84 GiB / 87 GiB avail
    pgs:     600 active+clean
```

Closes: https://github.com/rook/rook/issues/2474, https://github.com/rook/rook/issues/2957 and https://github.com/rook/rook/issues/3245
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-14 17:55:15 +02:00
John Mulligan 431f504cd4 ceph: create and maintain a config map for ceph csi to consume
Create and maintain a config map that meets the requirements of
the ceph csi such that Rook can maintain the contents of config
map with up-to-date mon information to be used later by csi.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2019-06-14 10:45:41 -04:00
Sébastien Han f6f1aa772f rgw: remove legacy code
This code can be removed since 1.0 shipped.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-14 16:28:17 +02:00
Sébastien Han cba9a359a0 ceph: upgrade apply osd nautilus flag
When OSDs are running on Nautilus we always disable old osd features and
aplpy the onces for Nautilus as described in the upgrade doc.
During an upgrade or the next time an orchestration will be called the
command will be applied. The command is idempotent so we can run it each
time.
This can be backported for 1.0.3

Closes: https://github.com/rook/rook/issues/2960
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-13 22:15:15 +02:00
xiaorui.zou b3cd67f871 Fix onDelete func panic
onDelete obj in some case will return DeletedFinalStateUnknown type, we need use assert.

Signed-off-by: xiaorui.zou <xiaorui.zou@gmail.com>
2019-06-13 09:31:53 +08:00
Ashish Ranjan 5a19ab9545 ceph: enhance server to search for rookflex
Signed-off-by: Ashish Ranjan <ashishranjan738@gmail.com>

This commit enables server to search for `rookflex` binary instead of assuming it to be present in `/usr/local/bin/`.

Fixes: https://github.com/rook/rook/issues/2486
2019-06-12 23:36:09 +05:30
Sébastien Han 0317de9096 rgw: change default frontend on nautilus
As per: ceph/ceph#26599, Beast is now the
default fronted for rados gateway.
Newly created cluster as of Nautilus will use it by default.

Re-added version of 03587352d5
Resolves: #2707
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-07 23:10:11 +02:00
Travis Nielsen f2c49ea034 Merge pull request #3165 from d-luu/resource_comparer
ceph: added comparer for resource quantity when checking cluster changes
2019-06-07 11:15:33 -07:00
Travis Nielsen 40ea3e65a2 Merge pull request #3274 from dyusupov/master
Enable proper usage of metadataOnly property
2019-06-07 10:45:03 -07:00
Sébastien Han 6438d9907e ceph: retry on detecting ceph version
Sometime the kube engine needs a bit of time to return the logs of a
given job and fails to read the stream.
Retrying up to detect the Ceph version seems reasonnable to
overcome this issue.

Fixes: https://github.com/rook/rook/issues/3227
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-07 18:13:38 +02:00
Travis Nielsen 6d1ccadd4b Merge pull request #3256 from noahdesu/device-hotplug-update
discover: handle false-positives observed by users
2019-06-07 08:55:00 -07:00
Travis Nielsen c0276802f5 Merge pull request #2564 from travisn/toplevel-fsgroup
Set fsgroup on the top level of the mount
2019-06-07 08:53:59 -07:00
Noah Watkins 3966f163ed discover: handle false-positives observed by users
the only exception to a naive device list comparison had been to ignore
drive UUID information which was unreliable when a device wasn't
formatted / partitioned. however various users have reported different
type of false positives that resulted in orchestration being run
continuously due to the wrong observation that devices were changing.

this patch fixes the cases we have observed and attempts to be slightly
more conservative in the calculation.

1. the devlinks is ignored. when a device is setup for lvm, for example,
the devlinks will be updated with different paths that point to the
device in addition to its standard paths addressable by pci address.

2. in the lvm case, the "model" field and "filesystem" field may also
change.

3. we ignore devices with devlinks that contain "usb" to avoid issues
when using usb drives.

4. be smart about detecting device availability. if a device transitions
from a non-empty (or has-partitions) state to an empty (or unpartitioned)
state then orchestration is triggered. this like observing that a device
is now available (e.g. in the allDevices case). however, when a device
transistions from empty to non-empty, then this is ignored as while it
is a change, it's generally a change associated with the new consumption
of the device.

fixes: #3059
fixes: #3185
fixes: #3131

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2019-06-07 08:22:08 -07:00
Sébastien Han d3c8d5612b ceph: add resource limit check for rbdmirror
The memory check was missing and will be trigger if resources limit are
configured for the rbdmirror pod.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-07 15:06:16 +02:00
Sébastien Han 24abbddf14 ceph: fix pod memory check
This commit fixes the second test case where limit and request are
either identical or different but still we use limit as a value.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-07 15:06:16 +02:00
Dmitry Yusupov 41d92cee3e enable proper values for metadataOnly property
Signed-off-by: Dmitry Yusupov <dmitry.yusupov@nexenta.com>
2019-06-06 21:12:04 -07:00
travisn fd341ae928 ceph: set the fsgroup only on the top level of the mount
If setting the fsgroup recursively on a shared filesystem mount is
not desirable, the fsgroup capability on the flex driver
should first be disabled in the operator env vars. Now the driver
will apply the fsgroup only at the top level instead of
recursively for the entire shared filesystem.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-06-06 17:17:29 -07:00
DL186038 d22886da37 ceph: added resource quantity comparer when checking cluster changes
the resource struct has non-exportable fields which panics when
doing the diff comparison

Signed-off-by: d-luu <david@davidluu.info>
2019-06-06 15:39:50 -05:00
rohan47 a380ca7dc1 fixed ceph pg dump pgs_brief json deserialization
Signed-off-by: rohan47 <rohgupta@redhat.com>
2019-06-06 21:54:37 +05:30
Travis Nielsen d5523086b6 Merge pull request #3265 from leseb/rgw-liveness
ceph: rgw add liveness probe check
2019-06-06 10:05:27 -06:00
Travis Nielsen 298dc100c7 Merge pull request #3262 from noahdesu/log-recovered-osd
ceph: log osd recovery at info level
2019-06-05 08:14:41 -06:00
Sébastien Han 241296be8a ceph: rgw add liveness probe check
We now check if the pod responds on http port 80.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-06-05 14:35:15 +02:00
Santosh Pillai ec2e6ea888 use ceph fsid to filter ceph volume OSDs
- Updated getCephVolumeOSDs method to use fsid filter while retriving devices.
- This solves "failed to fetch mon config (--no-mon-config to skip)" error when multiple ceph clusters are running on same Node

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
2019-06-05 12:05:56 +05:30
Noah Watkins 71c88ae9e9 ceph: log osd recovery at info level
for the osd recovery case (DOWN->UP) log at a matching log level as the
message indicating the OSD went down.

fixes: #2904

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2019-06-04 13:57:49 -07:00
Travis Nielsen 1daa70f79c Merge pull request #3085 from christianhuening/feat-2271
added Liveness Probe to Ceph Mgr
2019-05-28 17:26:12 -06:00
Blaine Gardner e8a638dcba ceph nfs: fix the host path for pod volume
Path previously did not use dataDirHostPath. It should, so fix this.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-05-19 06:33:04 -06:00
Alexander TrostandMaksim Nabokikh 1d004e5b4a ceph: add metrics for flexvolume driver (#3128)
ceph: add metrics for flexvolume driver

Co-authored-by: Maksim Nabokikh <maksim.nabokikh@flant.com>
2019-05-19 13:50:15 +02:00
Christian Hüning f0699c40bf Added Liveness Probe to Ceph Mgr
This will configure a liveness probe for every ceph mgr deployment

Signed-off-by: Christian Hüning <christian.huening@figo.io>
2019-05-17 07:24:28 +02:00
Travis Nielsen 0c23e1cd4b Merge pull request #3182 from sabbot/Edgefs-bugfix-3181
Edgefs: Prevents multiple targets deployment on the same node
2019-05-15 14:31:55 -06:00
Anton Skriptsov a0edbf627f Edgefs:3181 prevents multiple targets deployment on the same node
Signed-off-by: Anton Skriptsov <sabbotagge@gmail.com>
2019-05-15 11:45:59 -07:00
Santosh Pillai 7d5afa29b8 added device class pool property
- Updated code to use deviceClass property when a pool is created for both "replicated" and "erasure code".
- Updated "ceph crush rule create-..." command to use "create-replicated" instead of "create-simple"
- Updated unit tests
- Updated (ceph-pool-crd.md) documentation to reflect the changes.
- Updated pending release notes.

Signed-off-by: Santosh Pillai <sapillai@redhat.com>
2019-05-15 16:45:39 +05:30