KubeSphere 集成了 OpenPitrix(一个跨云管理应用程序的开源平台)来构建应用商店,管理应用程序的整个生命周期。这里提的应用即指Helm Chart(K8S资源的编排、打包、部署等)。
注:
关于Kubesphere及K8S的搭建可参见我之前的博客:
Kubesphere All-in-one模式安装
方式1:未安装KS前进行设置
在安装KS前,可通过编辑config-sample.yaml文件,设置如下:
openpitrix:
store:
enabled: true # 将“false”更改为“true”。
然后通过如下命令安装KS:
./kk create cluster -f config-sample.yaml
方式2:已安装过KS通过管理界面进行设置
若之前已安装过KS,则可通过KS管理界面左侧菜单CRD -> 搜索clusterconfiguration -> 然后编辑其下资源ks-installer
,如下图:
同样设置openpitrix.store.enabled为true:
Kubesphere 应用商店详细开启说明可参见:
https://kubesphere.io/zh/docs/pluggable-components/app-store/
设置完成后可发现在KS管理界面上出现应用商店
菜单,如下图:
也可以在不登录控制台的情况下直接访问 <节点 IP 地址>:30880/apps 进入应用商店。
如 http://192.168.3.120:30880/apps
且KubeSphere 3.2.x 中的应用商店启用后,OpenPitrix 页签不会显示在系统组件页面。
注: 示例中web_app Chart具体脚本定义参见:
https://gitee.com/luoex/ks-devops-demo/tree/master/helm
使用helm3自作一个自定义的Chart,具体制作过程如下:
# 新建Chart模板,对应目录./web-app
helm create web-app
# 修改web-app相关资源定义
# 修改Chart.yaml
# 添加templates/**.yaml
# 修改values.yaml
# Chart详细内容参见:https://gitee.com/luoex/ks-devops-demo/tree/master/helm
# 进入web-app目录下,检查helm Chart相关脚本语法是否正确
# 若出现错误提示,则根据提示修改脚本
helm lint
# 打包Chart为tgz
# {chart.name}-{chart.version}.tgz
# 执行如下命令后生成web-app-0.1.0.tgz
helm package web-app
Chart目录文件说明如下:
chartname/
Chart.yaml # 包含 Chart 基本信息(例如版本和名称)的 YAML 文件。
LICENSE # (可选)包含 Chart 许可证的纯文本文件。
README.md # (可选)应用说明和使用指南。
values.yaml # 该 Chart 的默认配置值。
values.schema.json # (可选)向 values.yaml 文件添加结构的 JSON Schema。
charts/ # 一个目录,包含该 Chart 所依赖的任意 Chart。
crds/ # 定制资源定义。
templates/ # 模板的目录,若提供相应值便可以生成有效的 Kubernetes 配置文件。
templates/NOTES.txt # (可选)包含使用说明的纯文本文件。
进入到具体工作空间 -> 应用管理 -> 应用模版-> 创建
:
按照提示上传之前制作好的web-app-0.1.0.tgz
进入具体应用模板详情页,虽然此时应用模版状态为开发中
,但依旧可以通过点击安装
将此应用部署到指定K8s集群中进行调试,调式过后确定没有问题了,就可以点击提交发布
,待之后审核通过后,即可进行发布。
点击提交发布
后,即出现如下弹出确认页,可根据需要修改应用模板描述信息,最后点击确定即可提交。
点击左上角的平台管理
,在弹出页中选择应用商店管理
:
进入如下应用发布
页面,在待发布
Tab页面即可查看到刚才新提交的web-app应用:
点击该应用进行审核,在弹出窗口中查看应用信息、介绍、配置文件和更新日志,最后可点击通过
来批准,或者点击拒绝
来拒绝提交的应用。
对于之前那已经审核通过并且同意提交后的应用模板,即可在回到工作空间 -> 应用管理 -> 应用模版
界面,将应用模板最终发布到应用商店,之后所有企业空间中的用户均可以从应用商店中使用此应用模板部署应用,而未发布到应用商店的应用模板仅供创建此应用模板的空间独自使用。
注:
发布到应用商店的应用模板
可被公开使用
,即所有的工作空间均可使用应用商店中的应用模板部署应用,
而未发布到应用商店的应用模板
仅可被创建此应用模板的工作空间独自使用
,其他工作空间看不到。
点击发布到商店
后,应用模板状态变为已上架
,之后即可在应用商店
中查看到此应用模板:
进入应用商店
中即可查看到新上架的应用,新应用默认在未分类
下:
回到之前的平台管理 -> 应用商店管理 -> 应用分类
页面,在此可以创建新的分类:
如上新建分类luo-app
后,即可将之前新发布的web-app应用调整到此luo-app
分类下:
如下新发布的应用web-app
已被调整到luo-app
分类下:
可直接从应用商店
中选择对应的应用模板(已上架的应用模板),然后点击进入安装:
进入具体工作空间 -> 项目 -> 应用负载 -> 应用 -> 基于模版的应用 -> 创建
进行部署:
注:
从平台管理 -> 集群管理 -> 应用负载
进入无法看到应用
菜单。
点击创建后,以可以分别从应用商店中的应用模板
、企业空间内自定义的应用模板中
进行选择:
接下来以从应用模板
中选择安装为例(其他选择方式到最后的安装方式都是一样的故不再举例):
进入后点击安装
按钮后即进入如下安装页面:
点击下一步
配置应用设置(即可覆盖应之前Helm Chart中values.yaml中的默认值)
:
应用安装成功后如下图:
之后亦可进入应用的相应资源页面查看对应的资源(如工作负载、服务、容器组):
通过http://192.168.3.120:31900/hello测试服务是否可正常访问:
参考:
https://kubesphere.io/zh/docs/pluggable-components/app-store/
https://kubesphere.io/zh/docs/application-store/app-lifecycle-management/
https://kubesphere.io/zh/docs/application-store/app-developer-guide/helm-developer-guide/
https://kubesphere.io/zh/docs/application-store/app-developer-guide/helm-specification/
https://helm.sh/docs/