Kubernetes中使用helm

今天药忘吃喽~ 2022-11-20 00:59 484阅读 0赞

Kubernetes中使用helm

  • 1、helm
  • 2、V3版本安装
    • 2.1 配置Helm仓库
  • 3、helm快速部署应用
  • 4、自定义chart部署
  • 5、Chart模板使用

1、helm

​ Helm是一个Kubernetes的包管理工具,类似Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。

使用helm可以解决哪些问题?

  • 使用helm可以把yaml作为一个整体管理。
  • 实现yaml文件的高效复用。
  • 使用helm可以解决应用级别的版本管理。

​ Helm有三个重要概念:

  1. helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。
  2. Chart:应用描述,一系列用于描述k8s资源相关文件的集合。
  3. Release:基于Chart的部署实体,一个chart被Helm运行后将会生成对应的一个release;将在k8s中创建出真实运行的资源对象。

2、V3版本安装

官网地址:helm.sh

  1. 下载helm安装压缩文件,上传到linux系统中
  2. 解压helm压缩文件,把解压之后helm目录复制到/usr/bin目录下
  3. 然后就可以使用helm了

2.1 配置Helm仓库

  1. 添加仓库

helm repo add 仓库名称 仓库地址

  1. # 微软地址
  2. helm repo add stable http://mirror.azure.cn/kubernetes/charts
  3. # 阿里云地址
  4. helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
  5. helm repo update
  1. 查看配置的存储库

    helm repo list
    helm search repo stable

  2. 删除存储库

    helm repo remove aliyun

3、helm快速部署应用

helm基本使用命令:

  • chart install
  • chart upgrade
  • chart rollback
  1. 使用命令搜索应用

    helm search repo 名称(weave)

  2. 根据搜索内容选择进行按照

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

  3. 查看安装之后状态

    helm list
    helm status 安装之后名称

修改service的yaml文件,type改为NodePort

  1. kubectl edit save <Name>
  2. # 如:
  3. kubectl edit svc ui-weave-scope

4、自定义chart部署

  1. 使用命令创建chart,创建后会生成一份模板

    helm create mychart

    • Chartyaml:当前chart属性配置信息
    • templates:编写yaml文件放到这个目录中
    • values.yaml:yaml文件可以使用全局变量
  2. 在templates文件夹创建两个yaml文件

    • deployment.yaml
    • service.yaml
  3. 安装mychart

    helm install web mychart/

  4. 应用升级

    helm upgrade chart名称

    如:

    helm upgrade web1 mychart/

5、Chart模板使用

实现yaml高效复用。

  • 通过传递参数,动态渲染模板,yaml内容动态传入参数生成。
  • 通过使用values.yaml文件。

在chart有values.yaml文件,定义yaml文件全局变量。

yaml文件大体有几个地方不同:

  • image
  • tag
  • label
  • port
  • replicas
  1. 在values.yaml定义变量和值

    vi values.yaml

    replicas: 1
    image: nginx
    tag: 1.16
    label: nginx
    port: 80

  2. 在具体yaml文件,获取定义变量值。在templates的yaml文件中使用values.yaml定义的变量

    • 通过表达式形式使用全局变量

      • { { .Values.变量名称 }}
      • { { .Release.Name }}

发表评论

表情:
评论列表 (有 0 条评论,484人围观)

还没有评论,来说两句吧...

相关阅读