Kubernetes14:Helm介绍(为了部署像微服务这种的大型项目)
1、Helm的引入
(1)之前方式部署应用基本过程
编写yaml文件
- 1、deployment
kubectl create deployment nginx --image=nginx --dry=run -o yaml > nginx.yaml
- 2、Service
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort
- 3、Ingress
如果使用之前方式部署单一应用,少数服务的应用,比较合适
部署微服务项目,可能有几十个服务,每个服务都有一套yaml文件,需要维护大量的yaml文件,版本管理特别不方便
2、使用helm可以解决哪些问题?
(1)使用helm可以把这些yaml文件作为一个整体管理
(2)实现yaml高效复用
(3)实现应用级别的版本管理
3、Helm介绍
Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。
Helm有3个重要概念:
(1)helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发 布和管理。
(2)Chart:应用描述,一系列用于描述k8s资源相关文件的集合。
(3)Release:基于Chart的部署实体,一个chart被Helm运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象。
4、He1m三个重要概念
(1)helm 是一个命令行客户端工具
(2)chart 把yaml打包,是yaml集合
(3)Release 基于chart部署实体,应角级别的版本管理
5、he1m在2019年发布V3版本,和之前版本相比有变化
(1)V3 版本删除Tiller
(2)release 可以在不同命名空间重用
(3)将chart推送到docker镜像仓库中
6、helm架构变化
安装和配置仓库
1、helm安装
官网下载:
helm.sh
第一步 下载helm安装压缩文件,上传到1iunx系统中
第二步 解压helm压缩文件,把解压之后helm目录复制到 usr/bin目录下
2、配置helm仓库
(1)添加仓库
helm repo add 仓库名 仓库地址
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add allyun https://kubernetes.oss-cn-hangzhou.allyuncs.com/charts
helm repo list
可以加两个仓库,但没必要
(2)更新仓库
helm repo update
(3)删除仓库
helm repo remove aliyun
3、使用helm快速部署应用
第一步、使用命令搜索应用
helm search repo 名称(weave)
第二步、 根据搜索内容,选择安装
helm install 安装之后名称 搜索之后应用名称
查看安装之后状态
helm list
helm status 安装之后名称
已经创建好了pods和svc
但是没有对外暴露端口
修改service的yaml文件,type改为NodePort
kubectl edit svc ui-weave-scope
修改
kubectl get svc
如何自己创建Chart
1、使用命令创建chart
helm create mychart
进入文件夹
2、在templates.文件夹创建两个yaml文件
先试用 rm -rf * 命令删除该文件中所以的示例文件
deployment.yaml
kubectl create deployment web1 --image=nginx --dry-run -o yaml > deployment.yaml
service.yaml
kubectl create deployment web1 --image=nginx为了获取下边的yaml文件需要先将web1真实的创建出来,获取到service.yaml之后再删除(非通用方法)
kubectl expose deployment web1 --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml
kubectl delete deployment web1
3、安装mychart
helm install web1 mychart/
4、应用升级-----helm upgrade chart名称
helm upgrade webl mychart/
实现yaml高效复用
通过传递参数, 动态渲染模板,yam1内容 动态传入参数生成
在chart有values.Iyaml文件, 定义yaml文件全局变量
1、在value.yaml文件中定义变量和值
2、在具体的yaml文件,获取定义变量值
特点:yaml文件大体有几个地方不同的
Image
tag
label
port
replicas
第一步、在values.yaml定义变量和值
第二步、在templates的yaml文件使用values.yaml定义变量
deplyoment.yaml
service.yaml
helm install --dry-run web2 mychart/
helm install web2 mychart/