Rancher-建立私有应用商店详解

Rancher-建立私有应用商店

私有应用商店要遵循应用商店服务指定的格式才能够正常的在Rancher中显示出来。git

模板文件夹

应用商店将会根据环境中的调度引擎来显示不一样的应用商店模板。github

基于不一样调度引擎的模板

  • Cattle 调度引擎: 界面中的应用模板来自templates文件夹
  • Swarm 调度引擎: 界面中的应用模板来自swarm-templates文件夹
  • Mesos 调度引擎: 界面中的应用模板来自mesos-templates文件夹

基础设施服务模板

Rancher的基础设施服务能够从环境模板中启用, 这些模板来自于infra-templates文件夹。docker

这些服务从应用商店菜单中也能够看到, 你能够看到所有的基础设施服务包括那些和当前的编排调度引擎不兼容的服务. 咱们建议从环境模板中启用基础设施服务,而不是直接从应用商店中启动。ide

目录结构

-- templates (Or any of templates folder)
  |-- cloudflare
  |   |-- 0
  |   |   |-- docker-compose.yml
  |   |   |-- rancher-compose.yml
  |   |-- 1
  |   |   |-- docker-compose.yml
  |   |   |-- rancher-compose.yml
  |   |-- catalogIcon-cloudflare.svg
  |   |-- config.yml
...

 

你须要建立一个templates文件夹做为根目录。templates文件夹将包含全部你想建立的应用的文件夹。咱们建议为应用的文件夹起一个简单明了的名称。svg

在应用模板的文件夹中 (例如 cloudflare), 将包含该应用模板的各个版本所对应的文件夹。第一个版本为0,后续每一个版本加1。好比,第二个版本应该在 1 文件夹中。每增长一个新版本的文件夹,你就可使用这个新版本的应用模版来升级你的应用了。另外,你也可直接更新0文件夹中的内容并从新部署应用。ui

注意: 应用文件夹名称须要为一个单词,文件名中不能包含空格。针对名字比较长的应用请使用- 链接符。在config.yml中的 name你可使用空格。this

在Rancher应用商店中展现出的Rancher Catalog文件

在应用商店模板的文件夹中,如何展现应用商店模板详细内容取决于两个文件。spa

  • 第一个文件为 config.yml,包含了应用模板的详细信息。
name: # 应用商店模板名称
description: |
  # 应用商店模板描述
version: # 应用商店模板对应的版本
category: # 用于模板搜索时的目录
maintainer: # 该模板的维护者
license: # 许可类型
projectURL: # 和模板相关的URL

 

  • 另一个文件为该模板的logo。该文件的前缀必须为 catalogIcon-

对于每个应用模板,将至少有如下三个部分组成: config.yml, catalogIcon-entry.svg, 以及 0 文件夹 - 包含该模板的第一个版本配置。code

Rancher 应用商店模板

docker-compose.yml以及rancher-compose.yml为在Rancher中使用Rancher Compose启动服务必须提供的两个文件. 该文件将被保存在版本文件夹中。 (如: 0, 1, 等等)。orm

docker-compose.yml为一个可使用 docker-compose up来启动的文件。 该服务遵循docker-compose格式。

rancher-compose.yml将包含帮助你自定义应用模板的其余信息。在catalog部分中,为了应用模板能够被正常使用,有一些选项是必填的。

你也能够建立一个可选的 README.md , 能够为模板提供一些较长的描述以及如何使用他们。

rancher-compose.yml

version: '2'
catalog:
  name: # Name of the versioned template of the Catalog Entry
  version: # Version of the versioned template of the Catalog Entry
  description: # Description of the versioned template of the Catalog Entry
  minimum_rancher_version: # The minimum version of Rancher that supports the template, v1.0.1 and 1.0.1 are acceptable inputs
  maximum_rancher_version: # The maximum version of Rancher that supports the template, v1.0.1 and 1.0.1 are acceptable inputs
  upgrade_from: # The previous versions that this template can be upgraded from
  questions: #Used to request user input for configuration options

 

对于 upgrade_from, 有三种值可使用。

  1. 只容许从某一个版本升级: "1.0.0"
  2. 能够从高于或低于某一个版本升级: ">=1.0.0", "<=2.0.0"
  3. 定义一个区间升级: ">1.0.0 <2.0.0 || >3.0.0"

注意: 如同例子中的配置,请确保你配置的版本号或版本范围带上双引号。

rancher-compose.yml中的问题部分

应用商店questions 部分容许用户更改一个服务的一些配置选项。 其答案 将在被服务启动以前被预配置在 docker-compose.yml 中.

每个配置选项都在rancher-compose.ymlquestions 部分配置.

version: '2'
catalog:
  questions:
    - variable: # A single word that is used to pair the question and answer.
      label: # The "question" to be answered.
      description: | # The description of the question to show the user how to answer the question.
      default: # (Optional) A default value that will be pre-populated into the UI
      required: # (Optional) Whether or not an answer is required. By default, it's considered `false`.
      type: # How the questions are formatted and types of response expected

 

类型

type 控制了问题如何在UI中展示以及须要什么样的答案。

合法的格式有:

  • string UI中将显示文本框来获取答案,获取到的答案将被设置为字符串型格式。
  • int UI中将显示文本框来获取答案,获取到的答案将被设置为整型格式。 UI会在服务启动前对输入进行校验。
  • boolean UI中将经过单选按钮获取答案,获取到的答案将被格式化为true 或者 false。 若是用户选择了单选按钮,答案将被格式化为 true
  • password UI中将显示文本框来获取答案,获取到的答案将被设置为字符串型格式。
  • service UI中将展现一个下拉框,全部该环境的服务都会显示出来。
  • enum UI中将展现一个下拉框,options中的配置将会被展现出来。
version: '2'
catalog:
  questions:
    - variable:
      label:
      description: |
      type: enum
      options: # List of options if using type of `enum`
        - Option 1
        - Option 2
  • multiline 多行文本框会被显示在UI中。
version: '2'
catalog:
  questions:
    - variable:
      label:
      description: |
      type: multiline
      default: |
        Each line
        would be shown
        on a separate
        line.
  • certificate 该环境的全部可用证书都会显示出来。
version: '2'
catalog:
  questions:
    - variable:
      label:
      description: |
      type: certificate

基于Yeoman的应用目录生成器

这里有一个基于Yeoman开源项目, 能够被用于建立一个空的应用商店目录。