Commit Graph
487 Commits
Author SHA1 Message Date
Travis Nielsen cbbfd6ee37 Merge pull request #2832 from sabbot/fix-2807
Edgefs,Issue 2807: Remove glog from edgefs rook operator
2019-03-15 14:06:36 -06:00
Travis Nielsen 935a6ec77b Merge pull request #2804 from SUSE/rbdmirror-updateandwait
Ceph rbd-mirror: use updateAndWait for daemons
2019-03-15 13:22:22 -06:00
Alexander Trostandnull 49f9a11cd4 Merge pull request #2813 from dyusupov/master
support for configurable rtlfs backend

Co-authored-by: null <dmitry.yusupov@nexenta.com>
2019-03-15 20:11:16 +01:00
Travis Nielsen 511cc6c365 Merge pull request #2764 from leseb/ceph-process-tuning
Ceph memory process tuning
2019-03-15 12:18:33 -06:00
Anton Skriptsov 3e5749c18f Remove glog from edgefs rook operator
Signed-off-by: Anton Skriptsov <sabbotagge@gmail.com>
2019-03-15 10:22:53 -07:00
Dmitry Yusupov 213e440923 support for configurable rtlfs backend
Signed-off-by: Dmitry Yusupov <dmitry.yusupov@nexenta.com>
2019-03-15 10:14:44 -07:00
Sébastien Han 871054e887 ceph: implement pod restriction on memory
If someone sets limits to pod, we want to ensure the possible
experience, so we want to make sure that people do not configure
inapropriate values for certain daemons.
We decide to fail if the memory.limit is too low.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-03-15 17:35:44 +01:00
Travis Nielsen b3217173bf Merge pull request #2829 from noahdesu/dashboard-retry
retry dashboard operations
2019-03-15 07:59:32 -06:00
Sébastien Han b7fd64074c ceph: osd spec: tune osd memory target
If the spec of the OSD daemon contains resource limits, especially
memory.limit we will use that value for setting the osd memory target
value so the bluestore OSD knows the amount of memory available for its
cache.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-03-15 11:45:29 +01:00
Sébastien Han 004e2e95c3 ceph: mds spec: tune mds cache memory limit
If the spec of the MDS daemon contains resource limits, especially
memory.limit we will use that value for setting the mds cache memory
limit value so the MDS knows the amount of memory available.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-03-15 11:45:29 +01:00
Sébastien Han fa61c0441b ceph: pod: expose resource limits and requests
We now expose resource as environment variable in the pod.
They will be used by Ceph to report as a daemon metadata.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-03-15 11:45:29 +01:00
Noah Watkins 1ee7cdfa8b ceph: refactor dashboard retry logic to use helper
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2019-03-14 14:52:44 -07:00
Noah Watkins 8ebf9ac722 ceph: retry dashboard credentials setup
may need retry if manager hasn't fully loaded its modules.

fixes: #2809

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2019-03-14 14:51:50 -07:00
travisn 3548418774 print the diff for changes to the cluster crd
Signed-off-by: travisn <tnielsen@redhat.com>
2019-03-14 13:10:52 -06:00
travisn c1628141aa minimize args to mon creation in the operator
Only the args necessary have traditionally been passed to the mon package.
This has led to many properties in the mon struct, whereas we will
now simply pass the cluster crd spec to simplify.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-03-14 13:10:52 -06:00
travisn 2fd1f7345d Trigger an orchestration on any crd update and only allow a single orchestration of mons at a time
The orchestrations need to be triggered on any update to the crd.
Users today restart the operator for various scenarios when the
operator could take care of it automatically. If unsupported options
are updated, they should just be ignored.

There are two goroutines that are working with the mons.
The first is an orchestration that is triggered by the operator
at startup, or when the cluster crd is updated. The second
is the health check that triggers periodically by default every
45 seconds. These goroutines must not try to make updates at the
same time. A mutex is added so one will block if the other is
still active. The mutex is only active for the duration of working
with mons, and not an entire orchestration of mgr, osd, etc

Signed-off-by: travisn <tnielsen@redhat.com>
2019-03-14 13:10:12 -06:00
Travis Nielsen a05ce45280 Merge pull request #2693 from SUSE/SH_#2208
#2208 OSDs not automatically started when adding nodes to existing cluster
2019-03-14 13:01:29 -06:00
Stefan Haas 1f1dbc7461 issue #2208 OSDs not automatically started when adding nodes to existing cluster
Signed-off-by: Stefan Haas <shaas@suse.com>
2019-03-14 18:54:40 +01:00
Alexander Trost 6140661766 Merge pull request #2817 from jarrpa/ceph-job-placement
Allow Ceph detect version Job to accept placement
2019-03-13 20:28:51 +01:00
Blaine Gardner 6f22781961 ceph rbd-mirror: update deployment if exists
Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-03-13 12:43:46 -06:00
Travis Nielsen 73c24ddf72 Merge pull request #2789 from SUSE/rbdmirror-all-in-operator
ceph rbd-mirror: configure entirely in operator
2019-03-13 12:02:10 -06:00
Jose A. Rivera a211a3cd26 Allow Ceph detect version Job to accept placement
Signed-off-by: Jose A. Rivera <jarrpa@redhat.com>
2019-03-13 11:18:17 -05:00
Blaine Gardner c12aa6c7c5 ceph rbd-mirror: configure entirely in operator
In the form of mon, mgr, mds, and rgw, convert the rbd-mirror to be
configured completely from the operator. This is a straightforward
conversion with one functional addition: the rbd-mirror daemon stores
*no* data and has no default data dir, so the concept of a `Dataless`
daemon is here introduced.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-03-13 09:54:09 -06:00
Travis Nielsen 28d9f9a9f3 Merge pull request #2802 from ajarr/fix-2725
ceph filesystem: don't use `mds deactivate` mimic onwards
2019-03-12 12:03:24 -07:00
Travis Nielsen 63e9e65815 Merge pull request #2803 from SUSE/typo
Ceph file/mds: fix typo: mgr -> mds
2019-03-12 11:23:11 -07:00
Travis Nielsen c58e82df61 Merge pull request #2799 from JoeWrightss/patch-3
Fix typo in config.go
2019-03-12 08:37:29 -07:00
Ramana Raja 828d2dd366 ceph filesystem: don't use mds deactivate from mimic onwards
From ceph mimic (13.x) onwards, `mds deactivate` command is
deprecated. To scale down the number of active MDSes of a filesystem,
it's sufficient to set the desired number of active MDSes using
'max_mds' setting, and is no longer required to individually
deactivate the unwanted MDSes.

Resolves: #2725
Signed-off-by: Ramana Raja <rraja@redhat.com>
2019-03-12 15:04:11 +05:30
Blaine Gardner 64d8b6d66b Ceph file/mds: fix typo: mgr -> mds
Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-03-11 09:46:52 -06:00
zhoulin xie 7f8d3a35c5 Fix typo in config.go
Signed-off-by: zhoulin xie <zhoulin.xie@daocloud.io>
2019-03-10 20:32:04 +08:00
Travis Nielsen dcd24d3cca Merge pull request #2738 from SUSE/rgw-all-in-operator
Ceph rgw: configure completely from operator
2019-03-07 14:35:28 -07:00
Travis Nielsen 4d546ac63d Merge pull request #2744 from SUSE/mon-update-tests
ceph mon: update tests with new spec test lib
2019-03-07 11:23:21 -07:00
Blaine Gardner 7827ea8ff0 ceph mon: use new spec test framework
Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-03-07 08:13:07 -07:00
Blaine Gardner 086fa8231c rgw: configure entirely in operator
Configure the Ceph rgw daemon completely from the operator a la the
recent changes to the Ceph mon, mgr, and mds operators.

Create the rgw deployment or daemonset first, and then create the
keyring secret for the object store with its owner reference as the
corresponding deployment or daemonset. When the replication controller
is deleted, the secret is also deleted.

The RGW's mime.types file is now stored in a configmap with a different
file created for each object store. This is primarily just a means to
get the mime.types file into the rgw pod, but the added benefit is that
the administrator can modify the configmap, which could reduce
susceptibility to file type execution vulnerabilities (worst case).

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-03-07 08:02:42 -07:00
Sébastien Han 97a5b78a59 ceph: filesystem: deprecate flags and updates for Nautilus
The MDS mds_standby_for_*, mon_force_standby_active, and mds_standby_replay
configuration options have been obsoleted. Instead, the operator may now set
the new "allow_standby_replay" flag on the CephFS file system. This setting
causes standbys to become standby-replay for any available rank in the file
system.

Closes: https://github.com/rook/rook/issues/2768
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-03-07 13:59:14 +01:00
Blaine Gardner 079cdb56ea ceph file: tidy up file/mds operator code
Separate `file` operator from `mds` tasks logically for easier code
navigation.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-03-06 11:32:58 -07:00
travisn 31848e23e7 add the CONTAINER_IMAGE env var to the ceph daemon pods
The mgr orchestrator modules need the container image to run
the ceph image for blinking the lights when a disk is down

Signed-off-by: travisn <tnielsen@redhat.com>
2019-03-04 13:33:41 -07:00
Travis Nielsen a145f4dcb7 Merge pull request #2703 from travisn/osds-per-device-with-filter
Clean up provisioning of OSDs on devices
2019-03-04 07:58:56 -07:00
Travis Nielsen 816d698655 Merge pull request #2742 from noahdesu/dmcrypt
ceph: share host ipc namespace with provision pod
2019-03-01 13:21:05 -07:00
Noah Watkins 6597531ed0 ceph: share host ipc namespace with provision pod
this is needed as cryptsetup in the pod and udev on the host coordinate
via a semaphore that must be visible in both contexts.

