文章目录

  • 一、为什么引入Helm
  • 二、Helm介绍
  • 三、Helm组件及架构
  • 四、Helm v3变化
  • 五、helm仓库
  • 六、使用helm快速部署应用
    • 6.1 使用命令搜索应用
    • 6.2 根据搜索内容选择安装
    • 6.3 自己创建Chart
    • 6.4 安装mychart
    • 6.5 应用升级
  • 七、chart模板使用
    • 7.1 定义变量和值
    • 7.2 获取变量和值
    • 7.3 安装应用

一、为什么引入Helm

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

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

但是这种方式部署,会有什么问题呢?

  • 如果使用之前部署单一应用,少数服务的应用,比较合适
  • 但如果部署微服务项目,可能有几十个服务,每个服务都有一套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的第一个稳定版本

该版本主要变化如下

  • 最明显的变化是Tiller的删除
  • V3版本删除Tiller
  • relesase可以在不同命名空间重用

V3之前

V3版本


helm配置
首先我们需要去 https://helm.sh/docs/intro/quickstart/

  1. 第一步,下载helm安装压缩文件,上传到linux系统中
  2. 第二步,解压helm压缩文件,把解压后的helm目录复制到 usr/bin 目录中
  3. 使用命令:helm

我们都知道yum需要配置yum源,那么helm就就要配置helm源

五、helm仓库

添加仓库

helm repo add 仓库名  仓库地址

例如

# 配置微软源
[root@k8s-master ~]$ helm repo add stable http://mirror.azure.cn/kubernetes/charts# 配置阿里源
[root@k8s-master ~]$ helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts# 配置google源
[root@k8s-master ~]$ helm repo add google https://kubernetes-charts.storage.googleapis.com/# 更新
[root@k8s-master ~]$ helm repo update

然后可以查看添加的仓库地址

# 查看全部
[root@k8s-master ~]$ helm repo list# 查看某个
[root@k8s-master ~]$ helm search repo stable

删除添加的源

[root@k8s-master ~]$ helm repo remove stable

helm基本命令

  • chart install
  • chart upgrade
  • chart rollback

六、使用helm快速部署应用

6.1 使用命令搜索应用

使用命令搜索需要安装的应用

# 搜索 weave仓库
[root@k8s-master ~]$ helm search repo weave

6.2 根据搜索内容选择安装

[root@k8s-master ~]$ helm install ui aliyun/weave-scope

通过下面命令,来下载yaml文件

[root@k8s-master ~]$ kubectl apply -f weave-scope.yaml

安装完成后,通过下面命令即可查看

[root@k8s-master ~]$ helm list#查看更新具体的信息
[root@k8s-master ~]$ helm status ui

需要修改service的yaml文件,添加NodePort

[root@k8s-master ~]$ kubectl edit svc ui-weave-scope

这样就可以对外暴露端口了

[root@k8s-master ~]$ kubectl get svc

6.3 自己创建Chart

[root@k8s-master ~]$ helm create mychart

目录格式

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

在templates文件夹创建两个文件

我们创建以下两个

deployment.yaml
service.yaml

我们可以通过下面命令创建出yaml文件

# 导出deployment.yaml
[root@k8s-master ~]$ kubectl create deployment web1 --image=nginx --dry-run -o yaml > deployment.yaml# 导出service.yaml 【可能需要创建 deployment,不然会报错】
[root@k8s-master ~]$ kubectl expose deployment web1 --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml

6.4 安装mychart

执行命令创建

[root@k8s-master ~]$ helm install web1 mychart

6.5 应用升级

修改了mychart中的东西后,就可以进行升级操作

[root@k8s-master ~]$ helm upgrade web1 mychart

七、chart模板使用

通过传递参数,动态渲染模板,yaml内容动态从传入参数生成

刚刚我们创建mychart的时候,看到有values.yaml文件,这个文件就是一些全局的变量,然后在templates中能取到变量的值,下面我们可以利用这个,来完成动态模板

  • 在values.yaml定义变量和值
  • 具体yaml文件,获取定义变量值
  • yaml文件中大题有几个地方不同
    • image
    • tag
    • label
    • port
    • replicas

7.1 定义变量和值

在values.yaml定义变量和值

