1.概述mysql
helm是k8s的另一个项目,至关于linux的yum,在yum仓库中,yum不光要解决包之间的依赖关系,还要提供具体的程序包,helm仓库里面只有配置清单文件,而没有镜像,镜像仍是由镜像仓库来提供,好比hub.docker.com、私有仓库.linux
helm提供了一个应用所须要的全部清单文件.好比对于一个nginx,咱们须要一个deployment的清单文件、一个service的清单文件、一个hpa的清单文件,把这三个文件打包到一块儿,就是一个应用程序的程序包,称之为Chart.nginx
Chart是一个helm程序包,其实质只是一个模板,咱们能够对这个模板进行赋值(value),造成咱们自定义的清单文件,也就实现咱们生产个性化的需求,这样的仓库叫Chart仓库,一个https/http服务器.git
Helm把Kubernetes资源打包到一个chart中,而chart被保存到chart仓库,经过chart仓库可用来存储和分享chart.helm工做在k8s集群以外,helm不直接操做apiserver,而是和Tiller交互,Tlller再和apiserver交互,最后由Apiserver把chart使用config赋值,最后部署成为release.helm是tiller的客户端,管理本地的chart仓库,做用:发送chart、实例安装、查询、卸载等.github
helm先去检查chart是否存在,若是存在就把chart下载到helm本机当前用户的家目录下,而后helm把Chart和Config交给tiller,tiller和api server交互,api server把chart部署在k8s集群上,就再也不叫chart了,而叫release;一个chart赋值不一样,彻底能够部署出多个release出来,因此能够把chart看作是一个安装包的模板,若是发现chart更新了,helm会自动滚动更新,还支持一键回滚的操做.redis
访问:https://github.com/helm/helm/releases下载安装包sql
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.2-linux-amd64.tar.gz tar xf helm-v2.12.2-linux-amd64.tar.gz mv linux-amd64/helm /usr/bin/ rbac配置文件样例:https://github.com/helm/helm/blob/master/docs/rbac.md cat tiller-rbac.yaml 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 kubectl apply -f tiller-rbac.yaml cat /usr/lib/systemd/system/docker.service Environment="NO_PROXY=127.0.0.1/8,127.0.0.1/16" kubectl get pods --all-namespaces=true # 下面这两步没用,还得下国内的镜像,直接执行第三步 export NO_PROXY="127.0.0.1/8,127.0.0.1/16" helm init --service-account tiller helm init --upgrade --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.2 \ --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster Happy Helming! helm version Client: &version.Version{SemVer:"v2.12.2",...) Server: &version.Version{SemVer:"v2.12.2",...)
2.使用helmdocker
官方charts列表 https://hub.kubeapps.com/
api
helm默认使用的charts源地址是https://kubernetes-charts.storage.googleapis.com,须要替换为阿里的helm源:bash
helm repo list NAME URL stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts local http://127.0.0.1:8879/charts # helm源已经变成国内的了,下面这两步是移除默认源的,不须要执行 helm repo remove stable helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts helm repo update # 添加incubator源,这个源是开发版的安装包,用起来可能不稳定 helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ #列出charts仓库中全部可用的应用 helm search helm search mysql helm inspect stable/mysql # 用helm安装软件包,-name:指定release名字 helm install --name mysql1 stable/mysql helm list # 查看安装的软件包 helm delete mysql1
helm经常使用命令
release管理: install delete upgrade/rollback list history:查看release历史版本 status:获取release状态信息 chart管理: create:建立一个chart,生成基础chart示例性文件,供咱们修改用 fetch:下载仓库中的一个char到本地 get inspect package verify # helm把安装包下载到当前用户的家目录下 ll /root/.helm/cache/archive/ # 修改chart里面的values.yaml实现定制,values.yaml文件中##是注释,#是可开启的参数 helm install --name mysql1 -f /root/values.yaml stable/mysql metrics想要能被prometheus收集数据须要在metadata中将prometheus.io/scrape:设置为true metadata: annotations: prometheus.io/scrape: 'true' # 部署完应用包后,查看release提示信息 helm status mysql1 helm fetch stable/redis 查看chart官方手册,了解每一个参数的含义https://docs.helm.sh/developing_charts/#charts # 用helm生成基础chart示例性文件,myapp是chart的名字 helm create myapp # 作语法检查 helm lint myapp ==> Linting myapp [INFO] Chart.yaml: icon is recommended 1 chart(s) linted, no failures # 打包 helm package myapp/ Successfully packaged chart and saved it to: /root/myapp-0.1.0.tgz # 启动8879仓库的服务 helm serve # 查看local仓库里面是否有咱们建立的chart包 helm search myapp # 部署咱们自定义的chart helm install --name myapp1 local/myapp # 删除咱们部署的chart helm delete --purge myapp1
参考博客:http://blog.itpub.net/28916011/viewspace-2216650/