{"id":27974587,"url":"https://github.com/strapdata/elassandra-operator","last_synced_at":"2025-05-08T00:18:46.374Z","repository":{"id":46352532,"uuid":"189193102","full_name":"strapdata/elassandra-operator","owner":"strapdata","description":"Elassandra Kubernetes Operator","archived":false,"fork":false,"pushed_at":"2022-12-08T00:49:20.000Z","size":27707,"stargazers_count":11,"open_issues_count":26,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-08T00:18:41.944Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/strapdata.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":"LICENSE.AGPL","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-29T09:23:20.000Z","updated_at":"2022-05-17T09:14:56.000Z","dependencies_parsed_at":"2023-01-24T05:01:02.022Z","dependency_job_id":null,"html_url":"https://github.com/strapdata/elassandra-operator","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strapdata%2Felassandra-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strapdata%2Felassandra-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strapdata%2Felassandra-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strapdata%2Felassandra-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/strapdata","download_url":"https://codeload.github.com/strapdata/elassandra-operator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252973765,"owners_count":21834135,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-08T00:18:42.175Z","updated_at":"2025-05-08T00:18:46.362Z","avatar_url":"https://github.com/strapdata.png","language":"Java","funding_links":[],"categories":["General"],"sub_categories":["Cassandra Deployment"],"readme":"# Elassandra Operator [![Build Status](https://travis-ci.com/strapdata/elassandra-operator.svg?token=m7zqfSQPuiZqq2siqFNt\u0026branch=master)](https://travis-ci.com/strapdata/elassandra-operator) [![GitHub release](https://img.shields.io/github/v/release/strapdata/elassandra-operator.svg)](https://github.com/strapdata/elassandra-operator/releases/latest) [![Twitter](https://img.shields.io/twitter/follow/strapdataio?style=social)](https://twitter.com/strapdataio)\n\n![Elassandra Logo](docs/source/images/elassandra-operator.png)\n\nThe Elassandra Kubernetes Operator automates the deployment and management of [Elassandra](https://github.com/strapdata/elassandra) \nclusters deployed in multiple [Kubernetes](https://kubernetes.io/) clusters. By reducing the complexity of running a Cassandra or \nElassandra clusters under Kubernetes, it gives you the flexibility to migrate your data to any Kubernetes cluster with \nno downtime and the freedom to choose your cloud provider or run on-premise.\n\n## Features\n\nElassandra Operator features:\n\n* Manage one [Kubernetes StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) per Cassandra rack to ensure data consistency across availability zones.\n* Manage multiple Elassandra/Cassandra datacenters in the same or different Kubernetes clusters, in one or multiple namespaces.\n* Manage rolling configuration changes, rolling upgrade/downgrade of Elassandra, rolling restarts.\n* Scale up/down Elassandra datacenters.\n* Park/Unpark Elassandra datacenters (and associated Kibana and Cassandra Reaper instances).\n* Implements Elassandra tasks to add/remove datacenters from an Elassandra cluster.\n* Deploy [Cassandra Reaper](http://cassandra-reaper.io/) and register keyspaces to run continuous Cassandra repairs.\n* Deploy multiple [Kibana](\u003chttps://www.elastic.co/fr/products/kibana\u003e) instances with a dedicated Elasticsearch index in Elassandra.\n* Expose Elassandra metrics for the [Prometheus Operator](https://prometheus.io/docs/prometheus/latest/querying/operators/).\n* Publish DNS names of Elassandra broadcast IP addresses using [ExternalDNS](https://github.com/kubernetes-sigs/external-dns).\n* Automatically generates SSL/TLS certificates and strong passwords stored as Kubernetes secrets.\n* Create Cassandra roles and automatically grants the desired permissions on Cassandra keyspaces.\n* Automatically adjust the Cassandra Replication Factor for managed keyspaces, repair and cleanup after scale up/down.\n* Provide a java [AddressTranslator](https://docs.datastax.com/en/developer/java-driver/3.6/manual/address_resolution/) for the Cassandra driver allowing to run applications in the same Kubernetes cluster as the Elassandra datacenter (similar to the [EC2MultiRegionAddressTranslator](https://docs.datastax.com/en/drivers/java/3.7/index.html?com/datastax/driver/core/policies/EC2MultiRegionAddressTranslator.html) but for any Kubernetes cluster).\n\n## Status\n\nElassandra Operator version 0.1 is currently Alpha.\n\n* Docker images are available on [dockerhub](https://hub.docker.com/repository/docker/strapdata/elassandra-operator).\n* HELM charts are available at [https://charts.strapdata.com](https://github.com/strapdata/helm-charts)\n\n## Documentation\n\n* Please see the [Elassandra-Operator documentation](https://operator.elassandra.io).\n* Quickstart is available [here](http://operator.elassandra.io/quickstart.html)\n\n## Minimum Requirements\n\n- Kubernetes cluster, 1.15 or newer.\n- HELM 2\n\n## Support\n\n * Commercial support is available through [Strapdata](http://www.strapdata.com/).\n * Community support available via [Elassandra Google Groups](https://groups.google.com/forum/#!forum/elassandra).\n * Post feature requests and bugs on https://github.com/strapdata/elassandra-operator/issues\n\n## Contributing\n\nThe Elassandra-Operator is licensed under AGPL and you can contribute to bug reports,\ndocumentation updates, tests, and features by submitting github issues or/and pull requests as usual.\n\n### General design\n\nThe Elassandra Operator rely on the [Micronaut framework](https://micronaut.io/) and the \n[Kubernetes java client](https://github.com/kubernetes-client/java) in a reactive programming style.\nIt does not require any Cassandra/Elassandra sidecar container, but requires a dedicated Elassandra docker image \nthat warps the docker entrypoint for customization purposes.\n\n### Developer setup\n\nRequirements:\n* Java 8\n* Docker\n* HELM 2\n* Kind (for kubernetes tests)\n\n### Build from source\n\nPublish the docker images (operator + elassandra + cassandra reaper):\n```bash\n./gradlew dockerPush -PregistryUsername=$DOCKER_USERNAME -PregistryPassword=$DOCKER_PASSWORD -PregistryUrl=$REGISTRY_URL\n```\n\nPublish in local insecure registry\n```bash\n./gradlew dockerPush -PregistryUrl=\"localhost:5000\" -PregistryInsecure\n```\n\nBuild parameters are located in `gradle.properties`.\n\n### Testing\n\nWe uses [TravisCI](.travis.yml) to build and run automated integration tests on [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/).\nYou can also run these [integration tests](integ-test) on GKE or AKS.\n\nSetup test cluster using [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/):\n\n```\ninteg-test/setup-cluster.sh\ninteg-test/install_elassandra_operator.sh\n```\n\nRun integration tests:\n\n```\ninteg-test/test-admission.sh\ninteg-test/test-hostnetwork.sh\ninteg-test/test-reaper-registration.sh\ninteg-test/test-scaleup-park-unpark.sh\ninteg-test/test-multiple-dc-1ns.sh\ninteg-test/test-multiple-dc-2ns.sh\ninteg-test/test-rolling-upgrade.sh\ninteg-test/test-replace-pvc.sh\n```\n\n## License\n\nCopyright (C) 2020 Strapdata SAS (support@strapdata.com)\n\nThe Elassandra-Operator is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThe Elassandra-Operator is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with the Elassandra-Operator.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\n## Acknowledgments\n\n* Kubernetes is a trademark of THE LINUX FOUNDATION\n* Elasticsearch, Logstash, Beats and Kibana are trademarks of Elasticsearch BV, registered in the U.S. and in other countries.\n* Apache Cassandra, Apache Lucene, Apache, Lucene and Cassandra are trademarks of the Apache Software Foundation.\n* Elassandra is a trademark of Strapdata SAS.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrapdata%2Felassandra-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstrapdata%2Felassandra-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrapdata%2Felassandra-operator/lists"}