7.2 获取变量和值

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

例如: {{.Release.Name}}

7.3 安装应用

在我们修改完上述的信息后,就可以尝试的创建应用了

helm install --dry-run web2 mychart

13、Kubernetes核心技术Helm相关推荐

  1. K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程

    K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...

  2. 10-1 Kubernetes 部署Helm

    一.什么是 Helm 在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment.svc 等,步骤较繁琐.况且随着很多项目微服务化,复杂的应用在容器中部署以及管 ...

  3. J2EE的13种核心技术

    Java最初是在浏览器和客户端机器中粉墨登场的.当时,很多人质疑它是否适合做服务器端的开发.现在,随着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛接纳为开发企业级服务器端解决方案 ...

  4. JavaEE的13种核心技术

    java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13中核心技术. JAVAEE的核心API与组件 JAVAEE平台由一整套服务(Services).应用程序接口(API ...

  5. java13种技术_JavaEE的13种核心技术

    java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13种核心技术. JAVAEE的核心API与组件 JAVAEE平台由一整套服务(Services).应用程序接口(API ...

  6. .NET Core + Kubernetes:Helm

    Helm[1] 作为 Kubernetes 体系的包管理工具,已经逐渐成为了应用分发标准,在 .NET 开发中,可以理解为与 NuGet 包类似.回顾之前文章中的介绍,Kubernetes 中单个服务 ...

  7. java 13个核心技术3

    前端时间由于软考的原因,已经开始了j2se的学习,马士兵老师带我们走进了java的世界.最近在学习j2ee的过程中,了解到java的13个核心技术,于是先来个宏观的了解吧. 其实java的大方向就是j ...

  8. java 13种技术_JavaEE的13种核心技术

    Java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13中核心技术. JavaEE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于We ...

  9. J2EE的13种核心技术简介

    Java最初是在浏览器和客户端机器中粉墨登场的.当时,很多人质疑它是否适合做服务器端的开发.现在,随着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛接纳为开发企业级服务器端解决方案 ...

最新文章

  1. python给用户输出提示_python3.4控制用户输入与输出的方法
  2. 比较数据库表结构之间的差异
  3. ubuntu搭建LAMP
  4. Mysql连接显示1130_***远程连接MYSQL提示1130 - Host is not allowed to connect to this MySQL server...
  5. SAP BSP source code handling - how is native html source generated by UI framework
  6. mysql无法创建新用户_如何mysql禁止创建新用户
  7. Diango博客--23.单元测试:测试 blog 应用
  8. tshark解析本地pcap数据包提取五元组{src_ip,src_port,proto,dst_ip,dst_port}与时间戳,包长
  9. TCP是如何保证数据的可靠传输的
  10. 一个传奇玩家的传奇故事
  11. python如何下载安装spacy_SpaCy下载及安装
  12. linux 打开三维stl文件,三维stl文件查看工具下载
  13. k Nearest Neighbor Algorithm
  14. 如何解决HTTP Error 503. The service is unavailable问题
  15. 阴沟里翻船,我将11月2日定为每年的受耻日!
  16. vue-cli 创建项目不成功 原因为项目文件夹无node_modules文件 进行npm install不成功解决办法
  17. go系列-笔记(第五天)
  18. 一二线城市知名 IT互联网公司名单(最新整理版)出炉!
  19. 电影数据分析练习——ppt报告
  20. 观察者模式解读厦门建国以来最强台风

热门文章

  1. R语言ggplot2包旋转(Rotate)可视化图像轴标签实战
  2. 简要介绍一下贝叶斯定理( Bayes‘ theorem)
  3. SVM为什么采用间隔最大化?SVM为什么将原始问题转换为其对偶问题?
  4. 深度学习多变量时间序列预测:GRU算法构建时间序列多变量模型预测交通流量+代码实战
  5. 影像组学视频学习笔记(42)-影像组学特征提取问题解决过程复现、Li‘s have a solution and plan.
  6. 汪国华 基因组分析的生物信息学算法
  7. R语言ggplot2绘制平滑曲线的折线图简单小例子
  8. FASTQ! BAM! VCF
  9. MySql修改 表名
  10. 多媒体个人计算机的英语,计算机英语之网络多媒体篇