K8s-09: Helm

helm

  • 传统部署需要维护大量的 yaml 文件,且 yaml 文件中的参数需要手动修改。而且不方便管理应用的版本。Helms 是 kubernetes 的包管理工具,用于简化 kubernetes 应用的部署和管理。

  • helm: 一个命令行工具,用于创建和管理 chart。

  • Chart:用于创建 kubernetes 应用的模板,包含一组相关的资源定义文件。包括 Kubernetes 资源定义文件、默认参数定义文件、依赖定义文件、模板定义文件。chart 是应用部署的自包含逻辑单元。

  • Release:chart 的一个实例,chart 在 kubernetes 集群中运行的一个实例。release 包含了 chart 的版本、配置信息、状态信息等。

    helm

command

  • add repository: 添加 chart 仓库。

    shell
    helm repo add stable https://charts.helm.sh/stable
  • search repository: 搜索 chart 仓库。

    shell
    helm search repo <chart_name>
  • install chart: 安装 chart。

    shell
    helm install <release_name> <chart_name>
  • list release: 列出 release。

    shell
    helm list
  • upgrade release: 升级 release。

    shell
    helm upgrade <release_name> <chart_name>
  • rollback release: 回滚 release。

    shell
    helm rollback <release_name> <revision>
  • delete release: 删除 release。

    shell
    helm delete <release_name>
  • package chart: 打包 chart。

    shell
    helm package <chart_name>
  • install chart from package: 从本地安装 chart。

    shell
    helm install <release_name> <chart_name>.tgz
  • inspect chart: 查看 chart 的详细信息。

    shell
    helm inspect chart_name
  • status release: 查看 release 的状态。

    shell
    helm status <release_name>
  • create chart: 创建 chart。

    shell
    helm create <chart_name>
  • template chart: 生成 yaml 文件。

    shell
    helm 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 中的参数。