K8s-09: Helm
helm
传统部署需要维护大量的 yaml 文件,且 yaml 文件中的参数需要手动修改。而且不方便管理应用的版本。Helms 是 kubernetes 的包管理工具,用于简化 kubernetes 应用的部署和管理。
helm: 一个命令行工具,用于创建和管理 chart。
Chart:用于创建 kubernetes 应用的模板,包含一组相关的资源定义文件。包括 Kubernetes 资源定义文件、默认参数定义文件、依赖定义文件、模板定义文件。chart 是应用部署的自包含逻辑单元。
Release:chart 的一个实例,chart 在 kubernetes 集群中运行的一个实例。release 包含了 chart 的版本、配置信息、状态信息等。
command
add repository: 添加 chart 仓库。
shellhelm repo add stable https://charts.helm.sh/stable
search repository: 搜索 chart 仓库。
shellhelm search repo <chart_name>
install chart: 安装 chart。
shellhelm install <release_name> <chart_name>
list release: 列出 release。
shellhelm list
upgrade release: 升级 release。
shellhelm upgrade <release_name> <chart_name>
rollback release: 回滚 release。
shellhelm rollback <release_name> <revision>
delete release: 删除 release。
shellhelm delete <release_name>
package chart: 打包 chart。
shellhelm package <chart_name>
install chart from package: 从本地安装 chart。
shellhelm install <release_name> <chart_name>.tgz
inspect chart: 查看 chart 的详细信息。
shellhelm inspect chart_name
status release: 查看 release 的状态。
shellhelm status <release_name>
create chart: 创建 chart。
shellhelm create <chart_name>
template chart: 生成 yaml 文件。
shellhelm template <chart_name>
structure
- Chart.yaml: chart 的描述文件,包含 chart 的名称、版本、描述、依赖等信息。
- values.yaml: chart 的默认参数文件,包含 chart 的默认参数。
- templates: chart 的模板文件,包含 kubernetes 资源定义文件、默认参数定义文件、依赖定义文件、模板定义文件。
- 使用 helm 部署好后可以修改 service 的 type 为 LoadBalancer,然后通过
kubectl get svc
查看外部 IP。 - template 中的
\{\{ .Release.Name \}\}
表示 release 的名称。使用\{\{ .Values.xxx \}\}
表示 values.yaml 中的参数。