k8s之Helm
官方文档: https://helm.sh/zh/docs/intro/using_helm/
Helm 帮助您管理 Kubernetes 应用—— Helm Chart,Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式。
复杂性管理 ——即使是最复杂的应用,Helm Chart 依然可以描述, 提供使用单点授权的可重复安装应用程序。
易于升级 ——随时随地升级和自定义的钩子消除您升级的痛苦。
分发简单 —— Helm Chart 很容易在公共或私有化服务器上发版,分发和部署站点。
回滚 —— 使用 helm rollback 可以轻松回滚到之前的发布版本。
概念:
Chart:
代表Helm包,它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等价物。
Repository(仓库)
是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。
Release
运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。
安装:
choco.exe install kubernetes-helm
命令:
# 安装chart
helm install release名称 chart名称
# 本地-压缩包
helm install release名称 foo-0.1.1.tgz
# 本地-解压后的chart目录
helm install foo path/to/foo
# 远程-指定URL helm install foo https://example.com/charts/foo-1.2.3.tgz
# 卸载Release
helm uninstall release名称
--keep-history: 保留删除记录
# 查看所有已部署的Release
helm list
--uninstalled: 只会展示使用--keep-history删除的release
--all: 展示保留的所有release记录, 包括已失效或删除的条目
# 查看release的状态 helm status release名称
# 查看chart中可配置选项 helm show values hellok8s/hello-helm
# 获取Release中的配置项
helm get values release名称 # 添加新的仓库 helm repo add dev https://example.com/dev-charts # 创建模版 helm create hello-helm
# 升级
helm upgrade release名称 Chart名称
-f: 指定values.yaml文件 // 可以指定多个
# 回滚
helm rollback release名称 1(版本号)
上面这条命令将我们的happy-panda
回滚到了它最初的版本。release 版本其实是一个增量修订(revision)。
每当发生了一次安装、升级或回滚操作,revision 的值就会加1。第一次 revision 的值永远是1。
我们可以使用helm history [RELEASE]
命令来查看一个特定 release 的修订版本号。
Helm按照以下顺序安装资源:
- Namespace
- NetworkPolicy
- ResourceQuota
- LimitRange
- PodSecurityPolicy
- PodDisruptionBudget
- ServiceAccount
- Secret
- SecretList
- ConfigMap
- StorageClass
- PersistentVolume
- PersistentVolumeClaim
- CustomResourceDefinition
- ClusterRole
- ClusterRoleList
- ClusterRoleBinding
- ClusterRoleBindingList
- Role
- RoleList
- RoleBinding
- RoleBindingList
- Service
- DaemonSet
- Pod
- ReplicationController
- ReplicaSet
- Deployment
- HorizontalPodAutoscaler
- StatefulSet
- Job
- CronJob
- Ingress
- APIService
Helm 客户端不会等到所有资源都运行才退出。许多 charts 需要大小超过 600M 的 Docker 镜像,可能需要很长时间才能安装到集群中。
相关文档:
- 将char上传到Artifact Hub : http://m.tnblog.net/hb/article/details/7945