/kubepreset

KubePreset: Streamline Application Connectivity with Backing Services

Primary LanguageGoApache License 2.0Apache-2.0

KubePreset

Streamline Application Connectivity with Backing Services

License Release Charts Build Go Report Card codecov go.dev Reference Artifact HUB Docker Repository on Quay PRs Welcome

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.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:

  1. Write tests.
  2. 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

Community

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)