Commit Graph
869 Commits
Author SHA1 Message Date
Sébastien Han 4438672e47 ceph: expose ceph version to osd pod
We must expose the ceph version to the osd pod so that we can generate
the proper ceph configuration file. If we don't do this all the version
check will assume they run the opposite of the desired version and the
formatting of the `ceph.conf` will be wrong.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-04-15 15:57:23 +02:00
Sébastien Han 6b84fee2ab ceph: add a CephVersionFormatted so we can consume it
Let's return the expected pattern so that can be consumed by
ExtractCephVersion later. We don't modify the built-in String() so we
can more easily remove that once we switch the osd to be configured from
the operator.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-04-15 10:52:06 +02:00
Sébastien Han b8874d7f3f ceph: allow logging control
We now run all the daemon with a new option from Nautilus 14.2.1 which
allows us to tell to a daemon to not log on file. However, we can decide
to activate logging by editing the configuration flag 'log_to_file' via
the centralized config store like this for a particular daemon:

ceph config set mon.a log_to_file true

This is useful when a daemon keeps crashing and we want to collect log
files on the system.

Fixes: https://github.com/rook/rook/issues/2881
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-04-15 10:52:03 +02:00
Sébastien Han d4c48bb293 ceph: expose /var/log/ceph to the host
It's quite convinient to expose /var/log/ceph so that we can decide to
activate logs locally on the machine and see what's going on.
This is only a placeholder when a daemon is stuck crashlooping and we
want to allow administrator to gather log files.
We still do not log on file but this can be activated via a config
option passed to the centralized config option store.

For some daemons, which typically do not store any data (rgw, rbd-mirror
and mds) we had to propagate dataDirHostPath from the cluster spec to
each creation call so that the bindmount can happen.

Fixes: https://github.com/rook/rook/issues/2881
Signed-off-by: Sébastien Han <seb@redhat.com>
2019-04-15 10:47:09 +02:00
Sébastien Han 4627b66636 ceph: expose clusterInfo to the osd code
When instanciating an osd, we now pass clusterInfo which basically
represents a collection of information about a particular Ceph cluster. Rook uses information
// about the cluster to configure daemons to connect to the desired cluster.

From clusterInfo, we use the CephVersion which helps us putting
conditions for our code execution.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-04-15 10:47:09 +02:00
Alexander Trost 30589000e3 Merge pull request #2976 from galexrt/clustername_param
rookflex: Use `clusterName` if available for backwards compatibility
2019-04-13 17:56:05 +02:00
Travis Nielsen b1b77d84d6 Merge pull request #2971 from SUSE/ceph-pods-add-rook-version-label
ceph: add 'rook-version' label to controllers
2019-04-12 15:44:25 -06:00
Blaine Gardner 685a8df08d ceph: add 'rook-version' label to controllers
Add a `rook-version` label to all controller resources used by Ceph:
deployments, daemonsets, and jobs. Labels are added to controller
resources only and not to the pod templates within because changing pod
templates causes updates due to the label change. The controller
resources themselves are not updated with the label addition and
therefore don't cause an unnecessary upgrade.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-04-12 13:56:31 -06:00
Alexander Trost 85fa159038 rookflex: Use clusterName if available for backwards compatibility
This fixes issues for users trying to delete volumes and failing because
they only have `clusterNames` set on them in Rook earlier v0.8.

Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2019-04-12 21:26:16 +02:00
Ramana Raja 7800d33171 ceph filesytem: use fs fail to bring down filesystem
A ceph filesystem was brought down by marking the filesystem
as down and individually failing the MDSes. From nautilus onwards,
this could be more simply and efficiently done by using
`fs fail` command. See,
https://github.com/ceph/ceph/commit/4c49f165ec1

Resolves: #2841

Signed-off-by: Ramana Raja <rraja@redhat.com>
2019-04-12 20:42:48 +05:30
Ramana Raja bd77c609d7 ceph filesystem: correct log message
Downing filesystem is incorrectly logged as removing filesystem.

Signed-off-by: Ramana Raja <rraja@redhat.com>
2019-04-12 20:42:48 +05:30
Alexander Trost 8bc26d9096 k8sclient: Update all operators to use apps/v1
All usages of k8s go client are now also using the versioned `AppsV1() `
call for the client.

Updated MySQL and Wordpress, and Kube Registy examples to use apps/v1
Deployments.

Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2019-04-12 09:25:42 +02:00
Travis Nielsen 8f3d62e56b Merge pull request #2936 from SUSE/cautious-osd-node-removal
ceph: remove osd host nodes only when certain
2019-04-11 12:34:24 -06:00
Blaine Gardner a80082988d ceph: remove osds only when certain
Make the Ceph operator more cautious about when it decides to remove
nodes from the Rook-Ceph cluster which are acting as osd hosts.

When `useAllNodes` is set to `true` we assume that the user wants to
have the most hands-off experience. Node removals are allowed when a
node is delted from Kubernetes and when a node has its taints/affinities
modified by the user (but not by automatic k8s modification as much as
possible).

When `useAllnodes` is set to `false` the only time a node is removed is
if it is removed from the Ceph cluster definition.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-04-11 09:41:54 -06:00
Travis Nielsen d3e681bb63 Merge pull request #2864 from SUSE/SH_#2858
prevent multiple orchestrations at the same time
2019-04-11 09:24:54 -06:00
Stefan Haas badd3bc165 ceph: Prevent multiple orchestrations at the same time. Fixes #2858
Signed-off-by: Stefan Haas <shaas@suse.com>
2019-04-11 08:57:20 +02:00
Travis Nielsen 38be11936c Merge pull request #2859 from phlogistonjohn/jjm-csi-simplify-1
Simplify Ceph CSI setup
2019-04-10 17:23:41 -06:00
Travis Nielsen 1113688aa8 Merge pull request #2952 from dyusupov/master
support for configurable trlog settings
2019-04-10 17:18:47 -06:00
John Mulligan 7ee207b0fb ceph csi: tweak options handling around enabling csi
Simplify one function and improve option wording.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
2019-04-10 17:53:28 -04:00
travisn 5ebb651e37 ceph: update the cephcluster custom resource with ceph health
The CephCluster resource will now expose the health of the ceph cluster
so admins can query the status with k8s api or kubectl instead of
needing to run the rook toolbox. The operator will query the
ceph status periodically and update the status in the custom resource.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-04-10 14:41:18 -06:00
Blaine Gardner 9c0369f264 k8sutil: extract granular node validity functions
Node validity is not always as simple as a true/false. Refactor each
validity test into its own function for operators that wish to check
validity more granularly. Ceph will use these changes.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-04-10 12:43:43 -06:00
Travis Nielsen e0d3ffdceb Merge pull request #2839 from Madhu-1/fix-drivername
Fix driver name in ceph csi driver
2019-04-10 08:51:06 -06:00
Madhu Rajanna d9dd81396c remove attacher statefulset for rbd csi driver
deploy attacher as a container inside  rbd provisioner
stateful set

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2019-04-10 18:27:08 +05:30
Travis Nielsen 2ca611a1bd Merge pull request #2940 from travisn/nautilus-support
Add nautilus to the list of supported Ceph versions
2019-04-09 21:53:14 -06:00
Dmitry Yusupov e1f61219b4 support for configurable trlog settings
Signed-off-by: Dmitry Yusupov <dmitry.yusupov@nexenta.com>
2019-04-09 15:20:18 -07:00
Blaine Gardner f126887b52 tests: add T/F/Unk. status to node ready condition
Rook previously relied on the presence of `Ready` to determine if a node
is ready, but `Ready` can have different statuses. Correct this.

https://kubernetes.io/docs/concepts/architecture/nodes/#condition

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-04-09 15:40:37 -06:00
Madhu Rajanna d99527382d replace fmt.Errorf with errors.New
if error formatting is not required
we can we errors.New()

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2019-04-09 15:48:16 +05:30
Travis Nielsen b15391819b Merge pull request #2910 from SUSE/mon-port-upgrade-fix-2854
ceph: fix for masked upgrade failures and getting integrations running again
2019-04-08 17:11:32 -06:00
Blaine Gardner 35e2fbe4e0 optest: wait longer for deployment image
The Ceph upgrade test is the only one which uses the
`WaitForDeploymentImage` method, and it has to be configured to wait
longer after upgrade at this point. Since the wait time is still
hard-coded, this method is moved to the operator's test dir to make
it clear that the method is suitable only for tests currently.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-04-08 10:30:32 -06:00
travisn 1f91eda58c ceph: add nautilus to the list of supported versions
Signed-off-by: travisn <tnielsen@redhat.com>
2019-04-07 00:03:29 -06:00
Keith Schincke 878ef8ff00 Issue 2660: Deleting CephObjectStoreUser does not delete secret
When deleting a CephObjectStoreUser the deleteUser function
attempts to delete the stored secret using the wrong name. This
patch updates deleteUser to use the same fmt.Sprintf call used in
the createUser function.

Updated CI to delete the correct CRD and check the secret is deleted.

Signed-off-by: Keith Schincke <keith.schincke@gmail.com>
2019-04-05 10:52:15 -05:00
travisn eb74bf5547 Configure a cluster in the same namespace as the operator
To simplify the deployment of Rook, both the operator and cluster crd are now created in the
same namespace in the examples. By default the operator will only manage a cluster crd
in the same namespace instead of watching for clusters in all namespaces. To manage a cluster
in another namespace, the roles in latter half of operator-common.yaml need to point to the new
namespace and the operator env var ROOK_CURRENT_NAMESPACE_ONLY should be set to false.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-04-04 12:42:08 -06:00
Travis Nielsen d984840677 Merge pull request #2930 from leseb/octopus-support
ceph: add support octopus version detection
2019-04-04 09:49:09 -06:00
Blaine Gardner 5c41da6705 ceph rgw: more robust update for selector change
Upgrading a Ceph objectstore was failing the upgrade test because the
existing method for handling the case where update errors occurred
because labels and label selectors have changed was not robust enough.
Make this more robust by attempting delete-and-create if a normal update
does not work on an rgw deployment.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-04-04 09:02:09 -06:00
Sébastien Han f1f4bcccf7 ceph: add support octopus version detection
Now we are able to detect a Ceph Octopus version.

