App版本制作教程详解

云应用的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地址。
3 个赞

第一 :grinning_face:

wow