这是坚持技术写作计划(含翻译)的第76篇,定个小目标999,每周最少2篇。
本文不是用来讲解 helm 干嘛的,他的基础概念一类的。这种的网上一搜一大把。本文主要是讲解如何利用工具插件来提升开发Helm Chart 效率,降低出错概率。
官方最佳实践
不使用工具的情况下,最快上手的看到是官方文档 最佳实践
通过 helm create 应用名(比如 doris-charts)
创建一个骨架
装了 Kubernates 插件的话,也可以从Idea创建
快速跑通
使用类似 Rancher kubesphere 等带UI的系统,快速验证服务可用。
带UI的比一次次手动改yaml舒服多了。
最好是单独起一个命名空间。
for n in $(kubectl get -n default -o=name pvc,configmap,serviceaccount,secret,ingress,service,deployment,statefulset,hpa,job,cronjob)
do
mkdir -p $(dirname $n)
kubectl get -o=yaml $n > $n.yaml
done
把该命名空间的配置文件导出。然后人工复制粘贴到 通过 helm create 生成的骨架模板里。
快速开发
此处以 Idea+Kubernates插件(官方文档)为例
当然你也可以用命令 helm lint PATH [flags]
文档 Helm Lint 验证
这就省了你一趟趟的 helm uninstall && helm install 或者 helm template 试错了。
会把一些values里的数据直接替换到 charts 模板文件里 写的时候比较方便。
也可以把单个模板渲染出来(类似 helm template)
其他还有很多功能,比如查看应用日志,执行Shell命令,转发端口到本地,修改应用的yaml并apply
快速部署
以 Idea+Alibaba Cloud Toolkit 为例
cd /tmp/doris-charts && sudo helm template doris --create-namespace -n doris-system /tmp/doris-charts -f /tmp/doris-charts/values.yaml | sudo kubectl apply -n doris-system -f -
这样每次只需要点击运行按钮就行(之所以用 helm template | kubectl apply 就是省了一趟趟 helm uninstall && helm install)。
如果本身用传统扔Jar/War的方式部署,或者依赖阿里云产品比较重的话,用这个工具还不错。
比如
一键发布(打包,传输到主机上,kill 原进程,启动新进程,并且tail 前N条日志),Shell到远程主机终端(省了Xshell了)
一键构建镜像,启动DockerCompose
发布到阿里云微服务相关产品
但是说实在的,这个插件平时我是禁用的,随用随开,他有这么几个问题
- 往往不支持最新版,每次升级后,大概率需要等一周左右才会发布新版
- 会让电脑变卡,集成了太多功能了,比如 Arthas,比如 PMD静态分析,尤其是PMD,特别卡
- 每次启动 Idea 这个插件都得加载一大会(虽然可以最小化,但是仍然很不爽)
- 会往杭州一个OSS传输一些日志,咱也不知道干嘛,反正关不掉,我直接改本地HOST,变相禁掉了。
另外
还有一个神器 nocalhost ,缺点是不支持最新的 2022.2.x ,可以自行编译。
功能挺多,参考官网 nocalhost.dev/zh-CN/docs/…。
总结
- Helm Charts 作为一个交付产物,比发给别人一堆 yaml 好管理多了(有版本,可以自定义值)。
- Kubernates插件跟NocalHost 插件有不少功能是重合的,但是各自有各自的特点,建议按需使用。
- Alibaba Cloud Toolkit 过于臃肿,但是某些场景下确实也能省不少事,见仁见智吧。
招聘小广告
山东济南的小伙伴欢迎投简历啊 加入我们 , 一起搞事情。
长期招聘,Java程序员,大数据工程师,运维工程师,前端工程师。