vlambda博客
学习文章列表

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes

一、开源项目简介

为中国企业而来,以应用为中心的云原生cicd平台 - 流水线模板/并行构建/多环境管理/权限控制 - 致力于让中小企业快速落地Kubernetes。

二、开源协议

使用Apache-2.0开源协议

三、界面展示


1. 服务集成配置

#1.1 服务集成列表

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#1.2 新建-服务集成

#kubernetes 配置集成

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#jenkins 配置集成

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#Registry 配置集成

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


TIP

  • 支持kubernetesjenkinsRegistry 这三种类型的配置集成;

  • 必须配置至少一个jenkinsRegistrykubernetes类型可以根据需要添加;

  • 另外 Jenkins 的 kubernetes 的授权配置请查看 github

  • Registry 支持自建 Harbor、阿里云容器服务、腾讯云容器服务等,注意如果容器服务没有配置 https 域名的,请将“是否 HTTPS”设置为关闭状态

#2. 创建项目

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#3. 配置项目环境/项目流程

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#3.1 新建环境

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#3.2 新建流程

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#3.3 流程配置

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#4. 应用代码配置

#4.1 关联代码仓库

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#4.2 同步代码源

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


#4.3 应用编排配置

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes


TIP

  • 应用编排 yaml 为云原生的 kuernetes yaml 模板.

#5.创建流水线

[开源]以应用为中心的云原生CI/CD平台,致力快速落地Kubernetes



TIP

  • 流水线创建好后,根据流水线的不同的阶段会显示允许的操作动作,

#6.应用服务


TIP

  • 应用服务可以查看服务状态,水平扩展,重启,删除等.

四、功能概述

功能介绍

我的项目

  • 项目概览

  • 应用代码

  • 构建部署

  • 应用服务

  • 发布统计

  • 项目设置

  • 项目环境

  • 项目流程

系统管理

  • 系统设置

  • 服务集成

  • 任务模板

  • 编译环境

用户列表

角色列表

操作审计

功能特性

高并发的流水线

系统经过简单配置,即可自动生成高并发流水线,高效执行构建、部署、测试、环境流转等任务。这一设计解决了微服务架构下带来的多服务交付效率低下的问题

云原生的CICD

以应用为中心,使用云原生的yaml编排,轻松实现应用服务的CICD.

环境灵活配置

一个开发环境不够用?可以根据需要灵活添加或删除环境

服务集成

不论是阿里云/腾讯云,还是自建k8s,均可以轻松集成

权限管理

支持本地用户及LDAD用户认证

审计日志

五、技术选型

架构图

┌─────────┐
│ │
Gitlab ├──────┐ ┌───────────────────────┐ ┌──────────┐ ┌───────────────────────┐
│ │ │ │ AtomCI │ │ │ │ │
└─────────┘ │ │ │ │ │ │ ┌────────────────┐ │
│ │ Frontend (Vue) │ │ │ │ │ jnlp-agent pod1│ │
├──────► ├────► │ │ └────────────────┘ │
┌──────────┐ │ │ │ │ ├───► │
│ │ │ │ Backend (Go) ◄────┤ Jenkins │ │ ┌────────────────┐ │
Registry ├─────┤ │ │ │ │ │ │ jnlp-agent pod2│ │
│ │ │ │ │ │ │ │ └────────────────┘ │
└──────────┘ │ └──────────┬────────────┘ │ │ │ .... │
│ │ │ │ │ ┌────────────────┐ │
┌───────────┐ │ ┌──────────┴────────────┐ ├──────────┤ │ │ jnlp-agent podn│ │
│ │ │ │ │ │k8s/docker│ │ └────────────────┘ │
Kubernetes│ │ │ MySQL │ │ or │ │ │
│ ├────┘ │ │ │ warfile │ │ agent on kubernetes
└───────────┘ └───────────────────────┘ └──────────┘ └───────────────────────┘

如何本地运行

前置条件

  • go 1.15+

  • node v12.22.1

  • yarn v1.22.5

  • mysql 5.7

创建数据库

> create database atomci character set utf8mb4;

修改配置

# conf/app.conf
[DB]
url = root:root@tcp(127.0.0.1:3306)/atomci?charset=utf8mb4

[notification]

dingEnable = 1 # 启用钉钉通知;0:不启用,1:启用
ding = 钉钉机器人

mailEnable = 1 # 启用邮件通知;0:不启用,1:启用
smtpHost = SMTP服务器
smtpPort = 465
smtpAccount = 邮件账号
smtpPassword = 邮件密码

注: 对于[ldap],[jwt][atomci]可以参照附录-『配置说明』进行修改

启动后端

# linux/mac环境
$ make run

# windowns环境,或是没有make命令
$ go build -o atomci cmd/atomci/main.go; ./atomci

启动前端

$ cd web
# 安装依赖
$ yarn install #仅首次运行时需要执行
# 运行
$ yarn run dev

访问

# 默认用户名/密码 admin/123456
http://your-ip:8081

一键部署最新版本

  • 准备一台可以正常运行的linux服务器(支持MacOS)

  • 安装Docker 和 Docker Compose

如何构建镜像

前端

$ cd web
$ pwd
# ./atomci/web/
$ cd web ; docker build .

后端

$ pwd
# ./atomci
$ docker build .

附录

配置说明

配置项

默认值

说明

default::appname

atomci

应用名

default::httpport

8080

应用侦听端口

default::runmode

dev

运行模式dev|prod

default::copyrequestbody

true

是否允许在 HTTP 请求时,返回原始请求体数据字节

日志配置



log::logfile

log/atomci.log

日志文件

log::level

7

日志级别

log::separate

["error"]

分隔error独立一个文件, 默认是atomci.error.log

DB配置信息



DB::url

root:root@tcp(127.0.0.1:3306)/atomci?charset=utf8mb4

数据库的链接信息

DB::debug

false

是否开启debug

DB::rowsLimit

5000


DB::maxIdelConns

100


DB::maxOpenConns

200


LDAP 配置信息



ldap::host

ldap.xxx.com


ldap::port

389


ldap::bindDN

[email protected]


ldap::bindPassword

Xxx..,


ldap::userFilter

(samaccountname=%s)


ldap::baseDN

OU=Xxx,DC=xx,DC=com


JWT 配置



jwt::secret

changemeforsecurity

 jwt的加密使用的字段,建议修改




atomci::url

http://localhost:8080

六、源码地址

访问一飞开源:https://code.exmay.com/