在沒使用helm以前,向kubernetes
部署應用,咱們要依次部署deployment
,service
,configMap
等,步驟較繁瑣。何況隨着不少項目微服務化,複雜的應用在容器中部署以及管理顯得較爲複雜.node
helm
經過打包的方式,支持發佈的版本管理和控制,很大程度上簡化了Kubernetes
應用的部署和管理linux
Helm
能夠理解爲Kubernetes
的包管理工具,能夠方便地發現、共享和使用爲Kubernetes
構建的應用,它包含幾個基本概念git
能夠理解爲docker的imagegithub
Kubernetes
集羣上運行的 Chart
的一個實例。在同一個集羣上,一個 Chart
能夠安裝不少次。每次安裝都會建立一個新的release
能夠理解爲docker的container實例redis
作爲Kubernetes
的一個包管理工具,Helm具備以下功能:docker
chart
chart
打包成tgz
格式chart
到chart
倉庫或從倉庫中下載 chart
chart
倉庫是: https://hub.helm.shKubernetes
集羣中安裝或卸載chart
Helm
管理安裝的chart
的發佈週期helm v3.2.4
,如需下載更新的版本,能夠至github官方repo選擇# 如無需更換版本,直接執行下載 wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz # 解壓 tar -zxvf helm-v3.2.4-linux-amd64.tar.gz # 進入到解壓後的目錄 cd linux-amd64/ # 賦予權限 chmod a+x /usr/local/bin/helm # 查看版本 helm version
Helm v3
,由於v3
版本和v2
某些命令方面差距蠻大的,不徹底兼容!!因此針對v2
的操做這裏就不贅述了能夠直接使用官方的chart倉庫或者其餘倉庫來安裝一些chart
api
# 添加倉庫 helm repo add choerodon https://openchart.choerodon.com.cn/choerodon/c7n # 安裝 helm install choerodon/redis --version 0.2.5
安裝完成! 有沒有很簡單!!
這一節介紹如下如何自定義一個chart,並應用與平時項目中
. ├── Chart.yaml ├── templates | ├── deployment.yaml | └── service.yaml ├── values.yaml
一個基本的自定義chart的文件目錄結構大概是如上:
chart
的基本metadata, 好比name,tag啥的變量模版語法
template
下的yaml資源清單使用第一步: 準備自定義chart相關文件
# 1. 新建一個文件夾demo存放chart mkdir demo && cd demo && mkdir templates # 2. 新建Chart.yaml cat << EOF > Chart.yaml name: hello-world version: 1.0.0 EOF # 3. 新建./templates/deployment.yaml # 注意image部分使用了變量的模板語法,能夠動態插入 cat << EOF > ./templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: tocgenerator-deploy labels: app: tocgenerator-deploy spec: replicas: 1 selector: matchLabels: app: tocgenerator-server template: metadata: labels: app: tocgenerator-server spec: containers: - name: tocgenerator image: {{ .Values.image.repository }}:{{ .Values.image.tag }} imagePullPolicy: IfNotPresent ports: - containerPort: 80 EOF # 4. 新建./templates/service.yaml cat << EOF > ./templates/service.yaml apiVersion: v1 kind: Service metadata: name: tocgenerator-svc spec: type: NodePort selector: app: tocgenerator-server ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30075 EOF # 5. 新建values.yaml cat << EOF > values.yaml image: repository: lzw5399/tocgenerator tag: '951' EOF
第二步: 使用上面的自定義chart
# 將chart實例化成release # 格式:helm install [RELEASE-NAME] [CHART-PATH] helm install testname . # 查看release helm ls # 安裝成功!!
# 列出已經部署的Release helm ls # 查詢一個特定的Release的狀態 helm status <RELEASE_NAME> # 查看被移除了,但保留了歷史記錄的release helm ls --uninstalled
# 安裝 helm install <RELEASE-NAME> <CHART-PATH> # 命令行指定變量 helm install --set image.tag=233 <RELEASE-NAME> <CHART-PATH>
# 更新操做, flag是可選操做 helm upgrade [FLAG] <RELEASE> <CHART-PATH> # 指定文件更新 helm upgrade -f myvalues.yaml -f override.yaml <RELEASE-NAME> <CHART-PATH> # 命令行指定變量 helm upgrade --set foo=bar --set foo=newbar redis ./redis
# 移除Release helm uninstall <RELEASE_NAME> # 移除Release,但保留歷史記錄 # 能夠經過如下查看:helm ls --uninstalled # 能夠經過如下回滾:helm rollback <RELEASE> [REVISION] helm uninstall <RELEASE_NAME> --keep-history
# 更新操做, flag是可選操做 helm upgrade [FLAG] <RELEASE> <CHART-PATH>