Add a package called 'spec' to the Ceph operator to store resource
definition specs that are shared by all Ceph daemons.
Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
Add functions for helping test Kubernetes volumes and volume mounts.
- Create functions for testing the existence of volumes/mounts by
name in a list of vols/mounts without needing to know the index of
the vol/mount in the list.
- Create functions for printing vols/mounts in a human-readable format
so that tests may output more useful errors.
- Create a test definition for ensuring that all the volumes a pod
provides and all the mounts from each pod container match. For each
volume, there must be at least one container which mounts the volume,
and for each mount, there must be a source volume.
Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
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>
While creating a PVC, if the operator dies between successfully creating a rbd
image and associating it with a PV, that PVC will never be completed. A
restarted operator will also fail to complete the task as the requested rbd
image already exists. With the assumption that a PVC UID will always be unique,
this patch will try to use the existing volume and complete the PVC request.
Resolves: #2072
Signed-off-by: Ganesh Maharaj Mahalingam <ganesh.mahalingam@intel.com>
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>
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>
We maybe roundup the size to the next `MB` boundary in some cases
when creating the volume, thus we need to make sure the size of
the PV generated is consistent with the actual one.
Signed-off-by: Dennis Chen <dennis.chen@arm.com>
Current code will truncate the generated RBD image in some cases,
this PR will round up the size to make sure the final RBD image
generated can cover all the required data space.
Also, corresponding unit test cases added to verify the change.
Signed-off-by: Dennis Chen <dennis.chen@arm.com>
Rook no longer supports Kubernetes < 1.7
Remove a workaround for k8s < 1.6.4 where `runAsNonRoot` could not be
explicitly set to false.
Signed-off-by: Blaine Gardner <blaine.gardner@suse.com>
We don't use volume manager argument in NewClusterController()
and NewFlexvolumeServer() functions, so remove the unused volume
manager parameter from those functions.
Signed-off-by: Dennis Chen <dennis.chen@arm.com>
This has been the correct style since luminous. The
"allow *" version works fine but is more power than
needed.
Signed-off-by: John Spray <john.spray@redhat.com>
While the mgr can mostly do its job with just
mon caps, modules expect to also have access
to OSD and MDS daemons at will (e.g. for the dashboard
to display the MDS session list)
This change matches what other Ceph deployment tools do.
Signed-off-by: John Spray <john.spray@redhat.com>
We don't need to handle other osd(s) related tasks if there's
no valid nodes available in the cluster to run osd(s), log a
warning message to help user identify the cause of the issue.
Signed-off-by: Dennis Chen <dennis.chen@arm.com>
Current Ceph volume manager code doesn't take the builtin
kernel module into the account, so the `modinfo` will fail
in this case. Also, we need to add error handling code to
make sure the volume manager does work when proceeding to
continue, otherwise we will encounter the `rbd` related issue
in the following step even we have an artificial `agent` pod
in running state.
Signed-off-by: Dennis Chen <dennis.chen@arm.com>