Commit Graph
243 Commits
Author SHA1 Message Date
Travis Nielsen eea375ece7 Merge pull request #2698 from darshanime/unhide_cobra
unhide cobra commands
2019-02-22 14:11:12 -07:00
darshanime f24230481f unhide cobra commands
Signed-off-by: darshanime <deathbullet@gmail.com>
2019-02-22 14:04:21 +05:30
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
Travis Nielsen 649f5977fc Merge pull request #2511 from humblec/final
This PR contains linter corrections on various sources.
2019-02-20 11:01:03 -07:00
Humble Chirammal 5a899a7c7d linter corrections on various sources.
*) Remove punctuation/newline at error strings.
*) Document exported functions and variables.

Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
2019-02-20 19:29:54 +05:30
Travis Nielsen a5aadf0701 Merge pull request #2580 from rootfs/csi-driver
Deploy ceph-csi driver
2019-02-13 08:31:13 -07:00
Huamin Chen 3806baffe1 add ceph csi deploy options
Signed-off-by: Huamin Chen <hchen@redhat.com>
2019-02-12 21:20:41 -05:00
Blaine Gardner 03ea5f0a7c ceph mgr: configure completely from operator
Configure the Ceph mgr daemon completely from the operator a la the
recent changes to the Ceph mon operator.

The pod spec for the mgr changed quite a bit, and instead of updating
the unit tests of questionable use, some additional unit test tools
applicable to any Ceph daemon have been added and used with the mgr. The
mgrs unit tests should now be more useful and get in the way of devs
less, and they can be used by other daemons later.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-02-11 14:35:01 -07:00
Blaine Gardner ec416cdd92 ceph mons: set up entirely in operator
Make the Rook config-init unnecessary for mons, and remove that init
container. Perform all mon configuration steps in the operator, and set
up the mon pods and k8s environment such that only Ceph containers are
needed for running mons.

This should help streamline changes to the mons, as there will be no
need to change the `daemon/mon` code or `cmd/rook/ceph` code with mon
changes in the future.

This work starts to lay the groundwork for supporting the
`design/ceph-config-updates.md` design.

Notable new bits:

Create a keyring secret store helper for storing dameon keyrings, and
use it to store the mon keyring. Mon pods mount the keyring into a
k8s secret-backed volume.

Create a configmap store for the Ceph config file which can be mounted
into pods/containers directly to /etc/ceph/ceph.conf. Also store
individual mon_host and mon_initial_members values which can be mapped
into pods as environment variables and used in Ceph commandline flags,
enabling the mon pods to have the most up-to-date information about the
mon cluster when restarting and without need for operator intervention.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-02-05 06:19:59 -07:00
travisn bd25630d91 allow disabling of fsGroup in the flex driver
Signed-off-by: travisn <tnielsen@redhat.com>
2019-01-24 07:53:44 -07:00
Madhu Rajanna 6349ce8e0d cassandra,edgefs: Fix misspelled words
This PR fixes the misspelled words in comment
and struct fields.

Signed-off-by: Madhu Rajanna <mrajanna@redhat.com>
2019-01-17 15:40:05 +05:30
Humble Chirammal 36112b2a86 This PR contains linter corrections on various sources.
*) Remove punctation at error strings.
*) Document exported functions and variables.

Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
2019-01-17 08:52:50 +05:30
travisnandjtlayton 37a005b71e nfs: configure and start daemons when the nfs crd is created
Co-authored-by: jtlayton <jlayton@redhat.com>
Signed-off-by: travisn <tnielsen@redhat.com>
2019-01-15 13:48:58 -07:00
Timothy Allen ae46f31882 Add ENV flag for selinux labeling
Signed-off-by: Timothy Allen <kex.allen13@gmail.com>
2019-01-10 15:05:39 +00:00
travisn 261aae3f46 mgr: set the server_addr for the dashboard and prometheus modules
Signed-off-by: travisn <tnielsen@redhat.com>
2018-12-20 12:08:37 -07:00
Jared Watts 99379308ba Merge pull request #2325 from yanniszark/cassandra-operator-scale-down-implementation
[cassandra operator] Scale Down Implementation
2018-12-07 12:28:06 -08:00
travisn fe4a645844 osd: detect existing osds not to be passed to ceph-volume
Signed-off-by: travisn <tnielsen@redhat.com>
2018-12-07 10:50:37 -07:00
travisn 1389cc56db ceph: enable multiple osds per device
Signed-off-by: travisn <tnielsen@redhat.com>
2018-12-07 09:29:15 -07:00
Yannis Zarkadas a9178ccb59 cassandra: sidecar-side implementation of scale down
The sidecar now has a control loop, which watches its ClusterIP
Service for the `cassandra.rook.io/decommissioned` label.
If it finds it, then it decommissions and updates the label to
value "true".

