Erda is an open-source platform created by Terminus to ensure the development of microservice applications.

Erda logo

An enterprise-grade Cloud-Native application platform

license Go Report Card release

Introduction | Quick Start | Installation | Documentation | CHANGELOG | Contributing

Demo

Screenshot

Introduction

Erda is an open-source platform created by Terminus to ensure the development of microservice applications. It provides DevOps, microservice governance, and multi-cloud management capabilities. The multi-cloud architecture based on Kubernetes and application-centric DevOps and microservice governance can make the development, operation, monitoring, and problem diagnosis of complex business applications simpler and more efficient.

Functional Architecture

Erda is mainly composed of the following parts:

  • DevOps
  • Microservice Governance, including Application Performance Management, Monitoring, Log Analysis, API Gateway, etc.
  • Multi-Cloud Management
  • Edge Computing
  • FastData Management

Vision: Build any application, Deploy anywhere, Monitor anything

Architecture

The Erda project consists of multiple repsitories according to different functions. The key repositories are erda, erda-ui, erda-proto, erda-infra, erda-actions, erda-addons, docs.

erda

It is the core repository that implements all the RESTful and gRPC interfaces of the backend services of Erda platform by multiple components in microservice architecture.

erda-ui

It is the graphical user portal of Erda platform built with React with the help of which users can work upon Erda platform very easily. It talks with erda backend services in RESTful APIs.

erda-proto

It defines a part of the communication protocols among erda backend services using Protocol Buffers. All the other protocols among erda backend services will be migrated here in the near future.

erda-infra

It is a lightweight microservices framework implements by golang. It provides many popular middleware providers such as Redis, KafKa, etcd, etc., so that developers can build a module-driven application quickly with help of it. It is also integrated into almost all the backend components in erda.

erda-actions

It holds the definition for the official Pipeline Actions of the Erda Action Marketplace as found at https://www.erda.cloud/market/action. A Pipeline Action plays as a mininal runnable unit in Erda Pipelines such as checking out source code in github, buiding a docker image, creating a deployment in a Kubernetes cluster etc.. You can find more information about Pipeline Actions here.

erda-addons

It holds the definition for the official Addons of the Erda Addon Marketplace as found at https://www.erda.cloud/market/addon. An Addon holds the configration of a middleware like MySQL, Redis, etc. or a third-party service and it can be shared to different environments of applications, so that developers would not need to import the same configurations again and again in different environments. You can find more information about Erda Addons here.

docs

It is the codebase of Erda documentation built with vuepress.

There are some extra repositories that plays as customized third-partiy independent components and tools in Erda project such as

  • erda-proto-go generated code for Erda protobuf data modals and protocols.
  • erda-analyzer is the streaming aggregator for metrics and alert data.
  • erda-java-agent is the apm java agent in Erda platform.
  • telegraf is the plugin-driven server agent for collecting & reporting metrics.
  • kubeprober is a large-scale Kubernetes cluster diagnostic tool.
  • beats is the lightweight shippers for Elasticsearch & Logstash.
  • remotedialer is a reverse tunneling dialer.
  • erda-bot is the bot handing Github webhooks.

Quick Start

To get started, see Quick Start.

Installation

Please refer to the following documentation to install Erda.

User Manual

To start using Erda, please refer to the following documentation.

Contributing

Contributions are always welcomed. Please refer to Contributing to Erda for details.

Contact Us

If you have any questions, please feel free to contact us.

License

Erda is under the AGPL 3.0 license. See the LICENSE file for details.

Comments
  • feat(template): update pull request template

    feat(template): update pull request template

    What type of PR is this?

    What this PR does / why we need it:

    feat(template): update pull request template

    Which issue(s) this PR fixes:

    Fixes #

    Special notes for your reviewer:

    Reivewers List:

    /assgin @luobily

    Does this PR introduce a user-facing change?

    
    

    Additional documentation usage docs, etc.:

    
    
  • App pipeline inodes use URLEncoding instead of StdEncoding

    App pipeline inodes use URLEncoding instead of StdEncoding

    What type of this PR

    bug

    What this PR does / why we need it:

    App pipeline inodes use URLEncoding instead of StdEncoding

    Specified Reviewers:

    /assign @sfwn

    Need cherry-pick to release versions?

    /cherry-pick release/1.2

  • 使用安装指导安装,不能够正常的安装其openapi服务

    使用安装指导安装,不能够正常的安装其openapi服务

    What happened:

    概况

    按照安装指导,在第3步和第4步之间不能够正常安装。

    详述
    1. 通过第3步最后一步安装:
    helm install package/erda-0.1.0.tgz --generate-name
    
    1. k8s上对应pod和task已经执行成功,然而,在k8s中并没有生成名字为openapi的pod
    # kubectl get all
    NAME                                         READY   STATUS      RESTARTS   AGE
    pod/addon-cassandra-dc1-rack1-0              2/2     Running     0          37m
    pod/addon-elasticsearch-0                    1/1     Running     0          37m
    pod/addon-kafka-8686c5dc7d-kzn5t             1/1     Running     1          37m
    pod/addon-kms-5ffb9c994d-mzs7n               1/1     Running     0          37m
    pod/addon-nexus-59478988-5lf7g               1/1     Running     0          37m
    pod/addon-registry-65c5bc9fc5-v2ppd          1/1     Running     0          37m
    pod/addon-sonar-7fcbd7f6f6-l62lf             1/1     Running     0          37m
    pod/addon-zookeeper-776dbf8694-bvsgs         1/1     Running     0          37m
    pod/cassandra-operator-6bfff7d475-92f97      1/1     Running     0          45m
    pod/elasticsearch-operator-ff85d4bc4-pf76x   1/1     Running     0          45m
    pod/erda-etcd-745674469c-gkxzj               1/1     Running     0          37m
    pod/erda-init-image-nvh6l                    0/1     Completed   0          34m
    pod/erda-mysql-f868ccd5f-ckwr4               1/1     Running     0          37m
    pod/erda-operator-676dc98cc-9snjk            1/1     Running     0          45m
    pod/netportal-7d6c49c8d7-9fs8c               1/1     Running     0          37m
    pod/redis-operator-7f5cfdf469-xm66p          1/1     Running     0          45m
    pod/rfr-addon-redis-0                        1/1     Running     0          37m
    pod/rfs-addon-redis-559494bf95-frv2z         1/1     Running     0          37m
    pod/volume-provisioner-5cnpc                 1/1     Running     0          45m
    pod/volume-provisioner-bdgtv                 1/1     Running     0          45m
    pod/volume-provisioner-dgj8g                 1/1     Running     0          45m
    pod/volume-provisioner-g4zhj                 1/1     Running     0          45m
    pod/volume-provisioner-pgjln                 1/1     Running     0          45m
    pod/volume-provisioner-pqjw4                 1/1     Running     0          45m
    
    NAME                                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
    service/addon-cassandra                ClusterIP   None            <none>        9042/TCP                     37m
    service/addon-cassandra-exporter-jmx   ClusterIP   None            <none>        9500/TCP                     37m
    service/addon-elasticsearch            ClusterIP   10.68.176.167   <none>        9200/TCP                     37m
    service/addon-elasticsearch-master     ClusterIP   10.68.5.114     <none>        9300/TCP                     37m
    service/addon-kafka                    ClusterIP   None            <none>        9092/TCP,9988/TCP,8778/TCP   37m
    service/addon-kms                      ClusterIP   10.68.158.39    <none>        3082/TCP                     37m
    service/addon-nexus                    ClusterIP   10.68.166.35    <none>        8081/TCP,5000/TCP,5500/TCP   37m
    service/addon-registry                 ClusterIP   10.68.175.212   <none>        5000/TCP,5050/TCP            37m
    service/addon-sonar                    ClusterIP   10.68.130.217   <none>        9000/TCP                     37m
    service/addon-zookeeper                ClusterIP   10.68.32.22     <none>        2181/TCP,2888/TCP,3888/TCP   37m
    service/cassandra-operator-metrics     ClusterIP   10.68.221.183   <none>        8383/TCP                     45m
    service/elasticsearch-operator         ClusterIP   10.68.219.118   <none>        443/TCP                      45m
    service/erda-etcd                      ClusterIP   10.68.176.156   <none>        2379/TCP                     37m
    service/erda-mysql                     ClusterIP   10.68.135.23    <none>        3306/TCP                     37m
    service/kubernetes                     ClusterIP   10.68.0.1       <none>        443/TCP                      4h50m
    service/netportal                      ClusterIP   10.68.201.196   <none>        80/TCP                       37m
    service/rfs-addon-redis                ClusterIP   10.68.62.148    <none>        26379/TCP                    37m
    
    NAME                                DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/volume-provisioner   6         6         6       6            6           <none>          45m
    
    NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/addon-kafka              1/1     1            1           37m
    deployment.apps/addon-kms                1/1     1            1           37m
    deployment.apps/addon-nexus              1/1     1            1           37m
    deployment.apps/addon-registry           1/1     1            1           37m
    deployment.apps/addon-sonar              1/1     1            1           37m
    deployment.apps/addon-zookeeper          1/1     1            1           37m
    deployment.apps/cassandra-operator       1/1     1            1           45m
    deployment.apps/elasticsearch-operator   1/1     1            1           45m
    deployment.apps/erda-etcd                1/1     1            1           37m
    deployment.apps/erda-mysql               1/1     1            1           37m
    deployment.apps/erda-operator            1/1     1            1           45m
    deployment.apps/netportal                1/1     1            1           37m
    deployment.apps/redis-operator           1/1     1            1           45m
    deployment.apps/rfs-addon-redis          1/1     1            1           37m
    
    NAME                                               DESIRED   CURRENT   READY   AGE
    replicaset.apps/addon-kafka-8686c5dc7d             1         1         1       37m
    replicaset.apps/addon-kms-5ffb9c994d               1         1         1       37m
    replicaset.apps/addon-nexus-59478988               1         1         1       37m
    replicaset.apps/addon-registry-65c5bc9fc5          1         1         1       37m
    replicaset.apps/addon-sonar-7fcbd7f6f6             1         1         1       37m
    replicaset.apps/addon-zookeeper-776dbf8694         1         1         1       37m
    replicaset.apps/cassandra-operator-6bfff7d475      1         1         1       45m
    replicaset.apps/elasticsearch-operator-ff85d4bc4   1         1         1       45m
    replicaset.apps/erda-etcd-745674469c               1         1         1       37m
    replicaset.apps/erda-mysql-f868ccd5f               1         1         1       37m
    replicaset.apps/erda-operator-676dc98cc            1         1         1       45m
    replicaset.apps/netportal-7d6c49c8d7               1         1         1       37m
    replicaset.apps/redis-operator-7f5cfdf469          1         1         1       45m
    replicaset.apps/rfs-addon-redis-559494bf95         1         1         1       37m
    
    NAME                                         READY   AGE
    statefulset.apps/addon-cassandra-dc1-rack1   1/1     37m
    statefulset.apps/addon-elasticsearch         1/1     37m
    statefulset.apps/rfr-addon-redis             1/1     37m
    
    NAME                        COMPLETIONS   DURATION   AGE
    job.batch/erda-init-image   1/1           57s        34m
    
    NAME                                                AGE
    redisfailover.databases.spotahome.com/addon-redis   37m
    
    
    1. 参考第4步的bash scripts/push-ext.sh脚本,易得知此时第4步会陷入死循环中。因为此时openapi的svc为空,无法生成正确的hosts
    ...
    echo `kubectl get svc -n default | grep openapi | awk '{print $3}'` openapi.${ERDA_NAMESPACE}.svc.cluster.local >> /etc/hosts
    ...
    
    1. 再参考quickstart的安装,可以看到quickstart的docker中有openapi的镜像。

    2. 当我们忽略前面的错误继续配置,然后通过浏览器访问,得到404 错误,反馈消息是

    backend server not found
    

    What you expected to happen:

    helm install package/erda-0.1.0.tgz --generate-name命令执行之后,可以生成对应的openapi pod和service;抑或是该服务更改了名字的情况下,需要修改bash-ext.sh脚本。

    How to reproduce it (as minimally and precisely as possible):

    1. 使用kubeasz的标准步骤部署k8s。网络组件使用flannel。
    2. 使用该指导进行操作

    Anything else we need to know?:

    Environment:

    • Erda version: v1.0.0,v1.0.0-rc(两个版本都试过,上面的日志是v1.0.0的问题)
    • Kubernetes version (use kubectl version): v1.21.0
    • Cloud provider or hardware configuration: tencent cloud, 3-masters-and-3-slaves-k8s installed by kubeasz
    • OS (e.g: cat /etc/os-release): centos 7.9
    • Kernel (e.g. uname -a): 3.10.0-1160.11.1.el7.x86_64
    • Network plugin and version (if this is a network-related bug):
    • Others:
  • fix: host-based job scheduling

    fix: host-based job scheduling

    What type of this PR

    Add one of the following kinds: /kind bug

    What this PR does / why we need it:

    Which issue(s) this PR fixes:

    Fixes # host-based job scheduling

    Specified Reviewers:

    /assign @sixther-dc @Muzry

  • feat: kms support rsa 4096 3072 2048

    feat: kms support rsa 4096 3072 2048

    What this PR does / why we need it:

    kms support rsa 4096 3072 2048

    Which issue(s) this PR fixes:

    Specified Reviewers:

    /assign @your-reviewer

    ChangeLog

    | Language | Changelog | | --------- | ------------ | | 🇺🇸 English | Support kms rsa 4096 3072 2048 | | 🇨🇳 中文 | kms的rsa |

    Need cherry-pick to release versions?

    Add comment like /cherry-pick release/1.0 when this PR is merged.

    For details on the cherry pick process, see the cherry pick requests section under CONTRIBUTING.md.

  • fix(pipeline): query cron is-existed by transaction session to avoid competing links

    fix(pipeline): query cron is-existed by transaction session to avoid competing links

    What this PR does / why we need it:

    query cron is-existed by transaction session to avoid competing links

    Which issue(s) this PR fixes:

    Specified Reviewers:

    /assign @sfwn

    ChangeLog

    | Language | Changelog | | --------- | ------------ | | 🇺🇸 English | Fix the bug that query cron is-existed by transaction session to avoid competing links | | 🇨🇳 中文 | 修复并发数大于mysql链接数的情况下事物卡住 |

    Need cherry-pick to release versions?

    Add comment like /cherry-pick release/1.0 when this PR is merged.

    For details on the cherry pick process, see the cherry pick requests section under CONTRIBUTING.md.

  • use job cluster as cluster name if not empty

    use job cluster as cluster name if not empty

    What type of this PR

    Add one of the following kinds: /kind bugfix

    What this PR does / why we need it:

    use job cluster as cluster name if not empty

    Which issue(s) this PR fixes:

    • Fixes #your-issue_number
    • [Erda Cloud Issue Link](paste your link here)

    Specified Reviewers:

    /assign @your-reviewer

    ChangeLog

    Need cherry-pick to release versions?

    Add comment like /cherry-pick release/1.0 when this PR is merged.

    For details on the cherry pick process, see the cherry pick requests section under CONTRIBUTING.md.

  • move to right place for old table migraiton

    move to right place for old table migraiton

    What type of this PR

    Add one of the following kinds: /kind bug

    What this PR does / why we need it:

    move to right place for old table migraiton

    Which issue(s) this PR fixes:

    • Fixes #your-issue_number
    • [Erda Cloud Issue Link](paste your link here)

    Specified Reviewers:

    /assign @sfwn @littlejiancc

    ChangeLog

    | Language | Changelog | | --------- | ------------ | | 🇺🇸 English | | | 🇨🇳 中文 | |

    Need cherry-pick to release versions?

    Add comment like /cherry-pick release/1.0 when this PR is merged.

    For details on the cherry pick process, see the cherry pick requests section under CONTRIBUTING.md.

  • fix: scheduler maybe register empty address to eventbox

    fix: scheduler maybe register empty address to eventbox

    What type of this PR

    Add one of the following kinds: /kind bug

    What this PR does / why we need it:

    1. remove eventbox buildin scheduler webhook
    2. add scheduler register cluster event webohook

    Which issue(s) this PR fixes:

    • Fixes #your-issue_number
    • [Erda Cloud Issue Link](paste your link here)

    Specified Reviewers:

    /assign @luobily

    ChangeLog

    | Language | Changelog | | --------- | ------------ | | 🇺🇸 English | scheduler maybe register empty address to eventbox | | 🇨🇳 中文 | 修复 Erda 部署时,scheduler webhook 注册到 eventbox 中为空的情况 |

    Need cherry-pick to release versions?

    Add comment like /cherry-pick release/1.0 when this PR is merged.

    For details on the cherry pick process, see the cherry pick requests section under CONTRIBUTING.md.

  • Support to get Action from git, in order to debug Action quickly

    Support to get Action from git, in order to debug Action quickly

    What type of this PR

    /kind feature

    What this PR does / why we need it:

    Modified the code of the DiceHub module

    Support to get pipeline-action from git Support to concurrent query extension

    pipeline get pipeline-action definition form erda-action project before. In order to debug pipeline-action ,support get it form git

    because get pipeline-action form git need a lot of time. Support concurrent query. Call the interface once for about 5 seconds

  • hide project report menu

    hide project report menu

    What type of this PR

    /kind feature

    What this PR does / why we need it:

    1、hide project report menu

    Specified Reviewers:

    @liuhaoyang

    Need cherry-pick to release versions?

    /cherry-pick release/1.1

  • fix(erda-server): sysadmin permission leak

    fix(erda-server): sysadmin permission leak

    What this PR does / why we need it:

    fix sysadmin permission leak

    Which issue(s) this PR fixes:

    Specified Reviewers:

    /assign @your-reviewer

    ChangeLog

    | Language | Changelog | | --------- | ------------ | | 🇺🇸 English | Fix the bug that sysadmin permission leak | | 🇨🇳 中文 | 修复了系统管理员权限泄露的问题 |

    Need cherry-pick to release versions?

    Add comment like /cherry-pick release/1.0 when this PR is merged.

    For details on the cherry pick process, see the cherry pick requests section under CONTRIBUTING.md.

  • java编译,maven仓库的缓存问题。

    java编译,maven仓库的缓存问题。

    编译java项目的时候,需要从maven仓库里下载jar包和pom文件,但是每次编译jar包都会去maven仓库拉取,下载都会耗时,影响效率,有什么方式可以缓存maven仓库么?

    日志如下,每次编译都有大量的download 信息:

    2022-12-22 17:49:42successfully loaded action config 2022-12-22 17:49:42successfully replaced action placeholder 2022-12-22 17:49:42change workding directory to: /.pipeline/container/context/git-checkout 2022-12-22 17:49:42build maven app 2022-12-22 17:49:42Run: /bin/bash, [-c MAVEN_OPTS=-Xmx2016m mvn clean package -e -B -U -Dmaven.test.skip -s /opt/action/comp/maven/settings.xml ] 2022-12-22 17:49:43[INFO] Error stacktraces are turned on. 2022-12-22 17:49:43[INFO] Scanning for projects...

    2022-12-22 17:49:44[INFO] Downloading from terminus: http://192.168.14.12:8081/nexus/repository/public/com/dhc/leapower/business/leapower-business/4.1-SNAPSHOT/maven-metadata.xml

    2022-12-22 17:49:44[INFO] Downloaded from terminus: http://192.168.14.12:8081/nexus/repository/public/com/dhc/leapower/business/leapower-business/4.1-SNAPSHOT/maven-metadata.xml (617 B at 6.3 kB/s) 2022-12-22 17:49:44[INFO] Downloading from terminus: http://192.168.14.12:8081/nexus/repository/public/com/dhc/leapower/business/leapower-business/4.1-SNAPSHOT/leapower-business-4.1-20221219.030915-44.pom 2022-12-22 17:49:44[INFO] Downloaded from terminus: http://192.168.14.12:8081/nexus/repository/public/com/dhc/leapower/business/leapower-business/4.1-SNAPSHOT/leapower-business-4.1-20221219.030915-44.pom (8.6 kB at 720 kB/s)

  • feat: support making linux/arm64 docker images

    feat: support making linux/arm64 docker images

    What this PR does / why we need it:

    support making linux/arm64 docker images

    Which issue(s) this PR fixes:

    Specified Reviewers:

    /assign @cxr29

    ChangeLog

    | Language | Changelog | | --------- | ------------ | | 🇺🇸 English | support making linux/arm64 docker images | | 🇨🇳 中文 | 支持制作 linux/arm64 的 Docker 镜像 |

