KubePlus takes an application Helm chart and delivers it as-a-service by abstracting it under provider and consumer APIs. The consumer of the service can simply use Kubernetes native consumer API to provision the application. KubePlus is able to construct the resource relationship graphs for the application stack packaged under the Helm chart. This enables provider of the service to apply policies and monitor the instances of the application behind the scene using the provider API. This open-source KubePlus software forms the foundation for our KubePlus SaaS Manager offering.
Provider API is delivered as a CRD (named ResourceComposition) that allows creating new CRDs as consumer APIs abstracting Helm charts.
KubePlus offers a CRD named ResourceComposition (Provider API) to
Application instances are realized by establishing relationships between available Kubernetes Resources / APIs (built-in or Custom). These relationships are primarily of four types - (1) Owner references, (2) Labels, (3) Annotations, (4) Spec Properties. KubePlus is able to construct Kubernetes Resource relationship graphs for a running application stack. This enables KubePlus to build resource topologies and offer fine grained visibility and control at the instance or tenant level.
Here we demonstrate how a multi-tenant WordPress service can be created from WordPress Helm chart. KubePlus takes Helm chart and other policy and monitoring inputs through ResourceComposition CRD as shown below to deliver a new CRD for Wordpress as-a-Service.
A new CRD named WordpressService has been created here using ResourceComposition CRD as shown above.
KubePlus offers a pre-built consumer UI that wraps consumer API to simplify provisioning of the application for the consumers of the service.
Consumers can also use Consumer API / service CRD directly.
Here is a YAML definition that allows us to create first tenant using newly created WordpressService CRD.
Here is a visual representation of the complete resource relationship graph of the WordpressService instance. This can be discovered using KubePlus kubectl plugin - 'kubectl connections WordpressService wp-service-tenant1'. This is essential to troubleshoot or monitor running instances of your service.
Kubectl command output that shows CPU, Memory, Storage and Network consumption metrics for tenant1.
KubePlus offers tenant level consumption metrics that can be directly discovered in any Prometheus based monitoring infrastructure.
We call our innovative method of delivering application SaaS Platform-as-Code because it enables teams to rapidly build their application platforms in a declarative manner.