云应用的App版本设计参考了1panel、docker-compose和kubernetes里面的一些概念。并且进行了简化和抽象,提供了一些用户有好的接口供开发者创建使用。
App的架构
App是云应用的基础组成部份,一个App对应一个K8S中的Deployment。
App是由App模版创建而来的,App模版定义了App的基础信息以及选项参数,用户通过在商店中填入、选择对应App的信息和参数来实施具体部署,部署成功后的实例为App。
App模板
要制作一个新的App模板,请通过可视化工具进行创建:
https://app.rainyun.com/apps/rca/app-template/create
架构图
可以参考各个概念的总体架构图。
版本
App模板只定义了App的基础信息,只是介绍性质,要定义具体的内容,我们需要创建应用版本。
基本信息
- 版本号:软件的版本。
- 镜像:是docker镜像URL,如:nginx:latest
- 最小CPU:部署此应用最低需求的CPU核心算力,将在用户部署的时候进行约束。
- 最小内存:部署此应用最低需求的内存数量,将在用户部署的时候进行约束。
Command &Env 命令与参数
- Command:用于覆盖容器镜像中的默认
ENTRYPOINT
。它定义了容器启动时执行的主要命令。 - Args:用于提供
command
所需的参数。它通常用于传递额外的参数。
可以包含如${ENV_NAME}
这样的格式来引用环境变量。
Scripts 脚本设定
- 安装脚本:在容器运行之前,将通过一个单独的容器来执行的Shell脚本。例如某些Minecraft服务端需要在启动之前拉取服务端文件,可通过此功能实现。
- 安装镜像:要运行安装脚本的基础镜像。例如可以是
debian:bookworm
- 启动脚本:在主容器内运行的、每一次容器启动都会运行的脚本。
- 停止脚本:在主容器内运行的、每一次容器停止前都会运行的脚本。
可以包含如${ENV_NAME}
这样的格式来引用环境变量。
ConfigMap 配置文件
配置文件将在部署后给用户一个友好的GUI来编辑配置。如果你的App需要配置文件,使用此功能将很合适,而且还可以提前提供默认配置。
请注意,配置文件是只读挂载到容器内,因此只适用于程序不会修改的那种配置文件,如果容器程序会修改配置文件,则不适用,这种情况下,请使用持久化卷。
- 文件名:配置文件名,如nginx.conf。
- 容器内路径:要把配置文件挂载至容器内的路径。
- 配置文件内容:内容,建议提供预设内容。
Env 环境变量
容器运行时使用的环境变量列表。
- 键(Key):环境变量的键。
- 值(Value):环境变量的值,可以包含如
${ENV_NAME}
这样的格式,以引用其他环境变量来组合这个环境变量。
VolumeMounts 持久化卷挂载
云应用每一个项目都有一个共享的磁盘,里面存放着项目下各个App的持久化数据,可通过此功能将容器产生的持久化数据进行保存。
- 名称:卷的名称。
- 挂载路径:挂载至容器内的路径。可以包含如
${ENV_NAME}
这样的格式来引用环境变量。 - 子路径:挂载至应用在项目磁盘中的子路径。可以包含如
${ENV_NAME}
这样的格式来引用环境变量。 - 内容类型:可选文件或目录两种类型。
- 预设内容:当内容类型为文件时,可通过
base64
编码将二进制文件传入。
Services 服务配置
定义了容器要对外开放的端口。
- 服务名称:服务命名,以英文作标识。
- 显示名称:可以是中文介绍,用户友好。
- 服务类型:定义服务的默认可见度,分为
内部访问
和外部访问
两种。内部访问:仅供项目内其他应用访问,外部访问:开放至公网允许公网访问。 - 内部端口:容器内端口,支持嵌入环境变量,如
${ENV_NAME}
。 - 外部端口:外部访问的端口,支持嵌入环境变量,如
${ENV_NAME}
。 - 协议:服务要使用的协议,可以是tcp/udp或tcp_udp。
Options 选项
用户友好的选项设置,可以在部署的时候限定各种值、校验。
- 标签:用户界面上显示的名称。
- 环境变量键:对应到环境变量键,应用安装时,会根据用户输入的值,自动注入到对应的环境变量中。
- 类型:用户输入控件的类型。
- 默认值:用户未修改时的默认值。
- 验证规则:用户输入验证的规则。
- 是否必填:用户是否必须填写此选项。
- 是否禁用:启用后,用户将无法修改此参数的值。
- 是否随机生成:启用后,将以"默认值_随机字符串"(如
word_Nkd4uX
)的格式自动生成。
特殊环境变量
有一些特殊的环境变量可以使用。
- ${RCA_SVC_[服务名]_EXT_IP}:如
${RCA_SVC_main_EXT_IP}
,这个会在应用安装的时候被系统自动注入,会替换成对应服务的公网IP地址。