Microservice - A sample architecture of a microservice in go

#microservice Folder structure required. service certs config config.yaml loggin

Feb 3, 2022
Microservice - Microservice golang & nodejs
Microservice - Microservice golang & nodejs

Microservice Gabungan service dari bahasa pemograman go, nodejs Demo API ms-auth

May 21, 2022
Customer-microservice - Microservice of customer built with golang and gRPC

?? Building microservices to manage customer data using Go and gRPC Command to g

Sep 8, 2022
a microservice framework for rapid development of micro services in Go with rich eco-system
a microservice framework for rapid development of micro services in Go with rich eco-system

中文版README Go-Chassis is a microservice framework for rapid development of microservices in Go. it focus on helping developer to deliver cloud native a

Dec 27, 2022
Micro is a platform for cloud native development
Micro is a platform for cloud native development

Micro Overview Micro addresses the key requirements for building services in the cloud. It leverages the microservices architecture pattern and provid

Dec 29, 2022
Source code related to an on-site demonstration (for Ardan Labs) of packaging Go applications with Nix

Ardan Labs Nix Demo High-Level Overview We bumbled the scheduling of an earlier presentation about git worktree that a few co-workers attended. In eff

Oct 12, 2022
Istio - An open platform to connect, manage, and secure microservices

Istio An open platform to connect, manage, and secure microservices. For in-dept

Jan 5, 2022
An open platform to connect, manage, and secure microservices.

Istio An open platform to connect, manage, and secure microservices. For in-depth information about how to use Istio, visit istio.io To ask questions

Feb 6, 2022
Go gRPC RabbitMQ email microservice

Go, RabbitMQ and gRPC Clean Architecture microservice ?? ??‍?? Full list what has been used: GRPC - gRPC RabbitMQ - RabbitMQ sqlx - Extensions to data

Dec 29, 2022
A Microservice Toolkit from The New York Times
A Microservice Toolkit from The New York Times

Gizmo Microservice Toolkit This toolkit provides packages to put together server and pubsub daemons with the following features: Standardized configur

Jan 7, 2023
Go products microservice

Golang Kafka gRPC MongoDB microservice example ?? ??‍?? Full list what has been used: Kafka - Kafka library in Go gRPC - gRPC echo - Web framework vip

Dec 28, 2022
Kratos is a microservice-oriented governance framework implements by golang
Kratos is a microservice-oriented governance framework implements by golang

Kratos is a microservice-oriented governance framework implements by golang, which offers convenient capabilities to help you quickly build a bulletproof application from scratch.

Dec 27, 2022
Modern microservice web framework of golang
Modern microservice web framework of golang

gogo gogo is an open source, high performance RESTful api framework for the Golang programming language. It also support RPC api, which is similar to

