Giter VIP home page Giter VIP logo

laoshanxi / app-mesh Goto Github PK

View Code? Open in Web Editor NEW
120.0 3.0 19.0 9.84 MB

A secure Multi-Tenant, Cloud Native, Micro Service application management platform

License: MIT License

C++ 76.71% Shell 4.41% Dockerfile 0.24% CMake 2.29% Python 8.03% Go 8.21% Makefile 0.08% HTML 0.03%
jwt docker cloud-native consul-client prometheus-exporter loki alertmanager scheduler cron ldap 2fa grafana-datasource service-mesh kubernetes sbom arm64 pypi-package

app-mesh's Introduction

language.badge standard.badge release.badge pypi.badge unittest.badge docker.badge cockpit.badge Documentation Status Join the chat at https://gitter.im/app-mesh/community Coverity Scan Build Status OpenSSF Scorecard

App Mesh

App Mesh is a Multi-Tenant, Cloud Native, Micro Service application management platform, used to manage, schedule and monitor applications. Each app can be a specific microservice for service discovery or a normal app with replication, the app-mesh will guarantee all defined applications run on time with defined behavior and resource requests. The platform can run in standalone or cluster mode, and provide REST APIs, command-line and web-ui.

App Mesh is similar to Kubernetes but much more lightweight, supporting both container apps and native apps.

Features

Feature Description
Application management 1. Manage independent applications and guard the process running, similar with systemd but more flexible (long/short running, periodic long running, cron schedule, customized day time and error handling control) and comprehensive monitoring (number of starts, return code, error message, health-check) for both native and docker application.
2. Use SDK/CLI run application on a remote host with sync/async mode and fetch result to client.
3. Full control of application lifecycle (cgroup for resource limitation, specific OS user for execution user).
4. Interactive application start support specify input data by pipe and environment variables.
5. All functionality provides by CLI, REST, SDK and WebGUI interface.
Security ⚡️ JWT authentication for CLI and REST interface
⚡️ LDAP support
⚡️ Role based permission control
⚡️ Multi-factor authentication
SSL support (ECDH and secure ciphers) for REST http connection
Multi-tenant support
Cloud native Schedule cloud level applications for running on multile hosts with resource size request.
⚡️ Prometheus Exporter (build-in)
⚡️ Grafana SimpleJson datasource
⚡️ Grafana Loki
⚡️ Dockerfile
Micro service application ⚡️ Consul micro-service cluster management
Extra Features Collect host/app resource usage
Remote run shell commands
Download/Upload files interface
Hot-update support systemctl reload appmesh
Bash completion
Reverse proxy
Web GUI
Platform support X86_64
ARM32
ARM64
SDK Python
Golang

Getting started

The Installation doc introduces how to install App Mesh via docker-compose or native way and setup App Mesh cluster.

Documentation

Comparison

Standalone mode

Feature App Mesh Supervisor crontab
Accuracy Seconds Seconds Minutes
Language C++11 Python C
Web GUI
Command lines
SDK
Cron schedule expression
Manage daemon process
Manage docker app
Start check (avoid leak)
Session login
Manage stdout/stderr
Health check
Rich control options
Authentication
Multi-tenant

Cluster mode

Feature App Mesh Kubernetes
Easy deploy
More features
Non-container app
Service expose
Scheduler
Definition file JSON YAML
GUI
Virtual Network
Monitor tools

Component diagram

block-diagram


Success


Library dependency

app-mesh's People

Contributors

dependabot[bot] avatar frederickhou avatar gitter-badger avatar hanixnicolas avatar laoshanxi avatar renovate[bot] avatar rk801 avatar songleo avatar step-security-bot avatar yutiansut avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

app-mesh's Issues

Apine Linux image support

Most of the dependency can support Alpine Linux (mainly used for tiny Docker container), but ACE have not support Alpine yet.

Alpine is not glibc but musl libc, see according issue:

DOCGroup/ACE_TAO#914

Integrate with Prometheus

  1. prepare Prometheus config file
$ echo -n 'global: 
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['127.0.0.1:9090']
  - job_name: 'centos7-appmgr'
    scrape_interval: 10s
    static_configs:
      - targets: ['10.1.241.54:6061']
' | tee /opt/prometheus.yml
  1. start Promeeheus container (use host mode networking for container connect host port)
docker run --restart=always -d --net=host --user root --privileged --name prom -v /opt/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

http://10.1.241.54:9090/config
GitHub Logo

http://10.1.241.54:9090/targets
GitHub Logo

Cluster management

Target:

  1. Application failover
  2. Master election
  3. Package management (docker could easy for package management)

Application support HA

App can register to 2+ hosts for HA.

Introduce Consul to eletion Appmanager Master to schedule Apps.

appc sh specify user

  1. need passless to self
$ appc sh -u admin -c 'su - -c "oc project"'
  1. no need passless
    root switch to admin user with login environment:
$ appc sh -b "10.127.21.1" -c 'su - admin -c "oc get nodes"' 

Support HA

Solutions:

  1. persist configuration file in 3rd storage
  2. configuration file name use a unique file name

Multi-tenancy support

Application does not have ownership, it's better to support a tree structure multi tenant, so specific user could see the sub-tree content.

build & install enhancement

  1. watchdog.sh support register a args as application
  2. If install in docker container, should support not instsall system service

Failed to connect to any resolved endpoint?

Usage: appc [COMMAND] [ARG...] [flags]
root@quantaxis-PowerEdge-R610:/home/quantaxis# appc view
Failed to connect to any resolved endpoint
root@quantaxis-PowerEdge-R610:/home/quantaxis# appc reg -n ping -c 'ping www.baidu.com' -o 10
Failed to connect to any resolved endpoint
root@quantaxis-PowerEdge-R610:/home/quantaxis#

jwt add expire time

Here is a simple example of creating a token that will expire in one hour:

auto token = jwt::create()
.set_issuer("auth0")
.set_issued_at(std::chrono::system_clock::now())
.set_expires_at(std::chrono::system_clock::now() + std::chrono::seconds{3600})
.sign(jwt::algorithm::hs256{"secret"});

Integrate with Consul

# start consul
$ docker run -d --name=consul --net=host consul

# register service to consul
$ curl -X PUT -d '
{
   "address": "192.168.3.27",
   "checks": [
       {
           "http": "https://192.168.3.27:6060",
           "interval": "5s",
           "method": "GET",
           "tls_skip_verify": true
       }
   ],
   "id": "appmgr192.168.3.27",
   "name": "appmgr192.168.3.27",
   "port": 6060,
   "tags": [
       "appmgr"
   ]
}
'   http://192.168.3.27:8500/v1/agent/service/register

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.