Signed-off-by: Sébastien Han <seb@redhat.com>
2019-04-04 11:37:41 +02:00
Blaine Gardner a34fbaa594 ceph: update auth caps if get/create key fails
Update integration test suite fails on an error with getting the keyring
for the mgr. The mgr's cephx capabilities have changed and need to be
updated before get, create, or get-or-create can be called. Since other
daemons' caps may change in the future, make an attempt to update the
user's caps on any key generation. This makes the key generation more
declarative from within the operator code for individual Ceph daemons.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-04-03 15:54:00 -06:00
Blaine Gardner feff587992 ceph: mon service forwards default bind port 6789
The Ceph mon flag `--public-bind-addr` does not keep the same port as
the previous daemon run when the port is left off the flag's value. A
port is undesired since that could interfere with Nautilus' msgr2
protocol, so instead configure the mon's services to forward the default
bind port on pods (6789) to the mon endpoint's port. The endpoint port
will be 6789 for new mons, but it may be 6790 for legacy clusters.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
2019-04-03 15:53:56 -06:00
rohan47 0ecce1015c ceph: update env vars for ceph-mgr containers
pass env vars with rook-ceph-system namespace and API version to
ceph-mgr containers to remove hardcoded values from rook orchestrator in
ceph-mgr and updated the unit tests for the same

Signed-off-by: rohan47 <rohgupta@redhat.com>
2019-04-04 02:11:44 +05:30
Blaine Gardner 7f26f4aa13 ceph spec tests: allow adding required env vars
Allow adding additional required environment variables on a situational
basis to Ceph's spec unit tests.

Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
(cherry picked from commit 94bf2a6e14b88a8e965b4ad5ce1289b606e5c32d)
2019-04-04 02:11:44 +05:30
travisn 6ec255e269 Avoid silent failure during upgrade integration test
Signed-off-by: travisn <tnielsen@redhat.com>
2019-04-02 17:48:47 -06:00
Dmitry Yusupov 9ad68500fa support for configurable resource profiles
Signed-off-by: Dmitry Yusupov <dmitry.yusupov@nexenta.com>
2019-03-29 10:33:13 -07:00
Dmitry Yusupov 06b6be3866 add selector for isgw service
Signed-off-by: Dmitry Yusupov <dmitry.yusupov@nexenta.com>
2019-03-21 16:32:32 -07:00
Dmitry Yusupov d91c0560cf added serviceAccountName to swift and others
Signed-off-by: Dmitry Yusupov <dmitry.yusupov@nexenta.com>
2019-03-21 16:32:32 -07:00
Dmitry Yusupov f58fcd0fc5 Support for OpenStack/SWIFT CRD
Signed-off-by: Dmitry Yusupov <dmitry.yusupov@nexenta.com>
2019-03-21 16:32:28 -07:00
Alexander Trost 2403655cb5 Merge pull request #2837 from sabbot/PR2513-zone-support
Edgefs:2513 Add failure domain and zones
2019-03-21 16:13:11 +01:00
Alexander Trost 244752058c Merge pull request #2633 from travisn/ceph-nfs-integration-test
Base the rook ceph operator on Nautilus
2019-03-21 15:00:38 +01:00
Anton Skriptsov 4f909d86ac Edgefs:2513 Add failure domain and zones
Signed-off-by: Anton Skriptsov <sabbotagge@gmail.com>
2019-03-21 05:02:26 -07:00
travisn 531da9647c ceph: rely on ceph image creation success instead of rbd get info
Nautilus has an issue targeting Luminous when running the rbd info command.
Rook already has the info it needs for the call and can return it
after the rbd create command succeeds.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-03-20 15:15:36 -06:00
travisn 7548e76bab Increase the number of mons when nodes are added
The desired number of mons could change depending on the number of nodes in a cluster.
For example, three mons would be the min number of mons in a production cluster with at
least three nodes. If there are five or more nodes, the number of mons could increase
to five in order to increase the failure tolerance to two nodes.

This is accomplished by a new setting in the cluster CRD preferredCount. If the number
of hosts exceeds preferredCount, more mons are added to quorum. If the number
of hosts drops below the preferred count, the operator would reduce the quorum size to
the smaller desired count.

Signed-off-by: travisn <tnielsen@redhat.com>
2019-03-19 13:00:37 -06:00
Noah Watkins 379cb98689 ceph: replace release name with fine-grained version
The basic idea here is to replace the release name in the ClusterInfo
object with the fine grained version information queried at runtime.
This patch also removes the Name field from the cluster spec, which was
also runtime determined and was redundant with ClusterInfo relase name.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2019-03-18 12:57:29 -07:00