Kubernetes在rancher中自定义应用商店

目录

一、应用商店概述

二、自定义应用商店

1、Chart类型

2、Chart目录结构

3、Rancher Chart额外的文件

3.1、查询变量参考

4、创建定制chart的实例

三、定制应用商店示例


一、应用商店概述

在Rancher中提供基于helm的应用商店,通过应用商店能够快速和容易的重复部署应用。应用商店的charts来源即可以是helm仓库或者git仓库,其中包含现成的用于部署的应用程序。应用程序捆绑在称为charts的对象中charts是Helm推广的封装格式。可以将它们视为部署模板,对于每个Helm,图表是:描述相关Kubernetes资源集的文件集合。使用单个charts即可以部署简单的应用,例如memcached pod;也可以部署复杂的应用,例如具有HTTP服务器,数据库,缓存等的完整Web应用程序堆栈。

Rancher自身改进了Helm目录和charts。所有原生的Helm charts都可以在Rancher中运行,但为了提升用户体验,Rancher增加了一些功能。在Rancher中提供了由Rancher官方维护的模板仓库、由Kubernetes社区维护的模板仓库和未经测试验证的应用模板仓库这三种内置的应用商店。另外,也支持添加自定义的应用商店。

二、自定义应用商店

自定义的应用商店是一个git仓库,URL需要是一个git clone能够处理的,以及以.git结尾的地址。

1、Chart类型

Rancher支持两种charts类型:

  • Helm Charts:原生的Helm charts包含运行应用的所有内容。当部署一个原生的Helm charts时,需要通过Answers配置键值对形式的参数。Helm chart有Helm Stable和Helm Incubators这两种。
  • Rancher Charts:Rancher charts在原生的helm charts基础上,添加量app-readme.md和questions.yaml这两个文件,以提升用户体验。 Rancher charts的优势:
    • 增强版本追踪:Helm支持版本化的部署,Rancher增加了追踪和版本历史管理,以显示不同版本之间的变化。
    • 简化应用程序启动:Rancher chart增加简化的charts描述和配置表单,使应用商店中的应用程序部署更加容易。Rancher用户不需要阅读Helm整个列表中的变量来理解如何启动应用程序。
    • 应用资源管理:Rancher追踪所创建的所有资源。用户能够跟踪所有的资源。用户能在一个页面上查看被用来支持应用的工作负载对象。

2、Chart目录结构

下表展示了chart的目录结构,在目录中可以看到:charts/%application%/%app version%/。当为应用商店定制charts时,此信息很有用。用Rancher Specific表示的文件专门用于于Rancher chart,但对于chart自定义是可选的。

子目录文件描述
app-readme.mdRancher需要:在Rancher页面中app描述信息。
charts/包含依赖charts的目录
Chart.ymlhelm chart信息文件
questions.ymlRancher需要: 包含在Rancher界面中显示的请求。
README.md可选:在Rancher UI中显示的Helm说明文件。
requirements.yml可选:列出chart依赖关系的YAML文件。
templates/模板目录,当与values.yml结合使用时,会生成Kubernetes YAML。
values.ymlchart的默认配置文件。

3、Rancher Chart额外的文件

在创建自己的定制化应用商店之前,需要对Rancher chart和原生helm chart有一个基本的了解。Rancher chart与helm chart在目录结构上有细微的差别,即Rancher chart比helm chart多两个文件。

  • app-readme.md:此文件提供chart的描述文本。下面两张图显示了Rancher chart(包含app-readme.md文件)和原生的Helm chart 之间的区别。左边为Rancher Chart(带有app-readme.md)右边的为Helm Chart。

  • questions.yml:此文件包含表单的请求信息。这些表单请求用于简化chart的部署,当然,也可以使用键值对来配置部署,但使用questions.yml能够简化这个工作。下面显示了Rancher chart(包含app-readme.md文件)和原生的Helm chart 之间的区别。左边为Rancher Chart(带有app-readme.md)右边的为Helm Chart。2.3.1 查询变量参考

3.1、查询变量参考

此参考包含的变量可以在questions.yml中进行使用。

变量类型是否必需描述
variablestringtrueDefine the variable name specified in the values.yml file, using foo.bar for nested objects.
labelstringtrue定义UI标签
descriptionstringfalse指定变量的描述
typestringfalseDefault to string if not specified (current supported types are string, boolean, int, enum, password, storageclass and hostname).
requiredboolfalseDefine if the variable is required or not (true | false)
defaultstringfalse指定默认值
groupstringfalseGroup questions by input value.
min_lengthintfalseMin character length.
max_lengthintfalseMax character length.
minintfalseMin integer length.
maxintfalseMax integer length.
options[]stringfalseSpecify the options when the variable type is enum, for example: options:
– “ClusterIP”
– “NodePort”
– “LoadBalancer”
valid_charsstringfalseRegular expression for input chars validation.
invalid_charsstringfalseRegular expression for invalid input chars validation.
subquestions[]subquestionfalseAdd an array of subquestions.
show_ifstringfalseShow current variable if conditional variable is true. For example show_if: "serviceType=Nodeport"
show_subquestion_ifstringfalseShow subquestions if is true or equal to one of the options. for example show_subquestion_if: "true"

4、创建定制chart的实例

可以使用Helm Charts或Rancher Charts填充您的自定义商店,建议使用Rancher Charts。

  1. 在github仓库中,构建符合要求的chart目录结构。提示:可以通过拷贝一个来自于Helm Stable或Rancher Library中chart来定制自己的chart。
  2. 推荐:创建一个app-readme.md文件。在Rancher UI中,使用此文件为chart标题创建自定义文本。可以使用此文本告知用户如何使用该chart。示例:
    $ cat ./app-readme.md
    # WordPress ROCKS!
  3. 推荐: 创建一个questions.yml文件。此文件用于定义部署的参数,没有此文件的话,用户必须通过键值对手工指定参数。下面的例子创建了一个表单,提示用户设置持久化容量大小和存储类。
    categories:
        - Blog
        - CMS
        questions:
        - variable: persistence.enabled
        default: "false"
        description: "Enable persistent volume for WordPress"
        type: boolean
        required: true
        label: WordPress Persistent Volume Enabled
        show_subquestion_if: true
        group: "WordPress Settings"
        subquestions:
        - variable: persistence.size
            default: "10Gi"
            description: "WordPress Persistent Volume Size"
            type: string
            label: WordPress Volume Size
        - variable: persistence.storageClass
            default: ""
            description: "If undefined or null, uses the default StorageClass. Default to null"
            type: storageclass
            label: Default StorageClass for WordPress

  4. 检入定制的chart到github仓库

三、定制应用商店示例

在本例中,将以elasticsearch为例,构建自定义的应用商店:

  1. 启动本地helm仓库:通过执行如下的命令,在本地起一个helm仓库。
    $ helm serve --addresss 0.0.0.0:8879
  2. 添加自己的应用商店:在rancher中的全局范围中添加应用商店。
  3. 获取elasticsearch chart:从helm公共库中获取mysql chart。
    $ helm fetch stable/mysql
  4. 部署mysql到helm仓库:将获取到的mysql-0.4.4.tgz拷贝至“~\.helm\repository\local”目录下,重启本地helm仓库。
  5. 进入特定的项目查看应用商店的应用

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡布奇诺-海晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值