Enable Ceph-Cluster migrations to Rook
Project description
Rookify
DISCLAIMER: Rookify is in early development state and is not feature-complete. Don't use it in production environments until it is production-ready and tested!
Overview
Rookify is designed to facilitate a smooth and efficient transition for existing Ceph clusters to a Rook-managed Ceph cluster environment. This tool targets clusters deployed via traditional methods and those set up using the standards of Sovereign Cloud Stack and reference implementation OSISM. By automating the conversion process, this tool aims to minimize downtime and ensure a seamless migration experience.
Features
- Automated Conversion: Simplifies the migration process from a traditional Ceph deployment to a Rook-managed Ceph environment.
- Minimal Downtime: Designed to perform migrations with the least possible impact on availability.
- Preflight Check: Analyzes existing Ceph clusters and checks if migrations are possible.
Prerequisites
- A functioning Ceph cluster deployed via traditional methods.
- TODO: List supported methods
- Access to a Kubernetes cluster with sufficient resources to host the migrated Ceph cluster.
- Kubernetes nodes should be rolled out at least on the monitor nodes
- Rook operator version 1.13 or higher installed in the Kubernetes cluster.
- local development enivornment requires radoslib version 2.0.0 installed
Installation
- Clone the repository:
git clone https://github.com/SovereignCloudStack/rookify
- Navigate to the tool directory:
cd rookify
- Check if your host has the correct "radoslib" library installed (if not: then install radoslib version 2.0.0):
make check-radoslib
- To install the local development environment (Note: This will install pre-commit in your local user context):
make setup
- To install the container-based environment
make build-container
Usage
NOTE: for testing purposes the OSISM Testbed is used. The Makefile
and example configuration (config.example.osism.yaml
) have built in helper functions and examples for this test setup.
Copy and adapt configuration files
Choose one of the configuration-examples found in the root of the working directory and copy it to config.yml
:
ls config.example.*
# there is a specific example config for the OSISM testbed: config.example.osism.yaml
cp config.example.yml config.yaml
Adapt the config.yml to your need: especially enter the correct paths for ssh-keys, kubernetes configuration and ceph configuration (all these configuration files need to be provided!).
Provide needed configuration files from target servers
Copy the needed configuration-files from the servers that need to be migrated from ceph to rook.
Provide needed configuration files as written in the config.yml. At least required are:
- ./ceph/ceph.conf (typically found in
/etc/ceph/
on a testbednode) - ./ceph/ceph.admin.keyring (typically found in
/etc/ceph/
on a testbednode) - kubernetes config of user (e.g. found in
~/.kube/config
) - ssh key of the server (found at
./terraform/.id.rsa
in thetestbed
directory)
Note:
- for the testbed there is a helper script to download the configs from the testbed. These helperscripts need correct
.ssh/config
entries to work (take a look at scripts/osism/get_configs_from_testbed for an example). - the helper scripts are merely there to help for testing with the OSISM testbed and might not suit your purposes.
Run Rookify
Now decide on how to run rookify. Either run it from within a container or locally:
run-local-rookify
# or
run-rookify
Then sit back and wait. Check the troubleshooting and support sections if any issues occur.
For other options you can also check the makefile: Type make
to get a list of available commands.
Check status of migration
Use rookify --show-states
argument to let each module check for its state in the migration
.venv/bin/rookify --show-states
ceph mon dump: Not analyzed yet
ceph osd dump: Not analyzed yet
OSD devices: Not analyzed yet
Troubleshooting
missing Ceph systemd targets:
- please consult your distribution's documentation in case documented Ceph systemd unit services or targets are missing
cephadm install ceph-common ceph-base ceph-mon ceph-mgr ceph-mds radosgw
may help if supported
frozen state:
- if the rookify process freezes, check your connections. In the OSISM testbed especially check the vpn-connection (in testbed repository try
make vpn-*
)
ssh-issues:
- make sure the id-rsa keys are "clean" and do not contain unexpected strings like "<<EOF". E.g. call
ssh-keygen -p -N "" -f ssh.key
to convert and reformat the keyfile to the expected format. - allow direnv (
direnv allow
) to use.envrc
or copy and execute the command from the file: this switches off the ssh-agent, which sometimes has too many keys loaded
Support
For issues, questions, or contributions, please open an issue or pull request in the GitHub repository. We welcome community feedback and contributions to enhance rookify.
License
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file rookify-0.0.0.dev1.tar.gz
.
File metadata
- Download URL: rookify-0.0.0.dev1.tar.gz
- Upload date:
- Size: 52.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8d4e9dc0fff1f38c03fb36e19b1780c22c9ba06405c8e8b58ca6c0630be3d22 |
|
MD5 | 03973603087392f2124762c189f8b322 |
|
BLAKE2b-256 | 8596549796f9ede30cb60bfad35a83db641908c7382d53fba680435ef9122250 |
Provenance
The following attestation bundles were made for rookify-0.0.0.dev1.tar.gz
:
Publisher:
on-release-publish.yml
on SovereignCloudStack/rookify
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
rookify-0.0.0.dev1.tar.gz
- Subject digest:
c8d4e9dc0fff1f38c03fb36e19b1780c22c9ba06405c8e8b58ca6c0630be3d22
- Sigstore transparency entry: 148751123
- Sigstore integration time:
- Predicate type:
File details
Details for the file Rookify-0.0.0.dev1-py3-none-any.whl
.
File metadata
- Download URL: Rookify-0.0.0.dev1-py3-none-any.whl
- Upload date:
- Size: 68.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5706e4f3b6fc83d5f33a608ef3bd8e9cf2875f09a1f239bd05bf11c7363eadc0 |
|
MD5 | 85bc21179d8db8b654e4d783772e91de |
|
BLAKE2b-256 | 51a5adbde6c459962c515a7ffea0fedd956cbc49b69a4a80931506c814d4f9f2 |
Provenance
The following attestation bundles were made for Rookify-0.0.0.dev1-py3-none-any.whl
:
Publisher:
on-release-publish.yml
on SovereignCloudStack/rookify
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
rookify-0.0.0.dev1-py3-none-any.whl
- Subject digest:
5706e4f3b6fc83d5f33a608ef3bd8e9cf2875f09a1f239bd05bf11c7363eadc0
- Sigstore transparency entry: 148751124
- Sigstore integration time:
- Predicate type: