KubePreset
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)
Installation
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
Roadmap
0.2.0
- Update
ServiceBinding
resource's .status.binding.name
with the secret name that is used binding
- Always create a new secret for binding.
- Support
ServiceBinding
resource's .spec.name
to override .metadata.name
for directory name
- Support
ServiceBinding
resource's .spec.type
to override value from the ProvisionedService
secret
- Support
ServiceBinding
resource's .spec.provider
to override value from the ProvisionedService
secret
0.3.0
- 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
0.4.0
- Add support for Custom Projection extension
- Add support for Direct Secret Reference extension
- User manual
- Demo video
pre-1.0
- Add support for mappings
- Add support for full spec except "Binding Secret Generation Strategies" extension
Contributing to KubePreset
👍🎉 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.
Development
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)