helm原理及实践

为什么用Helm

它使Kubernetes应用程序的配置、部署和维护变得更加简单、可控和可重复。

优势 描述
模板化配置 Helm 将应用程序的配置参数化,并使用模板引擎将这些参数嵌入到配置文件中。这使得配置更加灵活和可重用。
简化部署 Helm Charts(Helm包的描述文件)将应用程序及其所有依赖关系打包到一个单独的包中,从而简化了应用程序的部署和升级过程。
版本控制 Helm 支持版本控制,在不同环境中轻松部署不同版本的应用程序。这对于开发、测试和生产环境之间的一致性非常重要。
集成便捷 Helm 可与Kubernetes中的其他工具和流程集成,例如持续集成/持续部署(CI/CD)流水线。
可扩展性 Helm可以 创建自定义 Charts 和插件,以满足特定的部署需求。

Helm是什么

简介

Helm是k8s的包管理工具,用于配置和部署复杂的应用程序、微服务和资源。

设计目标

Helm 的设计目标是使Kubernetes应用程序的配置和部署变得更加简单、可控和可重复,同时提供了一种标准的方法来管理和共享应用程序配置。

架构

Helm 3 architecture

Image from: https://developer.ibm.com/blogs/kubernetes-helm-3/

核心概念

核心概念 描述
Chart 一个 Helm 包,包含了用于部署一个应用程序的所有文件、模板和默认配置。Chart 是 Helm 的基本构建块,它可以被分享和重用。
Release 表示一个特定 Chart 的实例,即一个正在运行的应用程序的部署。每个 Release 具有独立的配置和状态,允许同时部署多个相同的 Chart 的不同实例。
Repository 存储 Charts 的仓库,允许用户分享和获取 Charts。Helm 社区维护了官方的 Chart 仓库,同时您也可以创建和维护自己的仓库来分享自定义的 Charts。
Values 用于配置和自定义 Charts 的参数。Values 允许用户将配置值传递给模板,并可以根据不同的环境或需求进行更改,以定制化应用程序的部署。

如何使用

客户端命令使用

# 查看helm帮助命令
$ helm -h
The Kubernetes package manager

Common actions for Helm:

- helm search:    search for charts
- helm pull:      download a chart to your local directory to view
- helm install:   upload the chart to Kubernetes
- helm list:      list releases of charts

...

Usage:
  helm [command]

Available Commands:
  completion  generate autocompletion scripts for the specified shell
  create      create a new chart with the given name
  dependency  manage a chart's dependencies
  env         helm client environment information
  get         download extended information of a named release
  help        Help about any command
  history     fetch release history
  install     install a chart
  lint        examine a chart for possible issues
  list        list releases
  package     package a chart directory into a chart archive
  plugin      install, list, or uninstall Helm plugins
  pull        download a chart from a repository and (optionally) unpack it in local directory
  repo        add, list, remove, update, and index chart repositories
  rollback    roll back a release to a previous revision
  search      search for a keyword in charts
  show        show information of a chart
  status      display the status of the named release
  template    locally render templates
  test        run tests for a release
  uninstall   uninstall a release
  upgrade     upgrade a release
  verify      verify that a chart at the given path has been signed and is valid
  version     print the client version information

Flags:
      --debug                       enable verbose output
  -h, --help                        help for helm
  ...


# 添加helm仓库
helm repo add --username $HELM_REPO_USERNAME --password $HELM_REPO_PASSWORD helm_publish_test $HELM_REPO_ADDR
# 更新本地repo信息
helm repo update
# 推送chart包
curl -F "chart=nginx" -u $HELM_REPO_USERNAME:$HELM_REPO_PASSWORD $HELM_REPO_PUSH_DIR
# 安装chart包
helm install myapp helm_publish_test/<PACKAGE_NAME>
# 创建chart包
helm create mychart
# 搜索chart包
helm search repo nginx
# 列出chart包的所有版本
helm search repo bcs-webhook-server -l --devel # 包含开发包
# 查看release情况,-v 9用于打印调试日志信息(包含具体的API调用情况)
helm list -v 9
# 拉取chart包到本地
helm pull bitnami/nginx
# 查看本地或仓库中chart包的信息
helm show all bitnami/nginx | less
# 查看chart模版渲染后的内容
helm template my-release ./my-chart --values my-values.yaml
# 查看chart release
helm ls
# 获取已安装chart release的信息
helm get all my-nginx|less
# 打包chart,指定版本
helm package mychart --version 3.10.5
# 安装chart包
helm install -f nginx_values.yaml helm_publish_test/nginx

posted @ 2024-08-23 20:49  fireyun  阅读(10)  评论(0编辑  收藏  举报