K8S集群中使用Helm管理應用分發
阿新 • • 發佈:2018-07-04
信息 -name -- sha manifest blog man 許可 依賴
本文介紹在k8s上部署和使用helm。Helm是Kubernetes的一個包管理工具,用來簡化Kubernetes應用的部署和管理。可以把Helm比作CentOS的yum工具。 通過使用使用Helm可以管理Kubernetes manifest files、管理Helm安裝包charts、基於chart的Kubernetes應用分發。
一、Helm的基本概念
Chart: 是helm的應用打包格式。Chart由一系列文件組成,這些文件類似rpm包
Chart目錄結構:
1、chart.yaml
Yaml文件,用來描述chart的摘要信息2、readme.md
Markdown格式的readme文件,此文件為可選3、LICENSE
文本文件,描述chart的許可信息,此文件為可選4、requirements.yaml
Yaml文件,用來描述chart的的依賴關系,在安裝過程中,依賴的chart也會被一起安裝5、value.yaml
Yaml文件,chart支持在安裝的時候做對配置參數做定制化配置,value.yaml文件為配置參數的默認值6、templates目錄
各類k8s資源的配置模板目錄
二、安裝Helm客戶端
# cd /usr/local/src/ # # wget https://storage.googleapis.com/kubernetes-helm/helm-v2.8.2-linux-amd64.tar.gz # tar -zxvpf helm-v2.8.2-linux-amd64.tar.gz # mv linux-amd64/helm /usr/local/sbin/helm # helm version Client: &version.Version{SemVer:"v2.8.2", GitCommit:"a80231648a1473929271764b920a8e346f6de844", GitTreeState:"clean"} rror: cannot connect to Tiller
三、安裝Helm server端
# helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.8.2 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts # helm version Client: &version.Version{SemVer:"v2.8.2", GitCommit:"a80231648a1473929271764b920a8e346f6de844", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.8.2", GitCommit:"a80231648a1473929271764b920a8e346f6de844", GitTreeState:"clean"} # kubectl get pod -n kube-system -o wide # kubectl get deployment tiller-deploy -n kube-system -o wide
四、使用Helm部署測試應用
# helm repo update
# helm repo list
# helm install stable/nginx-ingress
出現Error: no available release name found提示是因為未配置rbac
# kubectl create serviceaccount --namespace kube-system tiller
# kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
# kubectl patch deploy --namespace kube-system tiller-deploy -p ‘{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}‘
# helm install stable/nginx-ingress
# kubectl get pod
# kubectl get deployment
# kubectl get svc
五、刪除已部署的應用
# helm list
# helm delete invisible-greyhound
# kubectl get pod
# kubectl get deployment
# kubectl get svc
K8S集群中使用Helm管理應用分發