Skip to content

JovianX/Service-Hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Service Hub

Please star โญ the repo if you find it useful. Issues and PRs are more than WELCOME!
Thank you dear stargazers! โญ๐Ÿคฉ Documentation ๐Ÿ•ฎ Discord ๐Ÿ’ฌ

GitHub Repo stars GitHub closed pull requests GitHub contributors Subreddit subscribers Discord StandWithUkraine

What is JovianX Service Hub?

JovianX Service Hub is a self-service portal. It exposes an on-demand catalog of infrastructure services (for example databases, s3 buckets, Airflow workflow execution, Jenkins Pipelines, services with or without pre-configured or pre-loaded datasets, etc) via a simple self-service UI and CLI.

Service Hub is commonly used by Platform and DevOps Engineers.

Use Cases

  • Self-service infrastructure Enable internal stakeholders to easily and efficiently create their infrastructure.
    • Jenkins pipeline execution self-service.
    • VM Instance Creation Create an on-demand VM on AWS/GCP/Azure/VMware via self-service.
    • S3 Bucket creation via self-service.
    • RDS Creation via self-service.
  • Development environments Shorten the development cycle with self-service app & infra components via UI/CLI/IDE.
  • Testing and review environments Allow non-technical stakeholders (such as Product Management, Sales, and Support) to review development progress early in the development cycle.

Demo

ServiceHub.Demo.Video.webm

https://www.youtube.com/watch?v=QwtQkDiBvzs

๐Ÿฆ„ Features:

  • Self-Service Portal based on a Catalog of templates. image

  • Service Endpoint Health Monitoring - Monitor HTTP endpoints for service availability and health.

  • Service Time-To-Live - Set TTL for services and resources.

  • Command line tool (service-hub CLI) to instantiate services. image

  • Login with GitHub, email/password, Access Tokens

  • Basic RBAC

  • Templates Catalog (Docs)

    • Create service templates with Helm Charts.
    • Use Kubernetes jobs as service lifecycle(create/delete/etc') hooks
    • Remplate reversioning.
Templates | create catalog via templates Self-Service Web UI

Helm Manager

  • Manage Helm Releases, Monitor application Health, Set Releases TTL, Update release values, Upgrade versions, Manage repositories, etc'
  • Manage Helm Releases across multiple clusters.
  • Helm Restful API - Full restful API for Helm
  • Helm UI - Allow operators and SRE to quickly manage the helm application via WebUI.

๐Ÿš€ Roadmap (accepting Feature Requests via GitHub issues)

  • Context-based Helm values - Set Helm values based on application context(Cloud provider, region, etc)
  • RBAC - Role-based access control
  • Login with Google
  • Installation via Helm Chart

How does Service Hub work?

Service Hub allows internal users to create services from a catalog. The catalog is based on service templates that you can create and manage. A template defines 4 optional elements:

  • Inputs define the user inputs to collect from the user.
  • Components define what components should be set up when instantiating the service.
  • Hooks can run scripts or trigger external APIs and services during different service lifecycle events (create, delete, etc).
  • Outputs define the output shown to the users after they create their service.

Service Hub has native integration with Kubernets, thus components can set up Helm charts, and Hooks( such as pre-install, post-delete, etc') can setup Kubernetes Jobs.

When a user creates a service from the templates catalog, Service Hub generates a web-form UI from the Inputs definition, asking the user to provide inputs to complete service creation. When the the user provides the input values Service Hub passes the provided values to the Components and hooks, allowing the creation of pre-scripted services following inputs end-users provide.

Examples:

https://github.com/JovianX/Service-Hub/tree/main/examples

Architecture

Service Hub Architecutre

Installation

Docker Compose

curl https://raw.githubusercontent.com/JovianX/Service-Hub/main/docker-compose.yaml -o docker-compose.yaml
docker-compose up
xdg-open 'http://localhost:3000'

Example Template

name: jenkins_job

# Input definitions are used for generating the UI,
# User-provided values can be passed to Components
inputs:
  - name: user_input1
    type: text
    label: Your text
    default: some_text
    description: Your custom text

# Components section tells ServiceHub what operations to perform
# when users create/delete/update their services. Components can be
# of type 'http' or 'helm_chart. refer to Docs for a detailed description. 
components:
  - name: jenkins_pipeline_mypipe1
    type: http
    create:
      url: https://<JENKINS_SERVER>/job/mypipe1/buildWithParameters
      method: post
      parameters:
        - action: deploy1
        - myparam: '{{inputs.user_input1}}'
      headers:
        Authorization: Basic <JENKINS_TOKEN_BASE64>
        Content-Type: application/json
    delete:
      url: https://httpbin.org/anything
      method: delete
      parameters:
        - action: delete
        - my_param2: '{{inputs.my_text}}'

Documentation

For product documentation refer to the Documentation Folder.

Contributors

๐Ÿ“œ License

Copyright 2022 JovianX Ltd.

Licensed under the Apache License, Version 2.0 (the "License");

JovianX