应用导入导出

开发模板和部署模板的区别

开发模板

  • 源码包上传模板市场或开发应用在 IDE 里上传到模板市场形成
  • 仅包含源码,可在我的开发下新建应用时选择
  • 开发模板支持通过模板市场导出,导出的是应用源码包,导出的源码包可用于应用 IDE 直接通过本地导入

部署模板(应用模板)

  • 应用发布到市场或从其他环境直接导入后形成的
  • 应用模板包含应用部署包,可通过应用服务管理直接添加到租户访问运行
  • 应用模板默认包含应用自身源码包,租户添加后可根据需要进行定制发布
  • 应用模板发布时可勾选不包含源码,不包含源码的应用模板仅可运行,不支持定制
  • 应用模板发布新版本,租户应用(未定制)可通用重启进行版本自动升级
  • 应用模板发布新版本,租户应用(已定制)可通用租户管理员打开 IDE,高级/立即升级后发布更新
    • 定制及升级原理
      • 定制应用本身资源会记录引用模板
      • 定制修改内容放到定制包中
      • 定制应用资源加载先加载引用模板资源,再用定制包内容覆盖
      • 所以定制内容优先级高,升级不会被清理(注意升级前定制内容需要提交 git)
  • 应用模板支持通过应用市场导出
    • 导出应用模板,迁移到其他环境,租户添加运行
    • 导出应用安装包,在 runtime 环境安装运行
    • 发布到应用仓库及远程 K8S

基于源码的导入导出

通过 IDE 导出

导出的是自身当前应用的源码,可以携带开发环境数据,导出的数据存储在 service/main/init 目录下

通过 IDE 导入

可选择模板市场的模板导入,也可以使用本机源码包导入

导入处理规则

  • 覆盖模式导入:默认导入模式,会清空现有文件,再导入文件
  • 追加模式导入:添加 model/.appendMode 文件,表示以追加的方式导入代码,不清空现有文件,直接导入文件
    • 将导入源码包中同名文件进行覆盖替换
    • 不会进行原有文件的清理
    • 即导入源码和本身源码进行合并,同名替换
  • zip 文件中的目录必须从 UI2、service 开始

通过模板市场导出

导出的是当前模板的源码包

通过模板市场导入

使用本地源码包上传到模板市场

基于发布后的导入导出

  • 发布应用导入导出需要通过应用市场作为中转
  • 租户自身发布的运行应用不能直接导出

通过应用市场导出

导出应用模板包

导出的是当前应用模板最新版本的,这个用来导入到其他环境应用市场的(本身应用模板已存在自身环境)

导出应用安装包

  • 导出的是用于 runtime 安装的 helm 安装包
  • 可选择版本导出
  • 可设定是否精简版
    • 精简版: 仅包含应用本身镜像
    • 非精简版: 包含应用依赖镜像

导出后安装具体参照 runtime 环境安装手册

注:精简版只保留用户自身资源镜像 app-deploy ,其他系统调度、运行的镜像都不包含。当平台发生基础版本变动时,才需要全额导出系统镜像,系统镜像常规包含有 app-init、gateway、tomcat、java-runtime ...

发布到应用仓库

Alt text

  • docker 仓库 helm 仓库在统一通用配置菜单下的控制台 UI 上进行配置。

Alt text

Alt text

Alt text

字段 字段说明 是否必填/类型 备注
dockerImagePrefix docker镜像前缀 否、String 头字符和尾字符都不能有 /
例如:hello1/world
registryUser docker仓库用户名 是、String
registryPasswd docker仓库密码 是、String
registryHost docker仓库主机地址 是、String host地址,例:
hub.newdao.local或
hub.newdao.local:8082
registryIsHttp docker仓库地址是否是http 是、Boolean
helmmuseumUrl helm仓库URL 是、String 尾不能加 /
例:http://192.168.0.114:8083
带用户名密码 -u admin:admin http://192.168.0.114:8083
  • helm 仓库安装教程参考
# 以docker方式安装
docker run -d -it \
  -p 8083:8080 \
  -e DEBUG=1 \
  -e STORAGE=local \
  -e STORAGE_LOCAL_ROOTDIR=/charts \
  -v $(pwd)/charts:/charts \
  --name my-chartmuseum \
  ghcr.io/helm/char

# 进入容器对 charts/ 目录给超级权限
chmod -R 777 charts/
  • 以 helm 仓库为基础安装一个应用
# 添加helm仓库
helm repo add my_chartmuseum http://192.168.0.114:8083
helm repo list
# 安装导入helm仓库的entry应用
helm install entry  my_chartmuseum/entry-system --version 1.1.8 --set persistentVolumeClaim=hello-world-pvc  -n newdao-tenant-test
# 列出所有安装的helm应用
helm list
# 卸载已安装的helm应用
helm uninstall entry -n newdao-tenant-test

部署到运程 k8s

Alt text

  • docker 仓库、运程 k8s 在统一通用配置菜单下的控制台 UI 上进行配置。

Alt text

Alt text

Alt text

字段 字段说明 是否必填/类型 备注
dockerImagePrefix docker镜像前嘴 否、String 头字符和尾字符都不能有 /
例如:hello1/world
registryUser docker仓库用户名 是、String
registryPasswd docker仓库密码 是、String
registryHost docker仓库主机地址 是、String 单纯的host地址,例:
hub.newdao.local或
hub.newdao.local:8082
registryIsHttp docker仓库地址是否是http 是、Boolean
k8sNamespace k8s的命名空间 是、String
k8sPvc k8s中要指定的pvc 否、String 如果pvc为空,那storage-nas-volume会
适配emptyDir挂载
kubeApiserver k8s apiService的地址 是、String https://apiserver.cluster.local:6443
kubeCa k8s apiService的证书 是、String 在master节点的 /etc/kubernetes/pki/apiserver.crt 文件中
kubeToken serviceAccount里面的token 是、String 具有相应权限的serviceAccount的token值,
serviceAccount创建示例如下方
valuesYaml values.yaml 否、String 该优先级是最低

kubeToken 制作过程

1.创建 serviceAccount

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: devops-helm
  namespace: apps
  labels:
    app: devops-helm
secrets:
  - name: devops-helm-token
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: devops-helm
  namespace: apps
  labels:
    app: devops-helm
subjects:
  - kind: ServiceAccount
    name: devops-helm
    namespace: apps
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: devops-helm
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: devops-helm
  namespace: apps
  labels:
    app: devops-helm
rules:
  - verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
    apiGroups:
      - ''
      - core
      - apps
      - batch
      - extensions
    resources:
      - namespaces
      - pods
      - deployments
      - configmaps
      - secrets
      - jobs
      - services
      - replicasets
      - statefulsets
      - cronjobs
      - daemonsets
---
apiVersion: v1
kind: Secret
metadata:
  name: devops-helm-token
  namespace: apps
  labels:
    app: devops-helm
  annotations:
    kubernetes.io/service-account.name: devops-helm
type: kubernetes.io/service-account-token

2.找到对应的 serviceAccount 并拷贝出相应的 kubeToken

Alt text

Alt text

通过应用市场导入

仅用于从其他环境导出的应用模板包进行导入

results matching ""

    No results matching ""