This change adds a new helm chart to be deployed on AIO-DX systems when:
- the optional ceph DRDB filesystem is deployed (via controllerfs API)
- the floating monitor is enabled (via application helm plugin)
The chart starts a deployment that is based on the standard ceph monitor
deployment generated by the Rook Operator.
Changes to the deployment include:
- overrides enabled for cluster FSID and static public address
- setting monitor name to 'mon-float'
- add an init container to prevent start if the filesystem mount is
not a DRBD device
- add an init container to wipe any existing monitor DB if this
deployment was NOT previously running
Orchestration of this monitor is managed by helm install and delete
hooks. These hooks perform the following activities
- pre-install:
- Wait for the cephcluster to be 'Ready'
- Disable the Rook operator from managing monitors
- Patch the monitor endpoints to include the floating monitor
- Patch the config secrets to include the floating monitor
- Wait for the fixed monitors to absorb the changes
- Extract the cluster FSID and populate a configmap for input to the
floating monitor deployment
- Save the current health state of the cluster. If the state is
HEALTH_OK, the post-install will look to achieve that state again
prior to completion
- post-install
- Wait for the floating monitor deployment to be 'available'
- If the cluster was previously HEALTH_OK; wait for a HEALTH_WARN ->
HEALTH_OK transition as the monitor joins the cluster
- Save the state of the floating monitor as enabled so that subsequent
restarts of the floating monitor does not remove the existing
monitor DB on init
- pre-delete
- Wait for the cluster to be 'Ready'
- Save the current health state of the cluster. If the state is
HEALTH_OK, the post-delete will look to achieve that state again
prior to completion
- post-delete
- Wait for the floating monitor pod to be deleted
- Patch the monitor endpoints to remove the floating monitor
- Patch the config secrets to remove the floating monitor
- Restart the monitor deployments to pick up the changes
- Re-enable the Rook Operator to manage the monitors
- Patch the cephcluster to perform monitor failovers in 5s to allow
the Operator to "cleanup" evidence of the floating monitor quickly
- Restore the default failover value for by patching the cephcluster
and setting thr value to 600s
- If the cluster was previously HEALTH_OK; wait for a HEALTH_WARN ->
HEALTH_OK transition as the monitor joins the cluster
Test Plan:
PASS - Pkg build + ISO generation
PASS - Successful AIO-DX Installation
PASS - Initial Rook deployment without floating monitor.
PASS - manually add/remove a floating monitor via helm commands (upgrade
--install & delete)
PASS - IPv4/IPv6 lab testing
Change-Id: I16f6a6bc9b14801d379a4f3f5210d29ee72195ee
Depends-On: https://review.opendev.org/c/starlingx/stx-puppet/+/926375
Story: 2011066
Task: 50836
Signed-off-by: Robert Church <robert.church@windriver.com>
The app is based on the old StarlingX Rook Ceph application.
This provides support for the latest versions of Rook Ceph
storage and packs it as a StarlingX Application.
Auto-increment helm chart versions is already present on this
initial commit.
Support for Dual-Stack.
Partial IPv6 support was added: there is a bug with DX IPv6
configuration involving the floating monitor.
Remove/delete is successful for FluxCD, however some residual
kubernetes assets remains on the system after the remove.
Rook Ceph version: 1.13.7
Test Plan:
PASS: build all app-rook-ceph packages successfully.
PASS: app-rook-ceph upload/apply/remove/delete on
SX/DX/DX+/Standard platforms.
PASS: create a volume using PVC through cephfs and rbd
storageClasses and test read/write on the corresponding
pools at SX/DX/DX+/Standard plaforms.
Story: 2011066
Task: 49846
Change-Id: I7aa6b08a30676095c86a974eaca79084b2f06859
Signed-off-by: Caio Correa <caio.correa@windriver.com>