11、核心技术Helm

一、引入Helm

 

首先在原来项目中都是基于yaml文件来进行部署发布的,而目前项目大部分微服务化或者模块化,会分成很多个组件来部署,每个组件可能对应一个deployment.yaml,一个service.yaml,一个Ingress.yaml还可能存在各种依赖关系,这样一个项目如果有5个组件,很可能就有15个不同的yaml文件,这些yaml分散存放,如果某天进行项目恢复的话,很难知道部署顺序,依赖关系等,而所有这些包括

  • 基于yaml配置的集中存放
  • 基于项目的打包
  • 组件间的依赖

二、Helm优势

如果使用之前部署单一应用,少数服务的应用,比较合适,但如果部署微服务项目,可能有几十个服务,每个服务都有一套yaml文件,需要维护大量的yaml文件,版本管理特别不方便
Helm的引入,就是为了解决这个问题

  • 使用Helm可以把这些YAML文件作为整体管理
  • 实现YAML文件高效复用
  • 使用helm应用级别的版本管理

三、Helm介绍

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

Helm有三个重要概念

helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理
Chart:应用描述,一系列用于描述k8s资源相关文件的集合
Release:基于Chart的部署实体,一个chart被Helm运行后将会生成对应的release,将在K8S中创建出真实的运行资源对象。也就是应用级别的版本管理
Repository:用于发布和存储Chart的仓库

四、Helm组件及架构

Helm采用客户端/服务端架构,有如下组件组成

Helm CLI是Helm客户端,可以在本地执行
Tiller是服务器端组件,在Kubernetes集群上运行,并管理Kubernetes应用程序
Repository是Chart仓库,Helm客户端通过HTTP协议来访问仓库中Chart索引文件和压缩包

五、Helm v3变化

2019年11月13日,Helm团队发布了Helm v3的第一个稳定版本,该版本主要变化如下

  • 将char推送到docker仓库
  • V3版本删除Tiller
  • relesase可以在不同命名空间重用

 

六、helm配置

1、下载helm


2、安装

解压helm压缩文件,把解压后的helm目录复制到 usr/bin 目录中


3、使用helm命令

 4、添加仓库

helm repo add 仓库名  仓库地址 
例如
# 配置微软源
helm repo add stable http://mirror.azure.cn/kubernetes/charts
# 配置阿里源
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 配置google源
helm repo add google https://kubernetes-charts.storage.googleapis.com/


更新

helm repo update


#查看仓库地址

helm repo list

查看某个

helm search repo stable

删除我们添加的源

helm repo remove stable

helm基本命令

chart install
chart upgrade
chart rollback

七、使用Helm快速部署

1、搜索我们需要安装的应用

搜索 weave仓库
helm search repo weave

2、安装

helm install ui stable/weave-scope


3、安装完成后,查看

helm list 

helm status ui

4、没有暴露端口,需要暴露

kubectl edit svc ui-weave-scope

修改后结果 

http://192.168.211.133:32124/

八、自定义char部署
 

1、char模板创建

helm create mychar

目录格式
templates:编写yaml文件存放到这个目录
values.yaml:存放的是全局的yaml文件
chart.yaml:当前chart属性配置信息

在templates文件夹创建两个文件通过下面方式生成

deployment.yaml
service.yaml


2、创建出yaml文件

# 导出deployment.yaml
kubectl create deployment web1 --image=nginx --dry-run -o yaml > deployment.yaml

创建web1

kubectl create deployment web1 --image=nginx


# 导出service.yaml 【可能需要创建 deployment,不然会报错】
kubectl expose deployment web1 --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml

删除web1

kubectl delete deployment web1

 3、安装mychar

helm install web1 mychar

 4、升级

helm upgrade web1 mychar/

九、高效复用

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

yaml文件有几个地方不同

  • image
  • tag
  • label
  • port
  • replicas

2、具体yaml文件中获取变量和值

我们通过表达式形式 使用全局变量 {{.Values.变量名称}}

常用变量{{.Release.Name}}

deployment.yaml

service.yaml

 helm install --dry-run web2 mychar/

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值