09 Jan 2020
helm是kubernetes的一个包管理工具,类似于yum之于rhel,apt之于debian。
三个主要概念:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
搜索chart
## SEARCH # 在helm hub中搜索包,helm hub包含多个repo的包资源 helm search hub [package-name] # 在本地repo(helm repo add)中搜索包 helm search repo [package-name] # 注意点: # - 不包含package-name时会列出所有可用的包 # - package-name可以是不完整的包名称
下载chart
helm fetch repo-name/[package-name]
安装chart
## INSTALL # Usage: # helm install [NAME] [CHART] [flags] helm install happy-panda stable/mariadb # 如果不想指定release的名称,可以使用如下参数,会自动生成一个release名称 helm install stable/mariadb --generate-name # 注意点: # - Helm不会等到所有资源都运行后才退出 # 更多安装方式 # - 常规在repo里面安装,就是上面提到的 # - 从本地chart包安装,helm install foo foo-0.1.1.tgz # - 从chart包解压缩出来的目录上安装,helm install foo path/to/foo # - 从完整的chart包url上安装,helm install foo https://example.com/charts/foo-1.2.3.tgz
查看release状态和配置
## STATUS # 查看release的状态或重读它的配置 helm status happy-panda
在安装chart之前自定义参数
# 输出可以自定义的选项 helm show values stable/mariadb # ...... ## Create a database user ## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run ## # mariadbUser: # mariadbPassword: # ...... # 使用-f指定自定义内容 echo '{mariadbUser: user0, mariadbDatabase: user0db}' > config.yaml helm install -f config.yaml stable/mariadb # 使用--set在命令行指定自定义的变量 --set a=b,c=d # a: b # c: d --set outer.inner=value # outer: # inner: value --set name={a, b, c} # name: # - a # - b # - c --set servers[0].port=80,servers[0].host=example # servers: # port: 80 # host: example --set name=value1\,value2 # name: "value1,value2" --set nodeSelector."kubernetes\.io/role"=master # nodeSelector: # kubernetes.io/role: master
升级release
当需要修改release配置,或者想要升级release使用的chart版本时,可以升级release
由于Kubernetes chart可能很大且很复杂,因此Helm尝试执行侵入性最小的升级。它将仅更新自上一次release基础上变动的内容。
helm upgrade -f panda.yaml happy-panda stable/mariadb
# 查看刚才做出的修改
helm get values happy-panda
回退release
有升级就有回退
# helm rollback [RELEASE] [REVISION] helm rollback happy-panda 1 # 可以通过helm history [RELEASE]来查看历史 helm history happy-panda
删除release
helm uninstall happy-panda
# 删除,但是存在保留历史
helm uninstall happy-panda --keep-history
查看release列表
helm list # 可以查看使用--keep-history删除的release helm list --uninstalled # 查看所有的release,包含--keep-history删除的release helm list --all
repo相关命令
helm repo list helm repo add dev https://example.com/dev-charts helm repo update helm repo remove dev
# 创建自己的chart,会在当前目录生成一个和chart同名的目录 helm create deis-workflow # 目录结构如下 tree deis-workflow/ deis-workflow/ ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── ingress.yaml │ ├── NOTES.txt │ ├── serviceaccount.yaml │ ├── service.yaml │ └── tests │ └── test-connection.yaml └── values.yaml # 可以自定义里面的值 # 自定义修改好之后,可以打包成为一个chart helm package deis-workflow # deis-workflow-0.1.0.tgz # 可以这样安装自定义的包 helm install deis-workflow ./deis-workflow-0.1.0.tgz