Streamline Application Connectivity with Backing Services
KubePreset is a Kubernetes operator that aims to streamline application connectivity with backing services. KubePreset implements the Service Binding Specification for Kubernetes.
From the spec introduction:
Today in Kubernetes, the exposure of secrets for connecting applications to external services such as REST APIs, databases, event buses, and many more is manual and bespoke. Each service provider suggests a different way to access their secrets, and each application developer consumes those secrets in a custom way to their applications. While there is a good deal of value to this flexibility level, large development teams lose overall velocity dealing with each unique solution. To combat this, we already see teams adopting internal patterns for how to achieve this application-to-service linkage.
This specification aims to create a Kubernetes-wide specification for communicating service secrets to applications in an automated way. It aims to create a widely applicable mechanism but without excluding other strategies for systems that it does not fit easily. The benefit of Kubernetes-wide specification is that all of the actors in an ecosystem can work towards a clearly defined abstraction at the edge of their expertise and depend on other parties to complete the chain.
- Application Developers expect their secrets to be exposed consistently and predictably.
- Service Providers expect their secrets to be collected and exposed to users consistently and predictably.
- Platforms expect to retrieve secrets from Service Providers and expose them to Application Developers consistently and predictably.
Disclaimer: KubePreset project is my side project and not endorsed by my employer. If you need any further clarity about it, please reach out to me directly. -- Baiju Muthukadan (Creator of this project)
This project is in the Alpha stage right now. The recommended approach for installation is through Helm charts
Helm must be installed to use the charts. Please refer to Helm's documentation to get started.
Once Helm has been set up correctly, add the repo as follows:
helm repo add kubepreset https://kubepreset.github.io/helm-charts
If you had already added this repo earlier, run helm repo update
to retrieve
the latest versions of the packages. You can then run helm search repo kubepreset
to see the charts.
To install the kubepreset
chart:
helm install my-kubepreset kubepreset/kubepreset
To uninstall the chart:
helm delete my-kubepreset
- Add support for label selectors for application
- Add support for specifying containers to inject (only name-based, and don't support index)
- Add support for environment variables
- Add support for Custom Projection extension
- Add support for Direct Secret Reference extension
- User manual
- Demo video
- Add support for mappings
- Add support for full spec except "Binding Secret Generation Strategies" extension
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
You can look at the issues with help wanted label for items that you can work on.
If you need help, please feel free to reach out to our discussion group!
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change. Small pull requests are easy to review and merge. So, please send small pull requests.
Please note we have a code of conduct, please follow it in all your interactions with the project.
Contributions to this project should conform to the Developer Certificate of Origin.
Remember, when you send pull requests:
- Write tests.
- Write a good commit message.
See the contribution guidelines for more details. The KubePreset Wiki has additional information for contributors.
We recommend using GNU/Linux systems for the development of KubePreset. This project requires the Go version 1.14 or above installed in your system. You also should have make and GCC installed in your system.
To build the project:
make
To run the tests:
make test
We have a mailing list (kubepreset@googlegroups.com) for community support and discussion. You are welcome to ask any questions about KubePreset.
To report any issues, use our primary GitHub issue tracker. You can make feature requests and report bugs. For reporting any security issues, see the security policy page.
You are welcome to contribute code and documentation to this project. See the contribution guidelines for more details.
If you are a backing service creator and want to make your service accessible through KubePreset to the application developer, see our documentation.
If you are an application developer or a Kubernetes cluster administrator, read the documentation to understand how to connect your application to a service using KubePreset.
This project is maintained by KubePreset Team (kubepreset@googlegroups.com)