-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Overview
Helm 是 Kubernetes 的一个包管理工具,就类似 Ubuntu上 的 APT,和 CentOs 上的 yum 命令。
具有如下功能:
- 创建新的 chart
- chart 打包成 tgz 格式
- 上传 chart 到 chart 仓库或从仓库中下载 chart
- 在
Kubernetes集群中安装或卸载 chart - 管理用
Helm安装的 chart 的发布周期
Installing Helm
Installing Helm Client
# FROM SCRIPT
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh
chmod 700 get_helm.sh
./get_helm.shInstalling Tiller Server
# 安装 Tiller
helm init
# 覆盖 Tiller image
helm init --upgrade --tiller-image gcr.io/kubernetes-helm/tiller:v2.10.0
# 升级 Tiller
helm init --upgrade
# 确认 Tiller 是否在集群安装好
kubectl get pods --namespace kube-system -l app=helmClusterRoleBinding
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system# 调整 service account
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'Components
client 管理 charts, server 管理发布 release
Helm Client
用户命令行工具,用来创建,拉取,搜索和验证 Charts,初始化 Tiller 服务。
- 本地 chart 开发
- 仓库管理
- 与 Tiller sever 交互
- 发送预安装的 chart
- 查询 release 信息
- 要求升级或卸载已存在的 release
Tiller Server
部署在 Kubernetes 集群内部的 server,与 Helm client、Kubernetes API server 进行交互。
-
监听来自 Helm client 的请求
-
通过 chart 及其配置构建一次发布
-
安装 chart 到
Kubernetes集群,并跟踪随后的发布 -
通过与
Kubernetes交互升级或卸载 chart
Basic concept
Chart
一个 Helm 包,包含了运行 Kubernetes 一个应用实例所需要的镜像、依赖和资源定义等,是描述一组相关 Kubernetes 资源的文件集合。
Chart 的基本结构
.
├── Chart.yaml # 用于描述这个 chart, 包括名字,描述信息以及版本号
├── README.md
├── templates # Kubernetes 模板
│ ├── NOTES.txt # 用于介绍 chart 部署后的信息。例如介绍如何使用该 chart,缺省设置等
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── pvc.yaml
│ ├── secrets.yaml
│ └── svc.yaml
└── values.yaml # 用于存储 templates 目录中模板文件中用到的变量Config
包含了应用发布配置信息
Release
在 Kubernetes 集群上运行的 Chart 及其配置的一个实例。
在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。
Repository
用于发布和存储 Chart 的仓库。