Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

flowerfine/appmanager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

46 Commits

Repository files navigation

AppManager

AppManager 为 SREWorks 项目中的 paas/appmanager 模块。

开发文档

开发环境

  • JDK。11
  • 中间件。在 tools/docker/local 目录下执行 docker compose up -d 命令启动数据库
  • 初始化数据库。在 tools/docker/local/db-migration 目录下执行 docker compose up -d 命令初始化数据库

启动代码

  • 新增 application-local.properties 文件,配置本地环境。在 tesla-appmanager-start-standalone 新增。注意在 .gitignore 默认添加了

    • 修改日志文件。修改 tesla-appmanager-start-standalone 模块的 logback-spring-local.xmllogback-spring.xml 日志文件。默认使用 logback-spring.xml,在 idea 中启动会报错,需调整成 logback-spring-local.xml 文件。
    • application-local.properties 中新增配置:logging.config=classpath:logback-spring-local.xml
    • 新增环境变量配置
  • 启动类新增环境变量。

    • ABM_CLUSTER=daily
  • 启动:com.alibaba.tesla.appmanager.start.Application

  • 初始化应用。appmanager 有 2 个初始化操作,在 tools/docker/local/postrun 目录下执行 docker compose up -d

    • 初始化集群。将 appmanager 部署的 kubernetes 作为默认集群更新到 appmanager 中
    • 初始化 definition
    • 部署 flycore。启动 appmanager 后,在 tools/docker/local/init 目录下执行 docker compose up -d 命令部署 flycore。
    • 鉴权问题。在启动 appmanager 时,默认是没有开启鉴权的,初始化脚本都以开启鉴权为前提,因此使用 sreworks 官方镜像执行初始化操作,需要先开启 appmanager 鉴权启动,初始化后视需要关闭鉴权重启 appmanager 即可
  • 查看 swagger:http://localhost:7001/doc.html

SREWorks 介绍

项目结构

  • paas
    • appmanager。核心
    • tesla-authproxy。
    • tesla-gateway
    • sreworks-base。
      • 是 appmanager 部分接口的对接部分(通过 http 对接 appmanager)。
  • plugins。sreworks 将 trait 和 component 插件抽离出来,放到了此目录下,原属于 appmanager
  • saas
    • app。应用管理
      • appdev-server。应用管理 -> 开发
      • appcenter-server。应用管理 -> 应用(我的应用)
      • appmarket-server。应用管理 -> 市场
      • 无插件。应用管理 -> 插件 是直接调用的 appmanager 的接口
    • system
      • 阿里云 kubernetes 集群管理
      • 阿里云 rds 管理
      • 阿里云 redis 管理
      • 阿里云 ecs 管理
    • cluster。多 kubernetes 集群管理
    • team。团队管理
    • upload。文件上传

部署介绍

参考文档:

安装流程:

  • 准备环境
    • kubernetes。需准备 kuernetes,快速体验可采用 minikube、k3s、kubesphere(其实是通过 kubekey 快速部署 kubernetes 和 kubesphere),docker desktop。
      • sreworks 部署时依赖 StorageClass,为了让对 kubernetes 了解不足的用户快速部署 sreworks,sreworks helm charts 添加了 StorageClass,对于 minikube、k3s 等自带 StorageClass 的场景,需修改 helm charts 参数禁止 sreworks 添加 StorageClass,否则会出问题。详情参考
    • helm。sreworks 提供了 helm 的分发,可以不用 helm 官方自己的安装脚本,用 sreworks 的就可以
    • 源码。clone sreworks 指定分支源码。如果 github clone 的比较慢,可以用一些 github 下载代理网站下载。
    • 其他。sreworks 运行需要如下中间件或数据库,sreworks helm charts 内会安装这些以快速部署,可以通过参数控制是否部署,使用外部的 mysql、minio 等
      • mysql
      • redis
      • minio
      • zookeeper
  • 启动。

启动脚本如下:

cd sreworks/chart/sreworks-chart
# 安装SREWorks
# 替换NODE_IP为某个节点的浏览器可访问IP
# 如果是用 helm 卸载重新安装,会有异常
helm install sreworks ./ \
 --create-namespace --namespace sreworks \
 --set global.accessMode="nodePort" \
 --set global.images.tag="v1.5" \
 --set appmanager.home.url="http://43.143.73.169:30767" \
 --set appmanager.server.jwtSecretKey="1234567" \
 --set global.storageClass="local-path" \
 --set saas.onlyBase=true \
 --set localPathProvisioner=false

源码分析

AppManager

业务隔离

阿里云面临复杂的业务场景:

  • 专有云:将 ABM 交付到各个客户现场环境中,依赖统一的阿里专有云 K8s 底座。大部分的客户环境是网络隔离的,不出差到现场的情况下,只能拍照一来一回解决问题。
  • 公共云:交付各个阿里大数据产品到公共云 ACK 集群上(资源集群 or 业务集群),多 Region,为云上客户提供服务。
  • 集团内部:部署各个大数据产品到集团内部 K8S 集群上,多 Region,为集团内部各业务方提供服务;另外还需要将我们自身交付到 OXS(阿里云内核区域)K8s 公共集群中 (权限受限)。
  • 开源社区:交付 SREWorks 到各类用户自建的集群下以及各大厂商公共云。

AppManager 提供了多集群管理功能:

统一管控

AppManager 在中心环境部署一个,作为整体的管控。

  • unit(UnitProvider)。在阿里云中,单元(unit)表示一个网络隔离或用途隔离的环境,单元自称一体,对外无任何依赖。单元间网络隔离。每个单元需要一个 AppManager 实例进行管控。一个单元可包括多个 Cluster。
  • cluster(ClusterProvider)。一个独立 K8S 集群,集群间网络可达。集群直接注册 kubeconfig 到当前单元下的 AppManager 即可使用。
  • namespace(NamespaceProvider)。对应 K8S 的 Namespace 概念,用于一个 Cluster 下的资源及应用的隔离,一个 Namespace 对应了一个信息孤岛。
  • stage(StageProvider)。阶段/环境。一个 Namespace 可包含多个 Stage,每个 Stage 共享了当前 Namespace 下的所有资源。
OAM模型
  • Application
  • Policy
  • Component。AppManager 将 Component 和 Trait 统一以插件形式处理。
  • Trait。AppManager 将 Component 和 Trait 统一以插件形式处理。
  • Workflow
应用构建

在 OAM 模型中,一个 Application 包含:Policy、Component、Trait、Workflow。

其中研发角色只需要关注 Component 即可,而 Component 也是研发产出,需要打包的东西。应用构建即对应用进行打包,即对 Component 打包,产出 Component 信息如 image、helm 等。

  • AppPackageTaskProvider。打包任务
  • ComponentPackageProvider。Component 包
  • AppPackageProvider。应用包
应用部署

todo

参考链接

About

sreworks appmanager module

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /