ScaleStore

Scale Store - Manage Pod Scaling Via a UI

Overview

Scale Store is a microservices suite designed to simplify the management of scaling configurations for applications within Kubernetes environments. It offers a user-friendly interface to control the number of instances for each application, making it particularly useful in environments with predictable load patterns such as small government projects, internal company tools, and sandbox development environments. Scale Store’s intuitive UI eliminates the need for direct manipulation of Kubernetes YAML files, streamlining the scaling process.

Quick Demo - Click To View Video Demo

ScaleStore Demo

Key Features

Architecture

Scale Store operates in conjunction with Kubernetes and KEDA. It is designed to be easily integrated into a Kubernetes cluster with KEDA installed. Once deployed using a Helm chart, Scale Store becomes the central hub for scaling configurations.

Mermaid Diagram

graph TD
    A[Kubernetes Cluster] -->|KEDA Installed| B(Scale Store)
    B -->|Manages Scaling Configurations via UI| C{Scaler Schema}
    C --> D[Project]
    C --> E[Environment]
    C --> F[Application]
    D --> G[Scaling Configuration]
    E --> G
    F --> G
    G -->|Determines| H[Number of Instances]
    H -->|Informs| I[KEDA Scaled Object]
    I -->|Attaches to| J[Deployment - Your Microservice]

Usage

  1. Setup: Install KEDA on your Kubernetes cluster.
  2. Deployment: Deploy Scale Store using the Helm chart.
  3. Configuration via UI:
    • No need to directly edit YAML files. Configure projects, environments, applications, and their scaling configurations through the Scale Store UI.
  4. KEDA Integration:
    • KEDA ScaledObjects use the get_number_of_instances stored procedure, replacing the need for manual query configurations in YAML.
    • The stored procedure takes arguments for the application name, project, and environment, as specified in the UI.

Example KEDA ScaledObject

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: authorization-service
spec:
  scaleTargetRef:
    name: authorization-service
  pollingInterval: 10   # Optional
  cooldownPeriod: 30    # Optional
  maxReplicaCount: 10   # Optional
  triggers:
    - type: postgresql
      metadata:
        connectionFromEnv: AUTH_SERVICE_DB_CONNECTION
        query: "SELECT get_number_of_instances('authorization-service', 'project-name', 'dev-environment')"
        targetQueryValue: "1"

Note

Project Board

https://github.com/users/josephaw1022/projects/19/views/1