0%

Helm入门篇

Helm简介

Helm is the best way to find, share, and use software built for Kubernetes.

helm是k8s的包管理工具,就像yum之于centos,apt之于ubuntu。不同的是,yum管理的是软件包,helm管理的是配置好的k8s资源包。这种配置好的k8s资源包,按照chart的包格式进行包装。以下是wordpress的chart包结构:

1
2
3
4
5
6
7
8
9
10
wordpress/
Chart.yaml # A YAML file containing information about the chart
LICENSE # OPTIONAL: A plain text file containing the license for the chart
README.md # OPTIONAL: A human-readable README file
requirements.yaml # OPTIONAL: A YAML file listing dependencies for the chart
values.yaml # The default configuration values for this chart
charts/ # A directory containing any charts upon which this chart depends.
templates/ # A directory of templates that, when combined with values,
# will generate valid Kubernetes manifest files.
templates/NOTES.txt # OPTIONAL: A plain text file containing short usage notes

Helm2包括两个组件:客户端(Helm Client)和服务端(Tiller)。Helm发送指令给Tiller(gRPC协议),Tiller主要用于管理各种应用发布的版本,并且与k8s进行交互。
不过,在 Helm3 中 Tiller 被移除掉了,Helm直接与k8s进行交互,版本相关的数据存储在k8s中。

Helm3中命令也发生了变化:

  • helm delete 更名为 helm uninstall
  • helm inspect 更名为 helm show
  • helm fetch 更名为 helm pull

旧的命令依然可以使用。

参考文档:

体验Helm

越来越喜欢用katacoda来学习新技能,Helm也可以在上面通过实践学习。

Helm相关教程:

安装Helm

参考 Installing Helm,安装helm。

macos

1
2
brew install helm
helm version

linux

1、查找需要的release版本

2、下载并安装

1
2
3
4
5
wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz
tar -xzvf helm-v3.2.4-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
ln -s /usr/local/bin/helm /usr/bin/helm
helm version

Helm常用命令

使用条件

helm命令使用条件:

  • 安装配置好k8s集群
  • 安装配置好kubectl,可以正常访问k8s
  • 安装好helm

helm和kubectl一样,可以在一台机器上管理多个k8s集群,使用kubectl config use-context xxx切换一下集群即可。

查看帮助

1
2
helm -h
helm get -h

添加chart仓库

1
2
3
4
5
6
# helm repo add stable https://kubernetes-charts.storage.googleapis.com/
# helm repo add stable https://charts.helm.sh/stable
# helm repo remove stable
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update
helm repo list

查看chart列表

1
2
3
helm search repo stable
helm search repo stable/mysql
helm search repo stable/mysql -l

查看chart详情

1
2
helm show chart stable/mysql
helm show all stable/mysql

安装软件

以安装mysql为例(适用于 k8s v1.16- 版本)

1
2
3
# helm install mysql-test stable/mysql
helm install stable/mysql --generate-name
helm status mysql

安装指定chart版本的mysql

1
2
helm search repo stable/mysql -l
helm install stable/mysql --version 0.3.5

k8s v1.16+ 版本,extensions/v1beta1 API version中Deployment资源已经被移除了,因此这里的mysql chart仅适用于1.16以下的版本。详情参考Deprecated APIs Removed In 1.16: Here’s What You Need To Know

如果想要在 k8s v1.16+ 版本中使用这个mysql chart,请参考《K8S中安装Mysql》一文中的【helm安装单节点mysql(5.7.x)】一节。

查看k8s中安装的chart

1
2
3
4
helm list
helm list -A
helm list -n mysql
helm status mysql -n mysql

卸载软件

以卸载mysql为例

1
2
3
helm ls
helm uninstall mysql
helm status mysql

卸载指定namespace下的软件

1
2
helm ls -A
helm uninstall xxx -n yyy

修改默认配置

方法一:下载chart(推荐)

下载chart,修改配置文件。
这种方法是最推荐的方法,原因有二:

  • 有时不止需要修改values.yaml,还需要修改其他yaml文件
  • 安装之后有完整留档,方便以后的配置调整和升级

以修改mysql的默认配置为例:

1、获取chart并解压

1
2
3
4
5
helm fetch stable/mysql 
# or
helm fetch stable/mysql --version 0.3.5

tar -xzvf mysql-0.3.5.tgz

2、编辑values

1
2
cd mysql
vim values.yaml

配置项改为我们需要的配置。

3、执行安装
在values所在目录下,执行命令

1
2
kubectl create ns mysql
helm install mysql -f values.yaml . -n mysql

方法二:导出配置文件

导出配置文件,修改配置文件

以修改mysql的默认配置为例:

1、获取默认values

1
helm show values stable/mysql > mysql-values.yaml

2、编辑values
编辑mysql-values.yaml

3、执行安装

1
2
kubectl create ns mysql
helm install mysql stable/mysql -f mysql-values.yaml -n mysql

方法三:执行命令时指定配置

执行helm install命令时,指定配置

以修改mysql的默认配置为例:

1
helm install mysql stable/mysql -n mysql --set persistence.size=10Gi

修改配置后更新

1
helm upgrade mysql stable/mysql -f mysql-values.yaml -n mysql

创建chart并打包

1、创建chart

1
helm create wecms

2、验证chart

1
helm lint

3、打包chart

1
helm package wecms

4、使用chart安装

1
helm install wecms ./wecms-0.1.0.tgz

常用chart

  • 本文作者: 好好学习的郝
  • 本文链接: https://www.voidking.com/dev-helm-start/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!源站会及时更新知识点及修正错误,阅读体验也更好。欢迎分享,欢迎收藏~