Please star โญ the repo if you find it useful. Issues and PRs are more than WELCOME! |
---|
Thank you dear stargazers! โญ๐คฉ | Documentation ๐ฎ | Discord ๐ฌ |
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.
- 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.
ServiceHub.Demo.Video.webm
https://www.youtube.com/watch?v=QwtQkDiBvzs
-
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.
-
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.
- 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
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.
https://github.com/JovianX/Service-Hub/tree/main/examples
curl https://raw.githubusercontent.com/JovianX/Service-Hub/main/docker-compose.yaml -o docker-compose.yaml
docker-compose up
xdg-open 'http://localhost:3000'
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}}'
For product documentation refer to the Documentation Folder.
Copyright 2022 JovianX Ltd.
Licensed under the Apache License, Version 2.0 (the "License");