1、helm3基础使用

最新helm3 https://helm.sh/docs/

1、Helm 介绍

Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。
Helm有两个重要概念:
helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。
Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
Release:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象。

2、部署Helm客户端

Helm客户端下载地址:https://github.com/helm/helm/releases
解压移动到/usr/bin/目录即可。

wget https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
tar zxvf helm-v3.0.0-linux-amd64.tar.gz 
mv linux-amd64/helm /usr/bin/

3、Helm常用命令

create 创建一个chart并指定名字
dependency 管理chart依赖
get 下载一个release。可用子命令:all、hooks、manifest、notes、values
history 获取release历史
install 安装一个chart
list 列出release
package 将chart目录打包到chart存档文件中
pull 从远程仓库中下载chart并解压到本地 # helm pull stable/mysql --untar
repo 添加,列出,移除,更新和索引chart仓库。可用子命令:add、index、list、remove、update
rollback 从之前版本回滚
search 根据关键字搜索chart。可用子命令:hub、repo
show 查看chart详细信息。可用子命令:all、chart、readme、values
status 显示已命名版本的状态
template 本地呈现模板
uninstall 卸载一个release
upgrade 更新一个release
version 查看helm客户端版本

4、配置国内Chart仓库

  • 微软仓库(http://mirror.azure.cn/kubernetes/charts/)这个仓库强烈推荐,基本上官网有的chart这里都有。
  • 阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )
  • 官方仓库(https://hub.kubeapps.com/charts/incubator)官方chart仓库,国内有点不好使。
    添加存储库:
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 
helm repo update

查看配置的存储库:

helm repo list
helm search repo stable

删除存储库:

helm repo remove aliyun

5、Helm基本使用

主要介绍三个命令:

  • chart install
  • chart update
  • chart rollback

1、使用chart部署一个应用

查找chart:

helm search repo
helm search repo mysql

为什么mariadb也在列表中?因为他和mysql有关。

查看chart信息:

helm show chart stable/mysql

安装包:

helm install db stable/mysql

查看发布状态:

 helm status db 

2、安装前自定义chart配置选项

上面部署的mysql并没有成功,这是因为并不是所有的chart都能按照默认配置运行成功,可能会需要一些环境依赖,例如PV。

所以我们需要自定义chart配置选项,安装过程中有两种方法可以传递配置数据:

  • –values(或-f):指定带有覆盖的YAML文件。这可以多次指定,最右边的文件优先
  • –set:在命令行上指定替代。如果两者都用,–set优先级高
    –values使用,先将修改的变量写到一个文件中
    我们找到pvc相关的信息
helm show values stable/mysql
## Persist data to a persistent volume
persistence:
  enabled: true
  ## database data Persistent Volume Storage Class
  ## If defined, storageClassName: 
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  ##
  # storageClass: "-"
  accessMode: ReadWriteOnce
  size: 8Gi
  annotations: {}

找到我们的nfs-storage

[root@master ~]# kubectl get sc
NAME                  PROVISIONER       AGE
k8s-cephfs            ceph.com/cephfs   34d
managed-nfs-storage   fuseim.pri/ifs    13m

先卸载:

helm uninstall db

命令行替代变量安装mysql:

helm install db --set persistence.storageClass="managed-nfs-storage" stable/mysql

安装完毕后mysql就正常运行了。
我们还可以使用yaml文件来定义变量安装:
我们先导出模板然后修改:

helm show values stable/mysql > config.yaml
[root@master demo]# cat config.yaml
mysqlRootPassword: testing
mysqlUser: liaochao
mysqlPassword: k8s
mysqlDatabase: k8s
persistence:
  enabled: true
  storageClass: "managed-nfs-storage"
  accessMode: ReadWriteOnce
  size: 8Gi

以上将创建具有名称的默认MySQL用户liaochao,并授予此用户访问新创建的k8s数据库的权限,但将接受该图表的所有其余默认值。
指定yaml文件安装mysql:

helm install db2 -f config.yaml stable/mysql

该helm install命令可以从多个来源安装:
chart存储库

  • 本地chart存档(helm install foo-0.1.1.tgz)
  • chart目录(helm install path/to/foo)
  • 完整的URL(helm install https://example.com/charts/foo-1.2.3.tgz)

我们安装mysql的时候可以把chart包下载下来查看详情:

helm pull stable/mysql --untar

你可能感兴趣的:(helm)