【kubernetes笔记】k8s_helm(11)

Page content

这一篇整理了helm相关的内容。

1.Helm 引入

如果使用之前的方式部署应用,少数的服务应用比较合适。
.yaml => Deployment => Service => Ingress
部署多个服务的时候,需要维护大量的yaml文件,版本管理也不方便。

引入Helm解决一下问题。

  1. 使用Helm可以把这些yaml作为一个整体管理
  2. 时间yaml高效复用
  3. 使用helm应用级别的版本管理

2.Helm 介绍

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

Helm 有 3 个重要概念:

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

3.Helm 安装

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

$wget <https://get.helm.sh/helm-vv3.2.1-linux-amd64.tar.gz>
$tar zxvf helm-v3.2.1-linux-amd64.tar.gz
$mv linux-amd64/helm /usr/bin/

4.配置国内 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

#基本使用
chart install
chart upgrade
chart rollback
#查找 chart
$helm search repo weave

#安装包
$helm install ui stable/weave-scope

#查看发布状态 
$helm list
$helm status ui
  • 需要把Service的yaml文件的type 改为NodePort

5.创建chart

5.1 创建命令

$helm create mychart
$ls 
charts chart.yaml templates values.yaml
  • chart yaml: 当前chart属性配置信息
  • templates: 编写yaml文件放到这个目录中
  • values.yaml: yaml文件可以使用全局变量

5.2 templates文件夹创建两个文件

  • deployment.yaml
  • service.yaml

5.3 安装mychart

$helm install web1 mychart/

5.4 应用升级

$helm upgrade chart名称

$helm upgrade web mychart/

6.高效复用

通过传递参数,动态渲染模板,yaml内容动态传入参数生成
在chart有values.yaml文件,定义yaml文件全局变量

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

yaml文件几个不同地方

  • image
  • tag
  • label
  • port
  • replicas

在values.yaml定义变量和值

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

在templates的yaml文件使用values.yaml定义变量

通过表达式形式使用全局变量 {{ .values.变量名称}} => {{.Release.Name}}

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 客户端版本

欢迎大家的意见和交流

email: li_mingxie@163.com