Signed-off-by: Yannis Zarkadas <yanniszarkadas@gmail.com>
2018-12-07 13:46:46 +02:00
Yannis Zarkadas f5a41e9a7c cassandra: controller-side implementation of scale down
Code handling the scale down on the side of the controller.
Also, some new util functions.

Signed-off-by: Yannis Zarkadas <yanniszarkadas@gmail.com>
2018-12-07 13:46:45 +02:00
travisn 78b8011226 osds: prototype provisioning with ceph-volume
Signed-off-by: travisn <tnielsen@redhat.com>
2018-12-06 21:28:58 -07:00
Dmitry Yusupov 63c30a03ec Edgefs CMDs
Signed-off-by: Dmitry Yusupov <dmitry.yusupov@nexenta.com>
2018-12-05 23:05:42 -08:00
travisn a29b876337 rename ceph v1 crds with the ceph prefix
Signed-off-by: travisn <tnielsen@redhat.com>
2018-12-05 16:23:55 -07:00
Yannis Zarkadas 367d485407 cassandra: sidecar implementation
Implementation of the cassandra sidecar logic.
This sidecar helps us inject our custom values during startup
and provides HTTP liveness and readiness checks.
In the future it will also be used for:
- Shutting Down / Decommissioning a cassandra instance
- Backups
- Restores

Signed-off-by: Yannis Zarkadas <yanniszarkadas@gmail.com>
2018-12-05 12:47:26 +02:00
Yannis Zarkadas 0ccc04cccd cassandra: controller scaffolding, image build and manifests
Scaffolding of a Kubernetes controller using the informer-workqueue
pattern.
Dockerfiles and Makefiles to build the cassandra operator image.
Manifests to deploy the Cassandra operator and create a Cluster CRD.

Signed-off-by: Yannis Zarkadas <yanniszarkadas@gmail.com>
2018-12-05 12:44:29 +02:00
Alexander Trost ac19f85fbb Allow specifying custom Ceph user and secret name for mounting
Introduce mount security mode for basic multi tenancy

Fixes #2164.

This adds three new parameters/options to StorageClass/flexvolume entry:
* `mountUser`
* `mountSecret`
* `mountSecretNamespace`

Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2018-12-04 20:17:15 +01:00
Travis Nielsen 9654e51db1 Merge pull request #2290 from travisn/rbd-mirror
Enable rbd mirror daemon in the cluster crd
2018-11-30 08:54:40 -07:00
Blaine Gardner 9ae6dfcd25 Ceph osd: terminate fatal on pod init failures
Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2018-11-28 14:56:03 -07:00
travisn fdd64bb95a enable rbd mirror daemon in the cluster crd
Signed-off-by: travisn <tnielsen@redhat.com>
2018-11-28 08:29:57 -07:00
Travis Nielsen b255d8fb75 Merge pull request #2219 from anguslees/norelabel
Disable SELinux relabelling
2018-11-13 23:32:56 -07:00
travisn 94a7a0d4bc run daemons with the ceph image instead of rook
Signed-off-by: travisn <tnielsen@redhat.com>
2018-11-01 11:49:35 -06:00
travisn 01dc5656f3 reduce frequency of device discovery
Signed-off-by: travisn <tnielsen@redhat.com>
2018-10-17 09:56:47 -06:00
Angus Lees 72278a7e15 Disable seLinux relabelling
seLinux relabelling breaks (times out) on large filesystems, and
doesn't work with cephfs ReadWriteMany volumes (last relabel wins).

See also https://github.com/kubernetes/kubernetes/blob/02cca1f11a8ae570369540564604d0cde06e0720/pkg/volume/cephfs/cephfs.go#L209

Fixes #2177

Signed-off-by: Angus Lees <gus@inodes.org>
2018-10-15 21:40:56 +11:00
travisn b43f0056ed rgw: generate config in init container
Signed-off-by: travisn <tnielsen@redhat.com>
2018-10-09 21:43:24 -06:00
Travis Nielsen 7de9624e91 Merge pull request #2153 from SUSE/ceph-mds-use-init-container
Ceph mds/file: Set up config in init container
2018-10-08 11:24:14 -06:00
Blaine Gardner ce803fbf9d Ceph mds/file: Set up config in init container
Progress toward issue #2003.
Includes design from design doc PR #1578

Use init containers to create configuration for Ceph mgrs. There is only
one init container in this design. The init container calls the Rook
binary to create Ceph config files which are then shared with the mds
daemon main container.

Once this init is run, the main mds daemon is run. Leaving room to use
the Ceph-versioned image in the future, call `ceph-mds --foreground ...`
to run the Ceph mds.

The refactor to using an init container also necessitated refactoring
the mdses replicaset implementation to a deployment-per-pod
implementation due to a chicken-egg problem. With a single container (in
the before times) the Rook binary was able to call the ceph-mds daemon
with an id generated from the pod name. Since the pod name is not known
before runtime, and the id is one of the few params that must be
specified to Ceph daemons on run, it is necessary to know the id
beforehand; thus the move to a deployment architecture following the
likes of the mon and mgr daemons.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2018-10-05 19:01:12 -06:00
Huamin Chen 97d20f9833 don't print console logs during flex driver call
Signed-off-by: Huamin Chen <hchen@redhat.com>
2018-10-03 08:46:28 -04:00
Travis Nielsen 6f63d16e69 Merge pull request #2146 from travisn/osd-run-with-daemon-image
Enable filestore on device scenario to run with ceph image
2018-09-26 13:19:08 -06:00
Travis Nielsen 19da8856f0 Merge pull request #2159 from rootfs/no-logging
Revert "log the output of blkid to see if device should be formatted"
2018-09-26 11:03:10 -06:00
travisn 15f6ee5b14 osd: enable filestore on device scenario to run with ceph image
update osd specs to be consistent with other daemons

Signed-off-by: travisn <tnielsen@redhat.com>
2018-09-26 10:36:16 -06:00
Huamin Chen 3832708c4f Revert "log the output of blkid to see if device should be formatted"
This reverts commit c67542829b.

Signed-off-by: Huamin Chen <hchen@redhat.com>
2018-09-26 12:42:49 +00:00
Ganesh Maharaj Mahalingam 30dcd26da9 Enable glog logging
Change enables glog logging and also make default flag values
configurable.

Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
2018-09-24 13:17:25 -07:00
Blaine Gardner ca71b7a311 Ceph mgr: Set up config in init container
Progress toward issue #2003.
Includes design from design doc PR #1578

Use init containers to create configuration for Ceph mgrs. There is only
1 init container in this design:
 1. Using the Rook image, call the Rook binary to create Ceph config
files shared with the mgr daemgr container.

Once this init is run, the main mgr daemgr is run. Leaving room to use
the Ceph-versioned image in the future, call `ceph-mgr --foreground ...`
to run the Ceph mgr.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2018-09-21 13:11:08 -06:00
Travis Nielsen 5d735cfc07 Merge pull request #2113 from travisn/log-format-status
Log the output of blkid to see if device should be formatted
2018-09-17 20:36:32 -06:00
travisn c67542829b log the output of blkid to see if device should be formatted
Signed-off-by: travisn <tnielsen@redhat.com>
2018-09-14 08:27:02 -06:00
Blaine Gardner 655692e845 Ceph mon: Set up config in init containers
Progress toward issue #2003.
Includes design from design doc PR #1578

Use init containers to create configuration for Ceph mons. There are 3
init containers in this design:
 1. Using the Rook image, call the Rook binary to create Ceph config
files ultimately stored in a k8s EmptyDir which is shared between all
containers in a mon pod.
 2. Leaving room to use the Ceph-versioned image in the future, call
`monmaptool` to generate the monmap, stored in a shared config dir.
 3. Leaving room to use the Ceph-versioned image in the future, call
`ceph-mon --mkfs ...` to set up the mon filesystem on the host's disk.

Once this init is run, the main mon daemon is run. Leaving room to use
the Ceph-versioned image in the future, call `ceph-mon --foreground ...`
to run the Ceph mon.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2018-09-12 17:56:08 -06:00
Blaine Gardner 4be911c5b1 Ceph: include daemons as <dmn>daemon
To help with code readability, include daemons from `pkg/daemon/ceph`
as `<dmn>daemon "github.com/rook/rook/pkg/daemon/ceph/<dmn>`. This will
make it easier to understand code lines without needing to scroll up to
check the includes, as there are mon/mds/mgr/osd/rgw packages for
daemons as well as operator and cmd.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2018-09-06 09:40:00 -06:00
Blaine Gardner 3731f06176 Ceph: Refactor mon config/keyring to cephconfig
Create a cephconfig module in Ceph's daemon pkg source, and refactor the
config and keyring generation that exists in the mon package into the
new cephconfig package. The config/keyring generation code is used by
most all daemons and not just mon, so a new package is a more
appropriate place for this.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2018-09-05 10:17:11 -06:00
travisn 5f01178e83 mon: set names based on chars instead of integers
Signed-off-by: travisn <tnielsen@redhat.com>
2018-08-30 22:18:53 -06:00
Dennis Chen 3f46c44ee8 Correct the rookflex usage information
As the `rookflex` volume plugin, the root command should be
`rookflex` instead of `rook`, else we'll get below confusing
message:

```
...bin/#./rookflex help
Rook Flex volume plugin

Usage:
  rook [command]

Available Commands:
  help        Help about any command
  init        Initialize the volume plugin
  mount       Mounts the volume to the pod volume
  unmount     Unmounts the pod volume
```

Signed-off-by: Dennis Chen <dennis.chen@arm.com>
2018-08-23 16:24:00 +08:00