note that additionally the host needs to have dmcrypt compiled with udev
synchronization, which at least one minikube version does not have.

fixes: #923

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2019-03-01 10:50:19 -08:00
Travis Nielsen eaf6b97b59 Merge pull request #2702 from SUSE/mds-all-in-operator
ceph mds: configure completely from operator
2019-03-01 06:59:15 -07:00
Blaine Gardner 4eb4fb7aa6 ceph mds: configure completely from operator
Configure the Ceph mds daemon completely from the operator a la the
recent changes to the Ceph mon and mgr operators.

Create the mds deployments first and then
create the keyring secrets for them with their owner reference as the
corresponding deployment. This will mean that the secrets do not need to
be micromanaged. When the deployment is deleted, the secret is also
deleted. This has not been necessary for the mons or the manager since
the mons share a keyring with a lifespan of the cluster, as does the
mgr, which currently has single-mgr support only.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-02-28 12:31:43 -07:00
Jeff Layton c0910dab2c ceph: retry "ceph orchestrator set backend rook" if command returns EINVAL
Use similar method as that used by the dashboard initialization code.

Fixes: https://github.com/rook/rook/issues/2617
Signed-off-by: Jeff Layton <jlayton@redhat.com>
2019-02-27 10:55:24 -05:00
Jeff Layton 56abc00b78 ceph: fix invalidArgErrorCode definition
We should probably not hardcode this value here, and instead use
whatever the syscall module thinks this is.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
2019-02-27 10:53:10 -05:00
travisn bdc3cf8146 osd: fix the device filter and improve device provisioning reliability
All devices detected by the discovery pod were being passed to the OSD provisioning pod
thus not always honoring the desired device list that should be provisioned.
Now the provisioning pod will be given the desired state from the crd,
then apply that state depending on the actual devices detected.
Also added a helper to ensure OSDsPerDevice is always valid.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-02-26 16:11:25 -07:00
Alexander Trost 818bf38b0c Merge pull request #2685 from dyusupov/master
EdgeFS: support for S3 buckets as DNS subdomain style
2019-02-23 23:21:06 +01:00
Sébastien Han eb3c424d57 Ceph messengers 2 support
This commit introduces the necessary changes to support the new
messenger feature coming with Ceph Nautilus (currently in development).

What changes? Now the monitor listens on two port:

* old 6789 for messenger v1, which will help us support older client
(e,g: krbd)
* new 3300 for messengers v2, which brings new improvement in the
messaging layer. This new transport layer brings numerous advantages
such as encryption improvement, speed improvement, pluggable nature to
support different network stack than TCP and many more.

We still have one Service IP, however it has 2 ports, see:

```
NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
rook-ceph-mon-a           ClusterIP   10.106.217.160   <none>        3300/TCP,6789/TCP   4h
rook-ceph-mon-b           ClusterIP   10.99.36.175     <none>        3300/TCP,6789/TCP   4h
rook-ceph-mon-c           ClusterIP   10.108.220.74    <none>        3300/TCP,6789/TCP   4h
````

The `ceph.conf` has changed and we don't force the port when using an IP
address (public addr etc). Ceph, depending on its version will naturally
start the monitors on their right port, 6789.

A new --ceph-version-name CLI argument has been added to the Rook binary
so that when the pod starts it passes the ceph version name and the
configuration of the ceph.conf, as well as daemon startup flags, happen
properly.

Given that the Rook Operator remembers the port of all the monitors it
deployed (through Pod definition), this change is not an issue and will
maintain backward compatibility.

Note that to test this you must build rook with dev container image,
which contains the dev Nautilus version. So you should do something
like:

`make -j4 BASEIMAGE='ceph/daemon-base:latest-master' IMAGES='ceph' build`

Resolves: #2525
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-02-22 00:09:37 +01:00
Dmitry Yusupov a30966b6e4 EdgeFS: support for S3 buckets as DNS subdomain style
Signed-off-by: Dmitry Yusupov <dmitry.yusupov@nexenta.com>
2019-02-21 09:00:42 -08:00
Bogdan Luca b60897b034 Fix typo
Signed-off-by: Bogdan Luca <luca.bogdan@gmail.com>
2019-02-20 20:10:01 +02:00
Travis Nielsen 0207f95066 Merge pull request #2652 from jtlayton/wip-nfs-scale
nfs: scale up/down ganesha servers with Active count
2019-02-18 16:34:22 -07:00
travisn ecf8d890c1 convert remaining extensions to apps api
Signed-off-by: travisn <tnielsen@redhat.com>
2019-02-14 16:48:12 -07:00