May 23, 2022
Go microservice tutorial project using Domain Driven Design and Hexagonal Architecture!

"ToDo API" Microservice Example Introduction Welcome! ?? This is an educational repository that includes a microservice written in Go. It is used as t

Jan 4, 2023
A Microservice Toolkit from The New York Times
A Microservice Toolkit from The New York Times

Gizmo Microservice Toolkit This toolkit provides packages to put together server and pubsub daemons with the following features: Standardized configur

May 31, 2021
Kratos is a microservice-oriented governance framework implements by golang,
Kratos is a microservice-oriented governance framework implements by golang,

Kratos is a microservice-oriented governance framework implements by golang, which offers convenient capabilities to help you quickly build a bulletproof application from scratch.

Dec 31, 2022
User management microservice written in Go with Postgres

user-registration-service-go Simple user registration microservice written in Go with Postgres database. Uses clean architecture to accept requests fr

Nov 24, 2022
Social previews generator as a microservice.
Social previews generator as a microservice.

ogimgd Social previews generator as a microservice. Can be used to generate images for og:image meta-tag. It runs as an HTTP server with a single endp

Sep 17, 2022
An production-ready microservice using Go and a few lightweight libraries
An production-ready microservice using Go and a few lightweight libraries

Go Micro Example This small sample project was created as a collection of the various things I've learned about best practices building microservices

Dec 26, 2022