{"id":28098725,"url":"https://github.com/logicalclocks/rondb-helm","last_synced_at":"2026-01-16T10:53:37.427Z","repository":{"id":269644543,"uuid":"899030858","full_name":"logicalclocks/rondb-helm","owner":"logicalclocks","description":"Helm chart for RonDB","archived":false,"fork":false,"pushed_at":"2026-01-07T14:58:15.000Z","size":7670,"stargazers_count":3,"open_issues_count":2,"forks_count":11,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-01-13T03:41:35.187Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://logicalclocks.github.io/rondb-helm/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/logicalclocks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-05T13:49:23.000Z","updated_at":"2025-12-18T09:20:16.000Z","dependencies_parsed_at":"2026-01-08T15:01:51.629Z","dependency_job_id":null,"html_url":"https://github.com/logicalclocks/rondb-helm","commit_stats":null,"previous_names":["logicalclocks/rondb-helm"],"tags_count":69,"template":false,"template_full_name":null,"purl":"pkg:github/logicalclocks/rondb-helm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logicalclocks%2Frondb-helm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logicalclocks%2Frondb-helm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logicalclocks%2Frondb-helm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logicalclocks%2Frondb-helm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/logicalclocks","download_url":"https://codeload.github.com/logicalclocks/rondb-helm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logicalclocks%2Frondb-helm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-13T17:58:42.859Z","updated_at":"2026-01-16T10:53:37.400Z","avatar_url":"https://github.com/logicalclocks.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RonDB Helm chart\n\n## About RonDB\n\n[RonDB](https://docs.rondb.com) is a fork of MySQL NDB Cluster, one of the storage engines supported by the MySQL server. It is a distributed, shared-nothing storage engine with capabilities for:\n\n- in-memory \u0026 on-disk columns\n- up to 1 PiB storage\n- online horizontal \u0026 vertical storage scaling\n- online horizontal \u0026 vertical compute scaling (MySQL servers)\n\nBeing supported by the MySQL server, RonDB is inherently ACID compliant. In-memory data is regularly persisted to disk via a REDO log and checkpoints. RonDB is open-source, written in C++.\n\n## Chart host\n\nThis Helmchart is hosted on [GitHub Pages](https://logicalclocks.github.io/rondb-helm/). See the `gh_pages` branch of this repository for the source code.\n\n## Helm chart's capabilities\n\nThis Helm chart supports:\n\n- Creating custom-size, cross-AZ cluster\n- Scaling data node replicas\n- Horizontal auto-scaling of MySQLds \u0026 RDRS'\n- Backup \u0026 restore to and from object storage (e.g. S3)\n- Global Replication (cross-cluster replication)\n\n## Quickstart\n\n### Optional: Set up cloud object storage for backups\n\nCloud object storage is required for creating backups and restoring from them. Periodical backups can be\nenabled using `--set backups.enabled`. These will be placed into cloud object storage. Restoring from a backup\ncan be activated (at cluster start) using `--set restoreFromBackup.backupId=\u003cbackup-id\u003e`. This will assume the\nbackup is placed in the defined object storage.\n\n_Authentication info:_ When running Kubernetes within a cloud provider (e.g. EKS), authentication can work implicitly via IAM roles.\nThis is most secure and one should not have to worry about rotating them. If one is not running in the cloud\n(e.g. Minikube or on-prem K8s clusters), one can create Secrets with object storage credentials.\n\nExamples creating object storage:\n* In-cluster MinIO: Install MinIO controller and run `./test_scripts/setup_minio.sh`\n* S3: Create an S3 bucket and see this to have access to it: https://github.com/awslabs/mountpoint-s3-csi-driver/blob/main/docs/install.md#configure-access-to-s3.\n\n### Run cluster\n\n```bash\nRONDB_NAMESPACE=rondb-default\nkubectl create namespace $RONDB_NAMESPACE\n\n# If periodical backups are enabled, add access to object storage.\n# If using AWS S3 without IAM roles:\nkubectl create secret generic aws-credentials \\\n    --namespace=$RONDB_NAMESPACE \\\n    --from-literal \"key_id=${AWS_ACCESS_KEY_ID}\" \\\n    --from-literal \"access_key=${AWS_SECRET_ACCESS_KEY}\"\n\n# Run this if:\n# - We want to use the cert-manager for TLS certificates\n# - RDRS Ingress is enabled\nsource ./standalone_deps.sh\nsetup_deps $RONDB_NAMESPACE\n\n# Install and/or upgrade:\nhelm upgrade -i my-rondb \\\n    --namespace=$RONDB_NAMESPACE \\\n    --values ./values/minikube/small.yaml .\n```\n\n## Run tests\n\nAs soon as the Helmchart has been instantiated, we can run the following tests:\n\n```bash\n# Create some dummy data\nhelm test -n $RONDB_NAMESPACE my-rondb --logs --filter name=generate-data\n\n# Check that data has been created correctly\nhelm test -n $RONDB_NAMESPACE my-rondb --logs --filter name=verify-data\n```\n\n***NOTE***: These Helm tests can also be used to verify that the backup/restore procedure was done correctly.\n\n## Run benchmarks\n\nSee [Benchmarks](docs/benchmarks.md) for this.\n\n## Teardown\n\n```bash\nhelm delete --namespace=$RONDB_NAMESPACE my-rondb\n\n# Remove other related resources (non-namespaced objects not removed here e.g. PriorityClass)\nkubectl delete namespace $RONDB_NAMESPACE --timeout=60s\n\n# If dependencies were set up first, take them down again\nsource ./standalone_deps.sh\ndestroy_deps\n```\n\n## Backups\n\nSee [Backups](docs/backups.md) for this.\n\n## Global Replication\n\nSee [Global Replication](docs/global_replication.md) for this.\n\n## Test Ingress with Minikube\n\nIngress towards MySQLds or RDRSs can be tested using the following steps:\n\n1. Run `minikube addons enable ingress`\n2. Run `minikube tunnel`\n3. Place `127.0.0.1 rondb.com` in your /etc/hosts file\n4. Connect to RDRS from host:\n    `curl -i --insecure https://rondb.com/0.1.0/ping`\n    This should reach the RDRS and return 200.\n5. Connect to MySQLd from host (needs MySQL client installed):\n    ```bash\n    mysqladmin -h rondb.com \\\n        --protocol=tcp \\\n        --connect-timeout=3 \\\n        --ssl-mode=REQUIRED \\\n        ping\n    ```\n\n## Optimizations\n\nData nodes strongly profit from being able to lock CPUs. This is possible with the\nstatic CPU manager policy. In the case of Minikube, one can start it as follows:\n\n```bash\nminikube start \\\n    --driver=docker \\\n    --cpus=10 \\\n    --memory=21000MB \\\n    --feature-gates=\"CPUManager=true\" \\\n    --extra-config=kubelet.cpu-manager-policy=\"static\" \\\n    --extra-config=kubelet.cpu-manager-policy-options=\"full-pcpus-only=true\" \\\n    --extra-config=kubelet.kube-reserved=\"cpu=500m\"\n```\n\nThen in the values file, set `.Values.staticCpuManagerPolicy=true`.\n\n## CI (GitHub Actions)\n\nSee [CI](docs/github_actions.md) for this.\n\n## Internal startup\n\nSee [Internal startup steps](docs/internal_startup.md) for this.\n\n## Releasing Helm chart\n\nThe Helm chart version is set in the Chart.yaml file under `version`. Helm requires semantic versioning for this, and appending text is allowed as well (e.g. `0.1.0-dev`).\n\nLet's say our Chart.yaml now has version `0.1.0`. We have not released this version yet. The expected workflow will be as follows:\n1. Commit arbitrary changes to main\n2. Run one or more workflow dispatches to release the version `0.1.0-dev`. This can be referenced in other Helmcharts.\n3. If the Helmchart version is deemed stable, one runs:\n   1. `git tag v0.1.0` on the main branch (the same version as in the Chart.yaml, plus prepending a `v`)\n   2. `git push origin tag v0.1.0`; this will trigger a Helm chart release with version `0.1.0`\n4. Bump the version in the Chart.yaml to `0.1.1`\n\nThe released Helmchart will be visible on the `gh_pages` branch of this repository.\n\n### Generating values.yaml file\n\nWe use the `values.schema.json` as a single source of truth. It is used to generate both the `values.yaml` file and the Markdown docs on [GitHub Pages](https://logicalclocks.github.io/rondb-helm/). **Publishing will fail** if the `values.yaml` file is not updated.\n\nThe docs are updated automatically, but run the following to update the `values.yaml` file:\n\n```bash\npython3 -m venv venv \u0026\u0026 source venv/bin/activate\npip3 install -r .github/requirements.txt\npython3 .github/json_to_yaml.py\n./.github/update_copyright.sh\n```\n\n## TODO\n\nSee [TODO](docs/todo.md) for this.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogicalclocks%2Frondb-helm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flogicalclocks%2Frondb-helm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogicalclocks%2Frondb-helm/lists"}