sandbox
sandbox copied to clipboard
[Sandbox] KubePlus
Application contact emails
Project Summary
KubePlus is a Kubernetes Operator to deliver any application as-a-service using multi-instance multi-tenancy
Project Description
KubePlus is a turn-key solution to build SaaS for any cloud-native application packaged as a Helm chart. At the heart of building this SaaS lies Multi-instance multi-tenancy (MIMT). Multi-instance multi-tenancy (MIMT) is a software architecture pattern in which a dedicated instance of an application is provided per tenant. The typical adopters of this pattern are platform teams that need to host and manage multiple instances of an application for different users and effectively deliver that application as-a-service.
KubePlus is a turn-key solution to build a multi-instance multi-tenancy (MIMT) pattern on Kubernetes and comes with end-to-end automation for it. It takes an application Helm chart and wraps it under a Kubernetes API (CRD). Whenever an instance is created of this API, KubePlus deploys the underlying Helm chart, ensuring that it is created in a separate namespace and the required multi-tenancy policies are applied ensuring isolation from other instances. The API also supports upgrades, resource monitoring, and RBAC to simplify managing multiple application instances on a cluster.
KubePlus has a reference in the official Kubernetes multi-tenancy documentation and it is mentioned as a solution for multi-customer tenancy.
Org repo URL (provide if all repos under the org are in scope of the application)
N/A
Project repo URL in scope of application
https://github.com/cloud-ark/kubeplus
Additional repos in scope of the application
https://github.com/cloud-ark/kubediscovery
Website URL
https://github.com/cloud-ark/kubeplus
Roadmap
https://github.com/cloud-ark/kubeplus/issues/683
Roadmap context
No response
Contributing Guide
https://github.com/cloud-ark/kubeplus/blob/master/Contributing.md
Code of Conduct (CoC)
https://github.com/cloud-ark/kubeplus/blob/master/code-of-conduct.md
Adopters
https://github.com/cloud-ark/kubeplus/blob/master/ADOPTERS.md
Contributing or Sponsoring Org
https://cloudark.io/
Maintainers file
https://github.com/cloud-ark/kubeplus/blob/master/MAINTAINERS.md
IP Policy
- [X] If the project is accepted, I agree the project will follow the CNCF IP Policy
Trademark and accounts
- [X] If the project is accepted, I agree to donate all project trademarks and accounts to the CNCF
Why CNCF?
As much as containers and related technologies simplify the packaging of the applications, the application providers are experiencing high demand for managing day2 operations of these packaged applications. These providers constitute enterprise platform teams or ISVs / SIs building managed application services for their internal or external customers. Today in most cases they are developing their own automation for delivering this managed application services or SaaS. At the core of this automation lies the multi-instance multi-tenancy (MIMT) pattern. KubePlus offers a turnkey solution for implementing multi-instance multi-tenancy (MIMT) pattern and thereby expedites building managed service/SaaS for any cloud-native application.
At CloudARK, we have a commercial offering called KubePlus SaaS Manager that builds on top KubePlus open-source project. While KubePlus has been currently adopted by our KubePlus SaaS manager customers, we continue to get engagement from the community for just KubePlus open source project, especially from the teams building SaaS with open source software platforms such as WordPress, Moodle, Udoo, Jenkins, etc. We believe the KubePlus open-source project can get wider adoption beyond our commercial offering by being part of CNCF. Also, we hope to accelerate the development of KubePlus by attracting more contributors through the CNCF community. the
Benefit to the Landscape
KubePlus is already part of the CNCF landscape in the application definition & image build section. As the CNCF landscape guide suggests, this section covers a broad set of functionality but at the core, it has projects in the following two categories: developer-focused tools that help build application code into containers and/or Kubernetes. operations-focused tools that deploy apps in a standardized way.
KubePlus falls into the second category above and focuses on the deployment of apps in multi-instance multi-tenancy pattern. While various other projects in the application definition & image build section optimize the Kubernetes DevOps experience by focusing on various challenges in this space, KubePlus uniquely focuses on delivering SaaS with multi-instance multi-tenancy architecture.
Cloud Native 'Fit'
As far as cloud-native fit is concerned, KubePlus exemplifies the following aspect of cloud-native technology definition on cncf.io:
-
empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds.
-
It embodies the principle of declarative APIs.
KubePlus is packaged as a Kubernetes Operator and leverages Kubernetes extensibility features to deliver its functionality. It allows the creation of new CRDs at runtime to represent an application packaged as a Helm chart.
Cloud Native 'Integration'
KubePlus depends on Helm and Kubernetes. KubePlus complements Prometheus by offering Prometheus metrics for resource utilization (CPU/Memory/network etc) for every application instance that it manages.
Cloud Native Overlap
From a conceptual viewpoint, aspects of KubePlus can be compared to the Helm Operator from the Operator SDK project. However, there are differences in the target use case and design of the two. The target use-case for Helm Operator in the Operator SDK is to enable creating an operator for a Helm chart and allow representation of that application as a CRD. While KubePlus also represents a Helm chart as a CRD, it targets multi-instance multi-tenancy use-case and offers functionality for this use-case behind this CRD / API. Additionally, at the design level, Helm Operator enables building CRDs for Helm charts at build time, whereas KubePlus enables the creation of these CRDs run time.
Similar projects
KubePlus’s focus is on enabling the multi-instance multi-tenancy architecture on Kubernetes. Conceptually, AWS’s SaaS factory program (https://aws.amazon.com/partners/programs/saas-factory/) is similar to KubePlus. The main difference is that KubePlus enables the creation of multi-instance SaaS on Kubernetes. AWS SaaS Factory focuses on enabling the creation of SaaS using AWS services. Some of the aspects of KubePlus can be compared to commercial offering from https://www.replicated.com/
Landscape
Yes, in the application definition section.
Business Product or Service to Project separation
At CloudARK, we have a commercial offering called KubePlus SaaS Manager which is based on the KubePlus open source project. KubePlus open source project is designed as a Kubernetes Operator for Multi-Instance Multi-tenancy (SaaS) and focuses on simplifying the creation of multiple instances on a single Kubernetes cluster using namespace-based multi-tenancy. The commercial offering leverages this open-source offering and expands the management of instances across multiple Kubernetes clusters. It also offers additional day2 operations management such as troubleshooting with kubectl access, monitoring with Prometheus, etc.
Project presentations
We presented KubePlus at App-delivery TAG in February 2023. Here is the feedback issue from our presentation created by Josh Gavant: https://github.com/cncf/tag-app-delivery/issues/306
Since February 2023, we have made the following progress: Added the ability to update application instances to use a new version of an application Helm chart. Improved support for handling complex application Helm charts, such as those involving values.yaml containing arrays with mixed data type values. Added usability and robustness features such as preventing application CRD deletes while application instances are getting created, and preventing application instance deletes while the underlying Helm chart is still getting installed. Added basic support for application-specific day2 operations
Project champions
Josh Gavant from TAG App-delivery
Additional information
We applied to become a sandbox project in April 2021. We have made progress on functionality and adoption since then. More importantly, we zeroed in on the multi-instance multi-tenancy (MIMT) pattern and gained traction within the Kubernetes multi-tenancy community in the last two years.
It is also important to mention that KubePlus has been verified to deliver managed services for 100+ Bitnami Helm charts. https://cloudark.medium.com/kubeplus-verified-to-deliver-managed-services-with-100-bitnami-helm-charts-57eae3b9f6a6
While KubePlus has been currently adopted by our KubePlus SaaS manager customers (that include Atomic Maps, WeatherMart Solutions, and UT Austin), we continue to get engagement from the community for just KubePlus open source projects, especially from the teams building SaaS with open source software platforms such as WordPress, Moodle, Udoo, Jenkins, etc. We have seen a steady influx of queries on our GitHub Issues and Slack channel. Some of these folks have become KubePlus’s contributors too. By becoming a sandbox project, we believe that these community adopters of the KubePlus open-source project will benefit more.
Thanks for this submission @devdattakulkarni! As Devdatta mentions he presented KubePlus to TAG App Delivery in February 2023; recording and notes are available in this issue: https://github.com/cncf/tag-app-delivery/issues/306
The TAG didn't form a recommendation at the time of that presentation, but I at least think the project fits CNCF's mission and requirements and should be accepted in sandbox. Good luck @devdattakulkarni!
Questions:
- Currently Kubeplus has a single maintainer, @devdattakulkarni. If accepted to the CNCF, what does your plan for attracting additional contributors and maintainers look like?
- Your commercial offering is effectively KubePlus and some additional features that could easily be added to KubePlus by a contributor. What is your Roadmap process, and how will you handle it if a contributor submits a PR for a feature that is part of your current commercial offering?
@jberkus
Questions:
- Currently Kubeplus has a single maintainer, @devdattakulkarni. If accepted to the CNCF, what does your plan for attracting additional contributors and maintainers look like?
All the community contributions we have received so far have been organic. We have not had any strategic plan yet to attract contributors. We believe that acceptance into CNCF sandbox will act as a foundational milestone for attracting more community contributions. Here are some additional activities that we plan to align with the sandbox milestone that will help us attract more contributions:
- Improve documentation and make it more comprehensive from a design and architecture perspective.
- Outline contributor guidelines with coding standards and other expectations.
- Tag 'beginner friendly' tasks in our roadmap that new contributors can start with.
We would also love to graduate key contributors as maintainers of the projects and the plan is to establish clear criteria towards becoming a maintainer as well.
- Your commercial offering is effectively KubePlus and some additional features that could easily be added to KubePlus by a contributor. What is your Roadmap process, and how will you handle it if a contributor submits a PR for a feature that is part of your current commercial offering?
From the architectural point of view, we have been very clear from day 1 about what goes into open source vs what stays outside of it. Anything that runs on the Kubernetes cluster has been part of our open-source project. KubePlus open-source project is a Kubernetes operator that delivers a Multi-instance Multi-tenancy solution. Our commercial offering leverages open-source KubePlus and offers a GUI console to simplify the management of instances across multiple clusters integrating with Prometheus, Elastic, etc. We have already seen setups where some of the community adopters wanted to adopt only KubePlus Operator and integrate that with their internal tools and workflows. So there is a clear vision in terms of the scope of the KubePlus open-source project and we would communicate the same to the contributors. Still, if a situation arises in the future where someone wants to contribute a feature to open-source KubePlus, we will be happy to discuss it and consider it as long as it doesn't break the overall vision.
contributors link - https://github.com/cloud-ark/kubeplus/graphs/contributors
Thanks @dims Let me know if there are any questions for us @dims @jberkus
@devdattakulkarni i have some feedback from the call today, happy to talk to you if you can send me a couple of time slots on your calendar (davanum AT gmail)
Overall, it's about building a bit more of a community around the repository like @jberkus alluded to, but we could cover more about what working at CNCF (and in the sandbox) means and what are the expectations from the community, developers, end users etc as well. The idea is to come up with some milestones for you which will help us revisit your sandbox application. thanks!
@dims Ack. I will reach out to you.
@dims and I discussed the next steps for KubePlus. The goal is to build a community of contributors and adopters. Improving project documentation, adding cncf slack channel for the project, and creating a mailing list are some actionable steps that can lower the user barrier. Thanks @dims for the guidance on these steps. We will re-apply once we build some momentum within the community.