编辑
2023-07-31
🚀运维部署
00
请注意,本文编写于 688 天前,最后修改于 225 天前,其中某些信息可能已经过时。

目录

1. 引入
2. helm介绍
2.1 有3个重要概念
2.2 helm在19年发布V3版本,与之前变化
3. 安装和配置
3.1 helm安装
3.2 配置helm仓库
4. 快速部署
5. 如何自己创建Chart
5.1 使用命令创建chart
5.2 在templates文件夹创建两个yaml文件
5.2 安装mychart
6. 实现yaml高效复用

1. 引入

  1. 之前方式部署应用基本过程
1. 编写yaml文件 - depolyment - Service - Ingress

缺陷:

  • 如果用之前方式部署单一应用,少数服务的应用,比较合适
  • 如果部署微服务项目,可能有几十个服务,每个服务都有一个yaml文件,需要维护大量yaml文件,版本管理特别不方便
  1. helm可以解决哪些问题?
- 使用helm可以把这些yaml作为一个整体管理 - 实现yaml高效复用 - 使用heml应用级别的

2. helm介绍

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

2.1 有3个重要概念

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

2.2 helm在19年发布V3版本,与之前变化

  1. V3版本删除Tiller。架构发生变化
  2. release可以在不同命名空间重用
  3. 将chart推送到docker仓库中

之前版本 image.png

v3版本

image.png

3. 安装和配置

3.1 helm安装

  1. 下载helm安装压缩文件,上传到linux系统中

image.png

  1. 解压helm压缩文件,把解压之后helm目录复制到/usr/bin目录下

image.png

3.2 配置helm仓库

  1. 添加仓库、删除仓库、查看仓库
helm repo add 仓库名称 地址 # 微软地址: http://mirror.azure.cn/kubernetes/charts # 阿里云地址: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts helm repo update # 查看 helm repo list # 删除 helm repo remove 名称

4. 快速部署

  1. 使用命令搜素应用
shell
helm search repo 名称
  1. 根据搜索内容进行选择安装
helm install 起的名称 包的名称 # 查看安装之后的状态 helm list helm status 安装之后名称

image.png

image.png

如果遇到没有开发的端口,进行以下操作

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

image.png

5. 如何自己创建Chart

5.1 使用命令创建chart

helm create chart 名称

image.png

  • Chartyaml: 当前chart属性配置信息
  • templates:编写yaml文件放到这个目录中,所有yaml文件的集合
  • values.yml:yaml文件可以使用全局变量

5.2 在templates文件夹创建两个yaml文件

  • deployment.yaml
kubectl create deployment web1 --image=nginx --dry-run -o yaml > deployment.yaml

image.png

  • service.yaml
kubectl expose deployment web1 --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml

5.2 安装mychart

helm install web1 mychart

查看基本内容

image.png

做升级和更新操作

helm upgrade web1 mychart

6. 实现yaml高效复用

通过传递参数,动态渲染模板,yaml内容动态传入参数生成,使用values.yml文件(定义yaml文件全局变量)

yaml文件有几个地方不同的

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

image.png

  1. 在具体yaml文件,获取定义变量值

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

{{.Values.变量名称}} 例如:{{.Release.Name}} 获取当前版本号的名称

原来的

image.png 修改所用到的yaml

deployment.yaml image.png

service.yaml

image.png

本文作者:Eric

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!