如何在Ubuntu里安裝Helm?
Helm is the best way to find, share, and use software built forKubernetes.
Helm之于Kubernetes好比yum之于RHEL,或者apt-get之于Ubuntu。Helm使用Chart幫助我們管理應用,Chart就好像RPM一樣,里面描述了應用及其依賴關系。
主要概念:
Chart:Helm管理的應用部署包,一個結構相對固定的目錄或者tgz壓縮文件,Chart之間可相互依賴
Release:Chart部署之后的事例,每一次helm install就會生成一個新的release
HELM安裝流程
1. 安裝客戶端工具helm
下載 Helm 2.6.1(注意需要翻墻):
[root@node01 ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.7.0-linux-amd64.tar.gz
我csdn資源也有,
網址:https://download.csdn.net/download/u013289746/10462621
[root@node01 ~]# tar -zxvf helm-v2.7.0-linux-amd64.tgz
[root@node01 ~]# mv linux-amd64/helm /usr/local/bin/helm
[root@node01 ~]# helm version
Client:&version.Version{SemVer:"v2.7.0",GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6",GitTreeState:"clean"}
Error: cannot connect to Tiller
報錯為沒有tiller server,我們接下來安裝tiller;
2. Helm TILLER安裝
Helm Tiller是Helm的server,Tiller有多種安裝方式,比如本地安裝或以pod形式部署到Kubernetes集群中。本文以pod安裝為例,安裝Tiller的最簡單方式是helm init, 該命令會檢查helm本地環境設置是否正確,helm init會連接kubectl默認連接的kubernetes集群(可以通過kubectl config view查看),一旦連接集群成功,tiller會被安裝到kube-system namespace中
[root@node01 ~]# yum install socat #注意必須在授權之前安裝
[root@node01 ~]#helm init --service-account tiller--skip-refresh
注意由于某些原因需要網絡可以訪問gcr.io和kubernetes-charts.storage.googleapis.com,如果無法訪問可以通過helm init –service-accounttiller –tiller-image <your-docker-registry>/tiller:2.7.2 –skip-refresh使用私有鏡像倉庫中的tiller鏡像
也可以使用阿里的服務端tiller,并創建阿里的repo(--upgrade能夠保證已經裝上tiller server端的情況下進行安裝)
[root@node01 ~]# kubectl get pod -n kube-system -l app=helmNAME READY STATUS RESTARTS AGEtiller-deploy-587df449fb-c6tzp 1/1Running09m
3. 權限配置
按照上述方法安裝之后執行helm version,會報權限的錯誤
解決辦法:權限方法1:
創建tiller的和
'{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'權限方法2Kubernetes RBAC配置
因為我們將tiller部署在Kubernetes 1.8上,Kubernetes APIServer開啟了RBAC訪問控制,所以我們需要創建tiller使用的service account: tiller并分配合適的角色給它。詳細內容可以查看helm文檔中的Role-basedAccess Control。這里簡單起見直接分配cluster-admin這個集群內置的ClusterRole給它。
創建rbac-config.yaml文件:
apiVersion: v1kind:ServiceAccountmetadata: name: tillernamespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind:ClusterRoleBindingmetadata: name: tillerroleRef: apiGroup: rbac.authorization.k8s.io kind:ClusterRole name: cluster-adminsubjects:- kind:ServiceAccount name: tillernamespace: kube-systemkubectl create -f rbac-config.yamlserviceaccount "tiller" createdclusterrolebinding "tiller" created
常見錯誤:
1.an error occurred forwarding 41746 -> 44134: error forwarding port44134 to pod a2976f378ae41750ce35ac9b42d2bd0b2cade3c7c7f8b102a5e2ebf7624be5ef,uid : unable to do port forwarding: socat not found.
解決方案:
yum intall socat
2.helm版本的問題
解決方案:
盡量使用較新的版本
具體helm的用法,可以直接輸入helm –help來進行查看;