13、Kubernetes核心技术Helm
文章目录
- 一、为什么引入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/
- 第一步,下载helm安装压缩文件,上传到linux系统中
- 第二步,解压helm压缩文件,把解压后的helm目录复制到 usr/bin 目录中
- 使用命令: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相关推荐
- 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 个重要概念 ...
- 10-1 Kubernetes 部署Helm
一.什么是 Helm 在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment.svc 等,步骤较繁琐.况且随着很多项目微服务化,复杂的应用在容器中部署以及管 ...
- J2EE的13种核心技术
Java最初是在浏览器和客户端机器中粉墨登场的.当时,很多人质疑它是否适合做服务器端的开发.现在,随着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛接纳为开发企业级服务器端解决方案 ...
- JavaEE的13种核心技术
java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13中核心技术. JAVAEE的核心API与组件 JAVAEE平台由一整套服务(Services).应用程序接口(API ...
- java13种技术_JavaEE的13种核心技术
java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13种核心技术. JAVAEE的核心API与组件 JAVAEE平台由一整套服务(Services).应用程序接口(API ...
- .NET Core + Kubernetes:Helm
Helm[1] 作为 Kubernetes 体系的包管理工具,已经逐渐成为了应用分发标准,在 .NET 开发中,可以理解为与 NuGet 包类似.回顾之前文章中的介绍,Kubernetes 中单个服务 ...
- java 13个核心技术3
前端时间由于软考的原因,已经开始了j2se的学习,马士兵老师带我们走进了java的世界.最近在学习j2ee的过程中,了解到java的13个核心技术,于是先来个宏观的了解吧. 其实java的大方向就是j ...
- java 13种技术_JavaEE的13种核心技术
Java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13中核心技术. JavaEE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于We ...
- J2EE的13种核心技术简介
Java最初是在浏览器和客户端机器中粉墨登场的.当时,很多人质疑它是否适合做服务器端的开发.现在,随着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛接纳为开发企业级服务器端解决方案 ...
最新文章
- python给用户输出提示_python3.4控制用户输入与输出的方法
- 比较数据库表结构之间的差异
- ubuntu搭建LAMP
- Mysql连接显示1130_***远程连接MYSQL提示1130 - Host is not allowed to connect to this MySQL server...
- SAP BSP source code handling - how is native html source generated by UI framework
- mysql无法创建新用户_如何mysql禁止创建新用户
- Diango博客--23.单元测试:测试 blog 应用
- tshark解析本地pcap数据包提取五元组{src_ip,src_port,proto,dst_ip,dst_port}与时间戳,包长
- TCP是如何保证数据的可靠传输的
- 一个传奇玩家的传奇故事
- python如何下载安装spacy_SpaCy下载及安装
- linux 打开三维stl文件,三维stl文件查看工具下载
- k Nearest Neighbor Algorithm
- 如何解决HTTP Error 503. The service is unavailable问题
- 阴沟里翻船,我将11月2日定为每年的受耻日!
- vue-cli 创建项目不成功 原因为项目文件夹无node_modules文件 进行npm install不成功解决办法
- go系列-笔记(第五天)
- 一二线城市知名 IT互联网公司名单(最新整理版)出炉!
- 电影数据分析练习——ppt报告
- 观察者模式解读厦门建国以来最强台风
热门文章
- R语言ggplot2包旋转(Rotate)可视化图像轴标签实战
- 简要介绍一下贝叶斯定理( Bayes‘ theorem)
- SVM为什么采用间隔最大化?SVM为什么将原始问题转换为其对偶问题?
- 深度学习多变量时间序列预测:GRU算法构建时间序列多变量模型预测交通流量+代码实战
- 影像组学视频学习笔记(42)-影像组学特征提取问题解决过程复现、Li‘s have a solution and plan.
- 汪国华 基因组分析的生物信息学算法
- R语言ggplot2绘制平滑曲线的折线图简单小例子
- FASTQ! BAM! VCF
- MySql修改 表名
- 多媒体个人计算机的英语,计算机英语之网络多媒体篇