Awesome
<div align=center>Please star ⭐ the repo if you find it useful. Issues and PRs are more than WELCOME! |
---|
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
https://www.youtube.com/watch?v=QwtQkDiBvzs
🦄 Features:
-
Self-Service Portal based on a Catalog of templates.
-
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.
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
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
<a href = "https://github.com/JovianX/Service-Hub/graphs/contributors"> <img src = "https://contrib.rocks/image?repo=JovianX/Service-Hub"/> </a>📜 License
Copyright 2022 JovianX Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
<img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=44b1bb3d-1d33-4c7a-bf39-18379b658acc" />