erda

module
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 16, 2021 License: Apache-2.0

README

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.

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.

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.

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 Local installation.

Installation

Erda can be deployed in either a single node or multi-node setup. Please download binaries of Erda release and follow Installation & Configuration Guide 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 Apache 2.0 license. See the LICENSE file for details.

Directories

Path Synopsis
Package apistructs api request/response结构体定义 Package apistructs 自动化运行脚本相关 UnifiedFileTree 统一目录树协议
Package apistructs api request/response结构体定义 Package apistructs 自动化运行脚本相关 UnifiedFileTree 统一目录树协议
Package bundle 定义了整个 dice 的 client 方法 用法: b := bundle.New() b.CallXXX() Package bundle 见 bundle.go Package bundle 见 bundle.go Package bundle 见 bundle.go
Package bundle 定义了整个 dice 的 client 方法 用法: b := bundle.New() b.CallXXX() Package bundle 见 bundle.go Package bundle 见 bundle.go Package bundle 见 bundle.go
cmd
cmp
dop
ecp
kms
msp
modules
admin/dao
Package dbclient 定义数据库操作的方法, orm 等。
Package dbclient 定义数据库操作的方法, orm 等。
cmp
Package cmp Core components of multi-cloud management platform Package cmp Core components of multi-cloud management platform
Package cmp Core components of multi-cloud management platform Package cmp Core components of multi-cloud management platform
cmp/conf
Package conf Define the configuration
Package conf Define the configuration
core-services
Package core_services
Package core_services
core-services/conf
Package conf 定义配置选项
Package conf 定义配置选项
core-services/endpoints
Package endpoints 定义所有的 route handle.
Package endpoints 定义所有的 route handle.
core-services/services/application
Package application 应用逻辑封装
Package application 应用逻辑封装
core-services/services/approve
Package approve 封装Approve资源相关操作
Package approve 封装Approve资源相关操作
core-services/services/member
Package member 成员操作封装
Package member 成员操作封装
core-services/services/org
Package org 封装企业资源相关操作
Package org 封装企业资源相关操作
core-services/services/project
Package project 封装项目资源相关操作
Package project 封装项目资源相关操作
core/monitor/event/query
Package query is a generated GoMock package.
Package query is a generated GoMock package.
dicehub
Package dicehub Dicehub module
Package dicehub Dicehub module
dicehub/conf
Package conf Dicehub 环境配置
Package conf Dicehub 环境配置
dicehub/dbclient
Package dbclient 数据库相关操作
Package dbclient 数据库相关操作
dicehub/endpoints
Package endpoints 定义所有的 route handle.
Package endpoints 定义所有的 route handle.
dicehub/errcode
Package errcode Dicehub错误码
Package errcode Dicehub错误码
dicehub/event
Package event DiceHub关键操作事件发送逻辑
Package event DiceHub关键操作事件发送逻辑
dicehub/recycle
Package recycle Release GC处理
Package recycle Release GC处理
dicehub/registry
Package registry docker registry manifest操作
Package registry docker registry manifest操作
dicehub/release
Package recycle Release GC
Package recycle Release GC
dicehub/release/event
Package event DiceHub important operation event sending logic
Package event DiceHub important operation event sending logic
dicehub/response
Package response release api 响应格式
Package response release api 响应格式
dop
dop/dao
Package dbclient 定义数据库操作的方法, orm 等。
Package dbclient 定义数据库操作的方法, orm 等。
dop/dbclient
Package dbclient defines operations about database
Package dbclient defines operations about database
dop/endpoints
Package endpoints 定义所有的 route handle.
Package endpoints 定义所有的 route handle.
dop/event
Package event 事件信息
Package event 事件信息
dop/services/apierrors
Package apierrors 定义了错误列表
Package apierrors 定义了错误列表
dop/services/appcertificate
Package appcertificate 封装AppCertificate资源相关操作
Package appcertificate 封装AppCertificate资源相关操作
dop/services/assetsvc
Package asset API 资产
Package asset API 资产
dop/services/cdp
Package cdp pipeline相关的结构信息
Package cdp pipeline相关的结构信息
dop/services/certificate
Package certificate 封装Certificate资源相关操作
Package certificate 封装Certificate资源相关操作
dop/services/issue
Package issue 封装 事件 相关操作
Package issue 封装 事件 相关操作
dop/services/issuestate
Package issuestate is a generated GoMock package.
Package issuestate is a generated GoMock package.
dop/services/iteration
Package iteration 封装 迭代 相关操作
Package iteration 封装 迭代 相关操作
dop/services/pipeline
Package pipeline pipeline相关的结构信息
Package pipeline pipeline相关的结构信息
dop/services/publisher
Package publisher 封装Publisher资源相关操作
Package publisher 封装Publisher资源相关操作
dop/services/ticket
Package ticket 封装工单相关操作
Package ticket 封装工单相关操作
ecp
eventbox/register
对外提供 API 用于注册特定 label 对 其他 label 的关系 暂定这个特定 label 的 key 为 "REGISTERED_LABEL".(constant.RegisterLabelKey) e.g.
对外提供 API 用于注册特定 label 对 其他 label 的关系 暂定这个特定 label 的 key 为 "REGISTERED_LABEL".(constant.RegisterLabelKey) e.g.
eventbox/register/label
default register labels here
default register labels here
eventbox/server
TODO: refactor this module when pkg/httpserver ready
TODO: refactor this module when pkg/httpserver ready
kms
Package kms provides unified Key Management Service.
Package kms provides unified Key Management Service.
kms/conf
Package conf defines config options.
Package conf defines config options.
kms/endpoints
Package endpoints defines all route handlers.
Package endpoints defines all route handlers.
kms/endpoints/apierrors
Package apierrors defines all service errors.
Package apierrors defines all service errors.
openapi/api/apis/dicehub
Package apis dice api集合 Package apis dice api集合
Package apis dice api集合 Package apis dice api集合
openapi/monitor
Package monitor collect and export openapi metrics Package monitor collect and export openapi metrics
Package monitor collect and export openapi metrics Package monitor collect and export openapi metrics
orchestrator
Package orchestrator 编排器 Package orchestrator is a generated GoMock package.
Package orchestrator 编排器 Package orchestrator is a generated GoMock package.
orchestrator/components/runtime/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
orchestrator/conf
Package conf 定义了 orchestrator 所需要的配置选项,这些配置选项都是通过环境变量加载.
Package conf 定义了 orchestrator 所需要的配置选项,这些配置选项都是通过环境变量加载.
orchestrator/dbclient
Package dbclient 定义数据库操作的方法, orm 等。
Package dbclient 定义数据库操作的方法, orm 等。
orchestrator/endpoints
Package endpoints 定义所有的 route handle.
Package endpoints 定义所有的 route handle.
orchestrator/services/addon/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
orchestrator/services/apierrors
Package apierrors 定义了错误列表
Package apierrors 定义了错误列表
orchestrator/services/deployment
Package deployment 部署相关操作
Package deployment 部署相关操作
orchestrator/services/runtime
Package runtime 应用实例相关操作
Package runtime 应用实例相关操作
pipeline
Package pipeline 流水线
Package pipeline 流水线
pipeline/conf
Package conf 定义了 pipeline 所需要的配置选项,这些配置选项都是通过环境变量加载.
Package conf 定义了 pipeline 所需要的配置选项,这些配置选项都是通过环境变量加载.
pipeline/endpoints
Package endpoints 定义所有的 route handle.
Package endpoints 定义所有的 route handle.
pipeline/metrics
Package metrics work with monitor metrics.
Package metrics work with monitor metrics.
pipeline/pipengine/queue
Package queue includes: - priority queue - enhanced queue based on priority queue - throttler for pipeline based on enhanced queue
Package queue includes: - priority queue - enhanced queue based on priority queue - throttler for pipeline based on enhanced queue
pipeline/pipengine/reconciler
@Title This file is used to cache the objects that need to be reused in the reconciler @Description The cached data is placed in the global sync.Map, you need to call clearPipelineContextCaches to clean up the corresponding data after you use it at will
@Title This file is used to cache the objects that need to be reused in the reconciler @Description The cached data is placed in the global sync.Map, you need to call clearPipelineContextCaches to clean up the corresponding data after you use it at will
pipeline/pkg/action_info
@Title this file is used to query the action definition @Description query action definition and spec
@Title this file is used to query the action definition @Description query action definition and spec
pipeline/services/apierrors
Package apierrors 定义了错误列表
Package apierrors 定义了错误列表
pkg/etcdclient
由于要实现 多个eventbox实例同时watch相同目录,并且只处理一次,而etcd库中提供的分布式锁在etcd断开连接时候有问题, eventbox中用事务来实现, 但是需要一个 etcd client, 所以在这个文件实现一下 NewEtcdClient
由于要实现 多个eventbox实例同时watch相同目录,并且只处理一次,而etcd库中提供的分布式锁在etcd断开连接时候有问题, eventbox中用事务来实现, 但是需要一个 etcd client, 所以在这个文件实现一下 NewEtcdClient
pkg/innerdomain
Package innerdomain , interconversion between k8s & marathon internal domain 旧版本的内部地址格式 <servicename>.<servicegroup-name>.<servicegroup-namespace>.<suffix1>.<suffix2>.marathon.l4lb.thisdcos.directory e.g.
Package innerdomain , interconversion between k8s & marathon internal domain 旧版本的内部地址格式 <servicename>.<servicegroup-name>.<servicegroup-namespace>.<suffix1>.<suffix2>.marathon.l4lb.thisdcos.directory e.g.
pkg/user
Package user 定义通用的 user 逻辑.
Package user 定义通用的 user 逻辑.
scheduler/executor/plugins/k8s
Package k8s implements managing the servicegroup by k8s cluster
Package k8s implements managing the servicegroup by k8s cluster
scheduler/executor/plugins/k8s/addon/sourcecov/mock
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
scheduler/executor/plugins/k8s/configmap
Package configmap manipulates the k8s api of configmap object
Package configmap manipulates the k8s api of configmap object
scheduler/executor/plugins/k8s/deployment
Package deployment manipulates the k8s api of deployment object
Package deployment manipulates the k8s api of deployment object
scheduler/executor/plugins/k8s/event
Package event manipulates the k8s api of event object Package event manipulates the k8s api of event object Package event manipulates the k8s api of event object
Package event manipulates the k8s api of event object Package event manipulates the k8s api of event object Package event manipulates the k8s api of event object
scheduler/executor/plugins/k8s/ingress
Package ingress manipulates the k8s api of ingress object
Package ingress manipulates the k8s api of ingress object
scheduler/executor/plugins/k8s/k8sapi
Package k8sapi contains necessary k8s types and objects
Package k8sapi contains necessary k8s types and objects
scheduler/executor/plugins/k8s/k8serror
Package k8serror encapsulates error of k8s object
Package k8serror encapsulates error of k8s object
scheduler/executor/plugins/k8s/k8sservice
Package k8sservice manipulates the k8s api of service object
Package k8sservice manipulates the k8s api of service object
scheduler/executor/plugins/k8s/namespace
Package namespace manipulates the k8s api of namespace object
Package namespace manipulates the k8s api of namespace object
scheduler/executor/plugins/k8s/persistentvolume
Package persistentvolume manipulates the k8s api of persistentvolume object
Package persistentvolume manipulates the k8s api of persistentvolume object
scheduler/executor/plugins/k8s/persistentvolumeclaim
Package persistentvolumeclaim manipulates the k8s api of persistentvolumeclaim object
Package persistentvolumeclaim manipulates the k8s api of persistentvolumeclaim object
scheduler/executor/plugins/k8s/pod
Package pod manipulates the k8s api of pod object
Package pod manipulates the k8s api of pod object
scheduler/executor/plugins/k8s/role
Package role manipulates the k8s api of role object
Package role manipulates the k8s api of role object
scheduler/executor/plugins/k8s/rolebinding
Package rolebinding manipulates the k8s api of rolebinding object
Package rolebinding manipulates the k8s api of rolebinding object
scheduler/executor/plugins/k8s/secret
Package secret manipulates the k8s api of secret object
Package secret manipulates the k8s api of secret object
scheduler/executor/plugins/k8s/serviceaccount
Package serviceaccount manipulates the k8s api of serviceaccount object
Package serviceaccount manipulates the k8s api of serviceaccount object
scheduler/executor/plugins/k8s/statefulset
Package statefulset manipulates the k8s api of statefulset object
Package statefulset manipulates the k8s api of statefulset object
scheduler/impl/cluster
Package cluster impl cluster API
Package cluster impl cluster API
scheduler/impl/cluster/clusterutil
Package clusterutil cluster utils
Package clusterutil cluster utils
scheduler/server
TODO: refactor me, 把这个文件中的所有逻辑都去掉,只有 http 处理和 检查 参数合法性
TODO: refactor me, 把这个文件中的所有逻辑都去掉,只有 http 处理和 检查 参数合法性
uc-adaptor/conf
Package conf 配置文件信息
Package conf 配置文件信息
uc-adaptor/dao
Package dbclient 定义数据库操作的方法, orm 等。
Package dbclient 定义数据库操作的方法, orm 等。
uc-adaptor/endpoints
Package endpoints API相关的数据信息 Package endpoints Info的handle
Package endpoints API相关的数据信息 Package endpoints Info的handle
volume-provisioner
Package volumeprovisioner is a persistent volume claim provisioner for kubernetes.
Package volumeprovisioner is a persistent volume claim provisioner for kubernetes.
pkg
apitestsv2
* v1_jsonbody 兼容 apitestsv1 里的 json body 渲染逻辑: - 反序列化,当类型是 map 或 slice 时进行处理 - value(map 的 value、slice 的 value) 必须**全量匹配** {{.+}},不支持 {{.+}}xxx 这种 - 匹配之后,替换时根据配置的具体类型进行渲染 举例: - 例如 map 有一组 kv 为 "key1": "{{ticketID}}" - 若参数 ticketID 为 integer(10),渲染结果为 "key1": 10 - 若参数 ticketID 为 string("10"),渲染结果为 "key1": "10" - 假如 map 有一组 kv 为 "key1": {{ticketID}} - 此时反序列化失败,不进行 v1 渲染 - 此时走 v2 渲染逻辑,即文本渲染。
* v1_jsonbody 兼容 apitestsv1 里的 json body 渲染逻辑: - 反序列化,当类型是 map 或 slice 时进行处理 - value(map 的 value、slice 的 value) 必须**全量匹配** {{.+}},不支持 {{.+}}xxx 这种 - 匹配之后,替换时根据配置的具体类型进行渲染 举例: - 例如 map 有一组 kv 为 "key1": "{{ticketID}}" - 若参数 ticketID 为 integer(10),渲染结果为 "key1": 10 - 若参数 ticketID 为 string("10"),渲染结果为 "key1": "10" - 假如 map 有一组 kv 为 "key1": {{ticketID}} - 此时反序列化失败,不进行 v1 渲染 - 此时走 v2 渲染逻辑,即文本渲染。
apitestsv2/cookiejar
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
clientgo/apis/flinkoperator/v1beta1
Package v1beta1 is the v1beta1 version of the flinkcluster API.
Package v1beta1 is the v1beta1 version of the flinkcluster API.
clientgo/apis/openyurt/v1alpha1
+groupName=apps.openyurt.io Package v1alpha1 contains API Schema definitions for the apps v1alpha1 API group +kubebuilder:object:generate=true +groupName=apps.openyurt.io
+groupName=apps.openyurt.io Package v1alpha1 contains API Schema definitions for the apps v1alpha1 API group +kubebuilder:object:generate=true +groupName=apps.openyurt.io
clientgo/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
clientgo/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
clientgo/clientset/versioned/typed/flinkoperator/v1beta1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
clientgo/clientset/versioned/typed/openyurt/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
cron
Package cron implements a cron spec parser and job runner.
Package cron implements a cron spec parser and job runner.
dag
Use: 1.
Use: 1.
envconf
Package envconf 从环境变量加载配置项用于初始化具体的配置对象。
Package envconf 从环境变量加载配置项用于初始化具体的配置对象。
goroutinepool
Usage: poolSize := 10 pool := goroutinepool.New(poolSize) pool.Start() pool.Go(func(){...}) // `Go' will return `NoMoreWorkerErr' if no more worker available pool.MustGo(func(){...}) // `MustGo' will block until any worker available pool.Stop() // `Stop' will block to wait all workers done pool.Start() // and the same pool can be reused
Usage: poolSize := 10 pool := goroutinepool.New(poolSize) pool.Start() pool.Go(func(){...}) // `Go' will return `NoMoreWorkerErr' if no more worker available pool.MustGo(func(){...}) // `MustGo' will block until any worker available pool.Stop() // `Stop' will block to wait all workers done pool.Start() // and the same pool can be reused
http/httpclient
Package httpclient impl http client Package httpclient impl http client
Package httpclient impl http client Package httpclient impl http client
http/httpserver
Package httpserver httpserver统一封装,使API注册更容易
Package httpserver httpserver统一封装,使API注册更容易
http/httpserver/errorresp
Package errorresp 封装了错误定义
Package errorresp 封装了错误定义
jsonstore/cacheetcd
LRU + Watch
LRU + Watch
jsonstore/etcd
Package etcd 是 jsonstore 使用 etcd 作为 backend 的实现
Package etcd 是 jsonstore 使用 etcd 作为 backend 的实现
jsonstore/memetcd
内存 + etcd, 内存中的数据自动与 etcd 中同步
内存 + etcd, 内存中的数据自动与 etcd 中同步
jsonstore/stm
Package stm impl jsonstore stm with etcd concurrency package
Package stm impl jsonstore stm with etcd concurrency package
jsonstore/storetypes
Package storetypes define jsonstore public types
Package storetypes define jsonstore public types
jsonstore/timeout
重复插入key相同的value, 不更新该key的deadline
重复插入key相同的value, 不更新该key的deadline
kms
kms/kmstypes
kms package 提供统一加密服务。
kms package 提供统一加密服务。
loop
Package loop 提供了一个循环执行某个方法的功能,可以自定义执行时间等。
Package loop 提供了一个循环执行某个方法的功能,可以自定义执行时间等。
monitor
使用方法: 从环境变量中根据规则解析出 logrus 日志前缀 与 eventbox dest 的映射关系。
使用方法: 从环境变量中根据规则解析出 logrus 日志前缀 与 eventbox dest 的映射关系。
parser/diceyml
该 visitor 处理 diceyml 中一些字段的默认值 原本的parser会把 global env 塞到各个 service 的 env 去 找出依赖却不存在的 service 找出没有被其他service依赖的后端service, 前端service不考虑(也就是有expose的service) 检查 service name 合法性
该 visitor 处理 diceyml 中一些字段的默认值 原本的parser会把 global env 塞到各个 service 的 env 去 找出依赖却不存在的 service 找出没有被其他service依赖的后端service, 前端service不考虑(也就是有expose的service) 检查 service name 合法性
parser/pipelineyml/pipelineymlv1
All struct fields are required, unless "Optional" explicitly declared.
All struct fields are required, unless "Optional" explicitly declared.
schedule/schedulepolicy/constraintbuilders
Package constraintbuilders Generate various executor specific constraints (constraints) according to scheduleInfo
Package constraintbuilders Generate various executor specific constraints (constraints) according to scheduleInfo
schedule/schedulepolicy/labelconfig
Package labelconfig label 调度相关 key 名, 以及中间结构定义
Package labelconfig label 调度相关 key 名, 以及中间结构定义
secret/hmac
HMAC Algorithm
HMAC Algorithm
strutil
Package strutil 字符串工具包
Package strutil 字符串工具包
terminal/table
example: 1.
example: 1.
xmind
package xmind require python3
package xmind require python3
providers
some tools in this package
some tools in this package
cli

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL