1、概述
helm使得在k8s集群里面部署应用变得更简单,就像在linux系统里面使用yum安装软件一样,helm主要是利用的chart,首先看一下chart的结构:
# tree zipkin zipkin ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── ingress.yaml │ ├── NOTES.txt │ └── service.yaml └── values.yaml
charts: 是依赖的charts
Chart.yaml:是chart的版本和配置信息
templates:配置模版目录
deployment.yaml: k8s的deployment project
ingress.yaml: ingress代理
service.yaml:kubernetes service 定义文件
_helpers.tpl:用于修改kubernetes object
NOTES.txt: helm 提示信息
values.yaml: 配置参数
如果采用网关做代理,可以去掉ingress.yaml。直接使用ambassador和kong来实现。
# tree zipkin zipkin ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── NOTES.txt │ └── service.yaml └── values.yaml
# cat Chart.yaml apiVersion: v1 appVersion: "1.0" description: A Helm chart for Kubernetes name: zipkin version: 0.1.0
当我们定义完chart后需要有个地方存储,就像docker的imag,存储到registry。
需要安装helm-push plugin,默认是没有安装的。
helm plugin install https://github.com/chartmuseum/helm-push
首先要部署一个这样的仓库去存储chart,就是本文要介绍的chartmuseum。
2、部署
就是一个二进制的可执行文件,linux系统安装:
curl -LO https://s3.amazonaws.com/chartmuseum/release/latest/bin/linux/amd64/chartmuseum
参考github:https://github.com/helm/chartmuseum
启动:
nohub chartmuseum --debug --port=8080 --storage=local --storage-local-rootdir=/data/chartmuseum --basic-auth-user=hu --basic-auth-pass=hqhelm --cache=redis --cache-redis-addr=127.0.0.1:6379 --cache-redis-db=0 >2&1 &
使用本地存储,缓存到redis里面,所以需要提前准备好一个redis服务,并添加了用户密码认证。
3、使用
helm repo add chartmuseum http://127.0.0.1:8080 --username hu --password hqhelm --tiller-namespace tiller-world
helm plugin install https://github.com/chartmuseum/helm-push
helm create demo 修改完成以后,直接上传 helm push demo chartmuseum
helm install -n demo chartmuseum/demo --tiller-namespace tiller-world --namespace default