hello云胜

技术与生活

0%

Helm

是什么?

helm是k8s的包管理工具。可以方便的将之前打包好的yaml文件部署到k8s上。

之前部署一个应用的过程:编写yaml文件 –> 创建service对外暴露 –> 通过ingress域名访问

这种方式的缺点:只适合简单的应用。实际上我们部署微服务项目,可能有几十个服务,用这种方式就不合适了。需要维护大量的yaml文件。

使用helm的优势:

  1. 使用helm可以将大量yaml文件作为一个整体进行管理
  2. 实现yaml文件的高效复用。
  3. 实现应用级别的版本管理

总之,helm的作用就是让我们在k8s中部署应用更高效。

helm的核心概念:

  1. helm

    是一个命令行客户端工具。用于chart的创建、打包、发布。

  2. chart

    应用描述,实际上就是把yaml文件的打包。

  3. release

    基于chart部署的实体。就是应用的一个版本。

image-20210517142131666

helm安装

  1. 从helm官网:https://helm.sh/,下载v3版本的安装包

    wget https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz

  2. 放到服务器上,解压。将helm目录移动到/usr/bin目录下。

    1
    2
    tar -zxvf helm-v3.6.0-linux-amd64.tar.gz
    mv linux-amd64/helm /usr/bin/
  3. 配置helm仓库

    添加仓库:helm repo add 仓库名称 仓库地址

    1
    helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

    添加阿里云的仓库

    1
    2
    helm repo list  #查看仓库
    helm repo remove aliyun #删除仓库

还有一个常用的仓库:

helm repo add bitnami https://charts.bitnami.com/bitnami

  1. 更新仓库

    1
    helm repo update

常用Helm命令

  1. 快速搜索应用

    helm search repo 名字

  2. 列出所有版本

    1
    helm search repo redis -l
  3. 下载指定版本

    1
    helm pull bitnami/redis-cluster --version 8.2.5

    要下载最新版本就不用加–version

  4. 根据搜索结果进行安装

    helm install 安装之后的名称 搜索到的应用名称

    1
    helm install xx名字 .

    自定义变量

    1
    helm install xx名字 . -f values.yaml
  5. 查看安装状态

    1
    helm list -n redis

    helm status 安装之后的名称

  6. 删除

    1
    helm uninstall my-redis-cluster -n redis
使用helm部署redis
1
2
# kubectl create ns redis
# helm install my-redis-cluster bitnami/redis-cluster -f values.yaml -n redis

自己创建chart,完成部署

  1. 使用命令创建chart

    1
    helm create 自定义chart的名字

    目录作用:

    • charts:
    • Chart.yaml: 配置chart的基本信息,版本等。
    • templates:自己写的yaml文件放在这
    • valus.yaml: 定义全局变量
  2. 在template中创建自己的yaml文件

  3. 安装自己的chart

    1
    helm install 应用名字  自己的chart名字
  4. 更新自己的chart

    1
    helm upgrade 应用名字  自己的chart名字

使用helm进行yaml文件复用

通过传递参数,动态渲染yaml模板。做到yaml的高效复用。

  1. 在values.yaml中定义变量和值

  2. 在具体的yaml文件中,获取定义的变量值

    表达式:{{.Values.变量名称 }}

  3. 执行

    1
    helm install 应用名字  自己的chart名字