Robert Church b5a6779471 Add floating monitor helm chart
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>
2024-08-15 12:51:38 -05:00
2024-03-25 19:33:20 +00:00
2024-05-08 09:51:44 -03:00
2024-05-08 09:51:44 -03:00
2024-05-08 09:51:44 -03:00

app-rook-ceph

App-rook-ceph fluxCD app

Top Level Directory Structure

├── app-rook-ceph    # Root Folder
│   ├── bindep.txt
│   ├── debian_build_layer.cfg
│   ├── debian_iso_image.inc
│   ├── debian_pkg_dirs
│   ├── python3-k8sapp-rook-ceph    # lifecycle managemnt code to support flux apps
│   ├── README.md
│   ├── rook-ceph-helm              # importing of upstream rook-ceph helm packages
│   ├── requirements.txt
│   ├── stx-rook-ceph-helm      # helm Package manager for the app
│   ├── test-requirements.txt
│   └── tox.ini

About app-rook-ceph

Rook is a Ceph orchestrator providing a containerized solution for Ceph Storage. This application tracks the latest compatible upstream version of Rook and packs it targeting StarlingX platforms on fresh instalations. For systems that already have a Ceph backend installed, there's a migration app available.

Installation Guide

For instructions on how to build and install app-rook-ceph, follow the StarlingX Rook Ceph App installation guide.

References

StarlingX

Rook Ceph

Migration App

Description
StarlingX Rook Ceph Application
Readme 1.7 MiB
Languages
Python 85.8%
Makefile 5.3%
Shell 4.7%
Smarty 4.2%