目录
- 为什么用Helm
- Helm是什么
- 简介
- 设计目标
- 架构
- 核心概念
- 如何使用
- 客户端命令使用
为什么用Helm
它使Kubernetes应用程序的配置、部署和维护变得更加简单、可控和可重复。
优势 | 描述 |
---|---|
模板化配置 | Helm 将应用程序的配置参数化,并使用模板引擎将这些参数嵌入到配置文件中。这使得配置更加灵活和可重用。 |
简化部署 | Helm Charts(Helm包的描述文件)将应用程序及其所有依赖关系打包到一个单独的包中,从而简化了应用程序的部署和升级过程。 |
版本控制 | Helm 支持版本控制,在不同环境中轻松部署不同版本的应用程序。这对于开发、测试和生产环境之间的一致性非常重要。 |
集成便捷 | Helm 可与Kubernetes中的其他工具和流程集成,例如持续集成/持续部署(CI/CD)流水线。 |
可扩展性 | Helm可以 创建自定义 Charts 和插件,以满足特定的部署需求。 |
Helm是什么
简介
Helm是k8s的包管理工具,用于配置和部署复杂的应用程序、微服务和资源。
设计目标
Helm 的设计目标是使Kubernetes应用程序的配置和部署变得更加简单、可控和可重复,同时提供了一种标准的方法来管理和共享应用程序配置。
架构
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 managerCommon 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 shellcreate create a new chart with the given namedependency manage a chart's dependenciesenv helm client environment informationget download extended information of a named releasehelp Help about any commandhistory fetch release historyinstall install a chartlint examine a chart for possible issueslist list releasespackage package a chart directory into a chart archiveplugin install, list, or uninstall Helm pluginspull download a chart from a repository and (optionally) unpack it in local directoryrepo add, list, remove, update, and index chart repositoriesrollback roll back a release to a previous revisionsearch search for a keyword in chartsshow show information of a chartstatus display the status of the named releasetemplate locally render templatestest run tests for a releaseuninstall uninstall a releaseupgrade upgrade a releaseverify verify that a chart at the given path has been signed and is validversion print the client version informationFlags:--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