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/