helm tiller安装

helm init

helm init –tiller-image=daocloud.io/liukuan73/tiller-lk:v2.9.1 –tiller-namespace=kube-system

helm init –upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.5.1 –stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

helm init –tiller-image=harbor.hub.cn/bigdata-dev/tiller:v2.10.0 –tiller-namespace=kube-system –stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

1
2
3
helm init  在缺省配置下, Helm 会利用 "gcr.io/kubernetes-helm/tiller" 镜像在Kubernetes集群上安装配置 Tiller;
并且利用 "https://kubernetes-charts.storage.googleapis.com" 作为缺省的 stable repository 的地址。
由于在国内可能无法访问 "gcr.io", "storage.googleapis.com" 等域名,阿里云容器服务为此提供了镜像站点。

删除helm服务

helm reset

helm reset -f //强制删除k8s集群上的pod

repo 查询、服务、添加

helm repo list

helm serve –address 0.0.0.0:8879 –repo-path /dcos/appstore/local-repo

1
备注:1. helm serve 不指定任何参数的话会在默认的repo目录(/root/.helm/repository/local )启动服务,根据该目录下的软件包(tgz)信息在该目录下创建index.html文件。2. 可以通过指定--repo-path参数实现在自定义的目录下启动服务,并在那个目录下创建index.html文件。

helm repo add local-repo http://10.128.2.2:8879

helm repo add helm-remote http://10.128.22.33:8081/artifactory/helm-remote –username –password

helm repo add harbor –cert-file=/root/kye/harbor.crt –key-file=/root/kye/harbor.key –ca-file=/etc/docker/certs.d/harbor.cn/ca.crt –username=*** –password=*** https://harbor.cn/chartrepo/helm

helm repo add –username=*** –password=***** cmdb https://harbor.hub.cn/chartrepo/cmdb

更新index.yaml文件

helm repo index –url=http://10.142.21.21:8879 .

helm repo update

1
2
3
4
5
通过helm repo index 命令将chart的metadata记录更新在index.yaml文件中:
cd /dcos/appstore/local-repo
helm repo index --url=http://10.142.21.21:8879 .    
helm repo update
备注: 这句话的作用是:Read the current directory and generate an index file based on the charts found.

向repo中增加软件包(将chart文件夹移动到repo目录,并将chart打包)

helm package jenkins –save=false

helm package k8sapi –version 1.0.3

helm package middlewares –version=1.5.0 -u middlewares/Chart.yaml

1
2
3
4
备注:
1. helm package的作用是在当前目录下将软件打包为tgz,假如这个软件包中有requirement.yaml,则打包时还需要加上--dependency-update,用来update dependencies from "requirements.yaml" to dir "charts/" before packaging
2. --save=false的作用是不将tgz文件再拷贝一份到默认的local chart repo文件夹(/root/.helm/repository/local/)下,否则默认会将tgz拷贝一份到那,并检查那个目录下的index.html是否存在,不存在会报错。或者在3.2中最后把没用到的local repo删掉,就不用加--save=false了。
3. -u 验证Chart.yaml文件

验证/搜索

helm search jenkins

安装Chart

helm install local-repo/jenkins //指定local-repo:

helm install stable/mariadb //指定chart:

helm install ./nginx-1.2.3.tgz //指定打包的chart:

helm install ./nginx //指定打包目录:

helm install https://example.com/charts/nginx-1.2.3.tgz //指定chart包URL:

helm install -f myvalues.yaml ./redis //如果要覆盖chart中的默认值,通过指定配置文件方式

helm install stable/mysql –name mysqlyo //指定部署name fullname

创建charts

helm create mycharts

查询chart部署

helm get my-release

查看状态

helm status my-release

查看全部的release

helm list -a

更新版本

helm upgrade my-release -f mysql/values.yaml –set resources.requests.memory=1024Mi my-release

helm upgrade unsung-sparrow local/k8sapi –version 1.0.0

查看本地Chart生成yaml文件

helm template .

版本回滚

helm rollback mysql 1 //1为版本号,可以添加 –debug打印调试信息

helm rollback –debug mysql 1

1
2
2. mac-temp:test test$ helm list4. NAME      	REVISION	UPDATED                 	STATUS  	CHART           	NAMESPACE
6. inky-eagle	1       	Thu Sep  7 20:45:34 2017	DEPLOYED	prometheus-4.5.0	default  8. test      	5       	Tue Sep 12 18:43:19 2017	DEPLOYED	test-0.1.0      	default  10.  12. mac-temp:test test$ helm history test14. REVISION	UPDATED                 	STATUS    	CHART     	DESCRIPTION      16. 1       	Thu Aug 24 19:50:32 2017	SUPERSEDED	test-0.1.0	Deletion complete18. 2       	Tue Sep 12 18:31:11 2017	SUPERSEDED	test-0.1.0	Upgrade complete20. 3       	Tue Sep 12 18:37:31 2017	SUPERSEDED	test-0.1.0	Upgrade complete22. 4       	Tue Sep 12 18:40:25 2017	SUPERSEDED	test-0.1.0	Rollback to 2    24. 5       	Tue Sep 12 18:43:19 2017	SUPERSEDED	test-0.1.0	Rollback to 2    26. 6       	Tue Sep 12 18:43:25 2017	DEPLOYED  	test-0.1.0	Rollback to 2    28.  30. mac-temp:test test$ helm rollback test 232. Rollback was a success! Happy Helming!

查看release的版本信息

helm hist my-release

删除release

helm delete my-release //可回滚

helm ls -a myrelease //确认是否删除

helm delete –purge my-release //彻底删除 不可回滚

使用第三方chat库

helm repo add fabric8 https://fabric8.io/helm //添加fabric8库

helm search fabric8 //搜索fabric8提供的工具

使用 upgrade ,会自动判读如果没安装,会先安装(建议使用此方法)

helm upgrade –install mycharts .

helm upgrade –install –set name=mycharts –tiller-namespace=default mycharts ./mycharts/

下载charts到本地

helm search peometheus

helm fetch stable/prometheus

helm fetch stable/mysql –version 0.2.8 –untar

利用helm lint命令检查下载的chart是否存在问题

helm lint mysql

上传 Helm Charts

https://aeric.io/post/harbor-manage-helm-charts/

插件Plugin

helm plugin install https://github.com/chartmuseum/helm-push

push操作

helm push –ca-file=ca.crt –key-file=server.key –cert-file=server.crt –username=admin –password=passw0rd chart_repo/hello-helm-0.1.0.tgz myrepo

helm push k9sapi harbor –version 0.0.1

helm chart顺序启动或依赖启动

参考文章

1
2
3
4
5
关键点就是:
根据 requirements.lock文件重新构建charts/目录。
构建用于重构chart对 requirements.lock文件中指定的状态的依赖关系。
如果没有找到 requirements.lock文件,helm dependency build将反映helm dependency update命令的行为。这意味着它将更新磁盘上的依赖来反映requirements.yaml。并生成一个锁文件。
helm dependency build [flags] CHART

各种名词变量解析

1
2
3
4
5
6
7
1. 模板格式 : 模版文件deployment.yaml
2. Release.Name – 发行版名称
3. fullname :Release.Name+Chart.Name – 避免名字冲突
4. svc.yaml : 服务描述文件,声明如何访问服务
5. secrets.yaml : 存储密钥
6. Label : 通过release和app标签可以查找到 所有相关的资源
7. https://blog.csdn.net/kozazyh/article/details/79537996