Helm二:安裝


Helm安裝

Helm client安裝

helm項目地址:
https://github.com/helm/helm

可以直接下載helm的二進制包,解壓后,將二進制文件復制到標准命令路徑即可完成安裝

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中。

但是,在國內環境中,我們直接使用helm init會無法拉取到tiller鏡像,需要手動指定鏡像地址,同時如果Kubernetes集群開啟了rbac,還需要指定運行tiller的servicaccount,並為該serviceaccount作合適的授權。

下面是實際安裝時的指令:

helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.0 --service-account=tiller --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

上面的命令指定了安裝時使用的tiller鏡像的地址,同時指定了默認的chart倉庫的地址。

helm init常用配置項如下:

  • --canary-image:安裝金絲雀build
  • --tiller-image:安裝指定image
  • --kube-context:安裝到指定的kubernetes集群
  • --tiller-namespace:安裝到指定的namespace中
  • --upgrade:如果tiller server已經被安裝了,可以使用此選項更新鏡像
  • --service-account:用於指定運行tiller server的serviceaccount,該account需要事先在kubernetes集群中創建,且需要相應的rbac授權

創建serviceaccount並授權的示例:

# cat helm-account.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: helm
  name: tiller
  namespace: kube-system

# cat helm-rbac.yaml

apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: helm-rbac
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin 
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system

我這里是直接為其授予超級管理員權限,如果需要對其進行精細權限控制,可參考helm官方文檔:https://docs.helm.sh/using_helm/#role-based-access-control

安裝完成以后,可以通過如下操作查看tiller server的pod:

root@k8s-m:/home/www/server/kube-yamls/public/helm# kubectl get pods -n kube-system
NAME                                              READY     STATUS    RESTARTS   AGE
tiller-deploy-5d4b89d6c9-srvpr                    1/1       Running   0          4d

看到tiller server正常運行,即安裝成功。

Chart倉庫配置

chart倉庫用來存儲和分享打包的chart,分為公共倉庫和私有倉庫,其中官方倉庫由Kubernetes Charts維護,地址是https://github.com/helm/charts。但是在國內訪問官方倉庫,一個要翻牆,另一個慢。所以在國內環境中,公共倉庫推薦使用阿里雲chart倉庫,地址為https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts。

私有chart倉庫

chart倉庫的組成

在更多的時候,我們需要自己維護一個私有的chart倉庫。而chart倉庫實際上,就是一個可用來存儲index.yaml與打包的chart文件的http server,任何一個能夠提供yaml與tar文件的http server都可以當做chart倉庫。

下面我們簡單說一說chart倉庫的結構:

一個chart倉庫是由chart包與index.yaml文件組成,index.yaml記錄了chart倉庫中全部chart的索引,一個chart倉庫示例如下:

charts/
  |
  |- index.yaml
  |
  |- alpine-0.1.2.tgz
  |
  |- alpine-0.1.2.tgz.prov

其中index.yaml文件中記錄了chart的諸如名稱、url、version等一些metadata信息:

apiVersion: v1
entries:
  alpine:
    - created: 2016-10-06T16:23:20.499814565-06:00
      description: Deploy a basic Alpine Linux pod
      digest: 99c76e403d752c84ead610644d4b1c2f2b453a74b921f422b9dcb8a7c8b559cd
      home: https://k8s.io/helm
      name: alpine
      sources:
      - https://github.com/kubernetes/helm
      urls:
      - https://technosophos.github.io/tscharts/alpine-0.2.0.tgz
      version: 0.2.0
    - created: 2016-10-06T16:23:20.499543808-06:00
      description: Deploy a basic Alpine Linux pod
      digest: 515c58e5f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cd78727
      home: https://k8s.io/helm
      name: alpine
      sources:
      - https://github.com/kubernetes/helm
      urls:
      - https://technosophos.github.io/tscharts/alpine-0.1.0.tgz
      version: 0.1.0
  nginx:
    - created: 2016-10-06T16:23:20.499543808-06:00
      description: Create a basic nginx HTTP server
      digest: aaff4545f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cdffffff
      home: https://k8s.io/helm
      name: nginx
      sources:
      - https://github.com/kubernetes/charts
      urls:
      - https://technosophos.github.io/tscharts/nginx-1.1.0.tgz
      version: 1.1.0
generated: 2016-10-06T16:23:20.499029981-06:00

創建本地倉庫

一個簡單的創建一個本地倉庫的示例:

helm serve --address 0.0.0.0:8879 --repo-path ./charts

chart倉庫基本管理

  1. 列出倉庫中的charts
    helm repo list
    
  2. 打包本地開發的chart
    helm package mychart
    
  3. 上傳chart到chart倉庫
    helm repo add mychart http://1270.0.1:8879/charts
    
  4. 查找chart
    helm search mychart -l
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM