In modern enterprises, platform teams are in charge of providing the common applications needed by various product teams within an organization. Examples of such applications include CI/CD, logging, monitoring, telemetry, secret management, machine learning etc. The overarching goal is for the product teams to not have to worry about installing and managing such applications on their own, instead consuming them as a service. Handling the applications for the consuming teams is the responsibility of the platform team. In such setups the fundamental question that platform teams face is — what does it take to enable a service-based delivery of desired applications to consumers.
Multi-instance Multi-tenancy and Kubernetes
A straightforward way to address the above question is to run a separate instance of an application for different teams. Prior to containerization and Kubernetes, the only way to do this was to use separate VMs to set up applications for different teams. But such a setup becomes unwieldy as the number of teams and number of applications increase. Kubernetes provides an antidote to this problem. In Kubernetes there is the concept of a Namespace, which provides a logical boundary for deploying an application on a cluster. Different applications can be created in different namespaces within a cluster. Namespaces form the unit for applying policies for quotas and network traffic isolation, making them an ideal foundation for separating application instances of different tenants. Namespaces enable multi-tenancy within a cluster; in situations where more stringent separation is needed, one can create separate Kubernetes clusters.
KubePlus SaaS Manager
At CloudARK, we have witnessed the struggles of such teams who are looking to deliver their applications in the service form on Kubernetes. The main pain points seem to revolve around the following questions — How to easily provision application instances within and across Kubernetes clusters? How to track cpu, memory, network resources for different application instances? How to perform application troubleshooting, possibly remotely?
KubePlus SaaS Manager is our turn-key product that enables delivering separate instances of software to different tenants on a Kubernetes cluster. The core is our innovative open-source software that simplifies delivering any Helm chart as-a-service on a Kubernetes cluster. KubePlus SaaS Manager comes with built-in integration with Prometheus and appropriately scoped RBAC policies for application providers and consumers to access application instances. Check out the demo of delivering Jenkins as-a-service on Kubernetes using KubePlus SaaS Manager here.
If your team is tasked with creating and managing application instances for your clients (internal or external), KubePlus SaaS Manager will help you get there faster. Reach out to us and schedule a demo to learn how to solve your use-case using KubePlus SaaS Manager.