{"id":13645098,"url":"https://github.com/kanisterio/kanister","last_synced_at":"2025-05-14T05:10:34.995Z","repository":{"id":37260071,"uuid":"111599187","full_name":"kanisterio/kanister","owner":"kanisterio","description":"An extensible framework for application-level data management on Kubernetes, Kanister is a Cloud Native Computing Foundation sandbox project and was originally created by the Veeam Kasten team.","archived":false,"fork":false,"pushed_at":"2025-05-12T05:47:18.000Z","size":83782,"stargazers_count":821,"open_issues_count":68,"forks_count":162,"subscribers_count":31,"default_branch":"master","last_synced_at":"2025-05-12T06:36:03.468Z","etag":null,"topics":["cloud-native","data-protection","golang","kubernetes","operator"],"latest_commit_sha":null,"homepage":"https://kanister.io","language":"Go","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/kanisterio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":"GOVERNANCE.md","roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-11-21T20:42:23.000Z","updated_at":"2025-05-12T05:47:22.000Z","dependencies_parsed_at":"2025-01-03T08:23:17.357Z","dependency_job_id":"a42d407a-f7b1-43f8-a501-1adf3b943f04","html_url":"https://github.com/kanisterio/kanister","commit_stats":null,"previous_names":[],"tags_count":113,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanisterio%2Fkanister","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanisterio%2Fkanister/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanisterio%2Fkanister/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kanisterio%2Fkanister/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kanisterio","download_url":"https://codeload.github.com/kanisterio/kanister/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254076849,"owners_count":22010611,"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":["cloud-native","data-protection","golang","kubernetes","operator"],"created_at":"2024-08-02T01:02:26.904Z","updated_at":"2025-05-14T05:10:34.976Z","avatar_url":"https://github.com/kanisterio.png","language":"Go","funding_links":[],"categories":["Repository is obsolete","golang","Go","Storage"],"sub_categories":["Awesome Operators in the Wild"],"readme":"![Kanister Logo](./graphic/graphic.png)\n\n# Kanister\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/kanisterio/kanister)](https://goreportcard.com/report/github.com/kanisterio/kanister)\n[![GitHub Actions](https://github.com/kanisterio/kanister/actions/workflows/main.yaml/badge.svg)](https://github.com/kanisterio/kanister/actions)\n\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8699/badge)](https://www.bestpractices.dev/projects/8699)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/kanisterio/kanister/badge)](https://securityscorecards.dev/viewer/?uri=github.com/kanisterio/kanister)\n\nKanister is a data protection workflow management tool. It provides a set of\ncohesive APIs for defining and curating data operations by abstracting away\ntedious details around executing data operations on Kubernetes. It's extensible\nand easy to install, operate and scale.\n\n## Highlights\n\n✅ _Kubernetes centric_ - Kanister's APIs are implemented as [Custom Resource\nDefinitions](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/)\nthat conforms to Kubernetes' declarative management, security and distribution\nmodels.\n\n✅ _Storage agnostic_ - Kanister allows you to efficiently and securely transfer\nbackup data between your services and the object storage service of your choice.\nUse Kanister to backup, restore, and copy your data using your storage's APIs,\nand Kanister won't get in the way.\n\n✅ _Asynchronous or synchronous task execution_ - Kanister can schedule your data\noperation to run asynchronously in dedicated job pods, or synchronously via\nKubernetes apimachinery `ExecStream` framework.\n\n✅ _Re-usable workflow artifacts_ -  A Kanister blueprint can be re-used across\nmultiple workflows to protect different environment deployments.\n\n✅ _Extensible, atomic data operation functions_ - Kanister provides a collection\nof easy-to-use\n[data operation functions](https://docs.kanister.io/functions.html) that you can\nadd to your blueprint to express detailed backup and restore operation steps,\nincluding pre-backup scaling down of replicas, working with all mounted volumes\nin a pod etc.\n\n✅ _Secured via RBAC_ - Prevent unauthorized access to your workflows via Kubernetes\n[role-based access control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)\nmodel.\n\n✅ _Observability_ - Kanister exposes logs, events and metrics to popular\nobservability tools like Prometheus, Grafana and Loki to provide you with\noperational insights into your data protection workflows.\n\n## Quickstart\n\nFollow the instructions in\n[the installation documentation](https://docs.kanister.io/install.html), to\ninstall Kanister on your Kubernetes cluster.\n\nWalk through the [tutorial](https://docs.kanister.io/tutorial.html) to define,\ncurate and run your first data protection workflow using Kanister blueprints,\nactionsets and profiles.\n\nThe [`examples`](./examples) directory contains many sample blueprints that you\ncan use to define data operations for:\n\n- [AWS RDS](./examples/aws-rds)\n- [Cassandra](./examples/cassandra)\n- [Couchbase](./examples/couchbase)\n- [Elasticsearch](./examples/elasticsearch)\n- [etcd](./examples/etcd/etcd-in-cluster)\n- [FoundationDB](./examples/foundationdb)\n- [K8ssandra](./examples/k8ssandra)\n- [MongoDB](./examples/mongodb)\n- [MongoDB on OpenShift using DeploymentConfig](./examples/mongodb-deploymentconfig)\n- [MySQL](./examples/mysql)\n- [MySQL on OpenShift using DeploymentConfig](./examples/mysql-deploymentconfig)\n- [PostgreSQL](./examples/postgresql)\n- [PostgreSQL on OpenShift using DeploymentConfig](./examples/postgresql-deploymentconfig)\n- [Redis](./examples/redis)\n\nThe Kanister architecture is documented\n[here](https://docs.kanister.io/architecture.html).\n\n## Getting Help\n\nIf you have any questions or run into issues, feel free to reach out to us on\n[Slack](https://kanisterio.slack.com).\n\nGitHub issues or pull requests that have been inactive for more than 60 days\nwill be labeled as stale. If they remained inactive for another 30 days, they\nwill be automatically closed. To be exempted from the issue lifecycle, discuss\nwith a [maintainer](MAINTAINERS.md) the reasons behind the exemption, and add the `frozen` label\nto the issue or pull request.\n\nIf you discovered any security issues, refer to our [`SECURITY.md`](SECURITY.md)\ndocumentation for our security policy, including steps on how to report\nvulnerabilities.\n\n## Community\n\nThe Kanister community meetings happen once every two weeks on Thursday, 16:00\nUTC, where we discuss ongoing interesting features, issues, and pull requests.\nCome join us! Everyone is welcome! 🙌 (Zoom link is bookmarked on Slack.)\n\nIf you are currently using Kanister, we would love to hear about it! Feel free\nto add your organization to the [`ADOPTERS.md`](ADOPTERS.md) by submitting a\npull request.\n\n## Code of Conduct\n\nKanister is for everyone. We ask that our users and contributors take a few\nminutes to review our [Code of Conduct](CODE_OF_CONDUCT.md).\n\n## Contributing to Kanister\n\nWe welcome contributions to Kanister! If you're interested in getting involved, please take a look at our guidelines:\n\n- **BUILD.md:** Contains detailed instructions on how to build and test Kanister locally or within a CI/CD pipeline.  Please refer to this guide if you want to make changes to Kanister's codebase.\n  [Build and Test Instructions](BUILD.md)\n\n- **CONTRIBUTING.md:**  Provides essential information on how to contribute code, documentation, or bug reports, as well as our coding style and commit message conventions.\n  [Contribution Guidelines](CONTRIBUTING.md)\n\n## Resources\n\n- [CNCF - Enhancing data protection workflows with Kanister and Argo workflows](https://youtu.be/nqfP1e9jeU4)\n- [CNCF - Kanister: Application-Level Data Protection on Kubernetes](https://youtu.be/GSgFwAHLziA)\n- [CNCF - Integrating Backup Into Your GitOps CI/CD Pipeline](https://www.youtube.com/watch?v=2zik5jDjVvM)\n- [DoK - Kanister \u0026 Kopia: An Open-Source Data Protection Match Made in Heaven](https://www.youtube.com/watch?v=hN8sn3A_oEs)\n- [DoK - Kanister: Application-Level Data Operations on Kubernetes](https://www.youtube.com/watch?v=ooJFt0bid1I\u0026t=791s)\n- [Kanister Overview 2021 ](https://www.youtube.com/watch?v=wFD42Zpbfts\u0026t=1s)\n- [SIG Apps Demo](https://youtu.be/uzIp-CjsX1c?t=82)\n- [Percona Live 2018](https://www.youtube.com/watch?v=dS0kv0k8D_E)\n\n## License\n\nApache License 2.0, see [LICENSE](https://github.com/kanisterio/kanister/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkanisterio%2Fkanister","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkanisterio%2Fkanister","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkanisterio%2Fkanister/lists"}