Skip to content

Helm charts

Omnistrate supports deploying Helm Charts as part of your service topology. Helm is a package manager for Kubernetes that allows you to define, install, and manage Kubernetes applications. This gives you more control over the Kubernetes manifests that are deployed as part of your service topology. In addition, you can bring your existing Helm charts and deploy them on Omnistrate without any modifications.

As part of the deployment, Omnistrate takes care of the following:

  • Deploying a VPC / Subnets in the chosen region and chosen account (customer's or yours)
  • Deploying a Kubernetes cluster in the chosen region
  • Deploying NLBs w/ Nginx Ingress Controllers
  • Deploying a Kubernetes Dashboard for you to monitor your deployments
  • Deploying a Route53 Hosted Zone for your workload endpoints that you can configure through Kubernetes Service annotations
  • Deploying an IAM role / Google Service Account for your workload to invoke Cloud Provider APIs / Services like S3
  • Deploying a Kubernetes Role / RoleBinding for your workload to manage Kubernetes resources within the namespace of the deployment
  • Configuring ACME TLS certificates that are auto-rotated
  • Deploying your Helm charts with any customer specific configurations

Omnistrate fully supports these deployments as long as they are in a remote artifactory accessible to your deployment Kubernetes environment.

Warning

Omnistrate does not yet support OCI registries for Helm charts.

Anatomy of a Helm Chart

Helm chart registration on Omnistrate requires the following:

  • Chart Name: The name of the Helm chart.
  • Chart Version: The version of the Helm chart.
  • Chart Repository: The Helm chart repository URL.
  • Chart Values: The values file for the Helm chart if you want to override the default values.

Registering a Helm Chart

Helm charts are managed through a specification file that defines your overall service topology on Omnistrate.

Here is an example of a SaaS service that deploys Redis Clusters using a Helm chart. You can use the following snippet at the top of your file to set the JSON schema for the Service Plan specification.

# yaml-language-server: $schema=https://gist.githubusercontent.com/aloknnikhil/24abb70f110e0379c7ee77234b3fc6d0/raw/1647ea51ffcaf7c4c19e20a2cf25dc8c791c252a/service-plan-spec-schema.json
Service Plan JSONSchema

name: Redis Server # Service Plan Name
deployment:
  hostedDeployment:
    AwsAccountId: "<AWS_ID>"
    AwsBootstrapRoleAccountArn: arn:aws:iam::<AWS_ID>:role/omnistrate-bootstrap-role

services:
  - name: Redis Cluster
    network:
      ports:
        - 6379
    helmChartConfiguration:
      chartName: redis
      chartVersion: 19.6.2
      chartRepoName: bitnami
      chartRepoURL: https://charts.bitnami.com/bitnami
      chartValues:
        master:
          persistence:
            enabled: false
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 150m
              memory: 256Mi
        replica:
          persistence:
            enabled: false
          replicaCount: 1
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 150m
              memory: 256Mi

A quick breakdown of the above specification:

  • name: Omnistrate allows you to define "plans" for your services that your customers subscribe to for different pricing / deployment models (e.g. "Basic", "Pro", "Enterprise"). This is the name of the service plan.
  • deployment: This is the deployment configuration for the service. In this case, it is a hosted deployment on AWS which hosts all your customer's Redis clusters in the specified AWS account.
  • services: This is the list of services that are part of the service plan. In this case, we have a single service called "Redis Cluster".
    • network: This is the network configuration for the service. In this case, we are exposing port 6379 for the Redis Cluster. Omnistrate fully manages your infrastructure and this specification defines what firewall / security group rules to apply.
    • helmChartConfiguration: This is the Helm chart configuration for the service. In this case, we are deploying the Redis Helm chart version 19.6.2 from the Bitnami Helm chart repository. We also override the default values for the Redis Helm chart to disable persistence and set resource limits for the master and replica pods.

And that's all it takes to setup:

  • A self-service REST API for your customers to deploy Redis Clusters.
  • A hosted deployment on AWS to host all your customer's Redis Clusters.

You can register this spec using our CLI:

omnistrate-ctl build -f spec.yaml --name 'RedisHelm' --release-as-preferred --spec-type ServicePlanSpec

# Example output shown below
 Successfully built service
Check the service plan result at: https://omnistrate.cloud/product-tier?serviceId=s-dEhutaDa2X&environmentId=se-92smpU2YAm
Access your SaaS offer at: https://saasportal.instance-w6vidhd14.hc-pelsk80ph.us-east-2.aws.f2e0a955bb84.cloud/service-plans?serviceId=s-dEhutaDa2X&environmentId=se-92smpU2YAm

Deploying a Redis Cluster through your dedicated Customer Portal

Once you have registered the Helm chart, you can deploy a Redis Cluster using the API / UI we generate for your customers. We also setup a Dev environment for you to test your deployment before going live. In the above output, you can see the URL to access the SaaS portal for your Dev environment where you can deploy Redis Clusters just like your customers would.

Sign-in using your existing Omnistrate credentials (if you signed up using SSO, you can go to your profile in your Omnistrate portal and set a new password). Sign in

You will be presented with a screen that defines the default plan you setup in the specification and a dashboard for you to manage your deployments. Plan Dashboard

Let's deploy a cluster in AWS in us-east-1. Once the deployment is complete, you will see the status of the deployment in the dashboard. Deployment

Let's take a peek at our kubernetes cluster that was automatically setup by Omnistrate in the chosen region. K8s Dashboard

This gives you a quick overview of the process to design your Helm chart-based SaaS service on Omnistrate. For more customizations please see Helm Chart Customizations.