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架构变化

helm部署jenkins helm部署微服务_kubernetes


helm部署jenkins helm部署微服务_kubernetes_02

安装和配置仓库

1、helm安装

官网下载:

helm.sh

helm部署jenkins helm部署微服务_微服务_03

第一步 下载helm安装压缩文件,上传到1iunx系统中
第二步 解压helm压缩文件,把解压之后helm目录复制到 usr/bin目录下

helm部署jenkins helm部署微服务_nginx_04

2、配置helm仓库

(1)添加仓库

helm repo add 仓库名 仓库地址

helm部署jenkins helm部署微服务_nginx_05

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

可以加两个仓库,但没必要

helm部署jenkins helm部署微服务_运维_06

(2)更新仓库
helm repo update

helm部署jenkins helm部署微服务_运维_07

(3)删除仓库
helm repo remove aliyun

3、使用helm快速部署应用

第一步、使用命令搜索应用

helm search repo 名称(weave)

helm部署jenkins helm部署微服务_helm部署jenkins_08

第二步、 根据搜索内容,选择安装

helm install 安装之后名称 搜索之后应用名称

helm部署jenkins helm部署微服务_nginx_09

查看安装之后状态

helm list

helm部署jenkins helm部署微服务_helm部署jenkins_10

helm status 安装之后名称

helm部署jenkins helm部署微服务_微服务_11

已经创建好了pods和svc

helm部署jenkins helm部署微服务_kubernetes_12

但是没有对外暴露端口
修改service的yaml文件,type改为NodePort

kubectl edit svc ui-weave-scope

修改

helm部署jenkins helm部署微服务_nginx_13

helm部署jenkins helm部署微服务_nginx_14

kubectl get svc

helm部署jenkins helm部署微服务_kubernetes_15

如何自己创建Chart

1、使用命令创建chart
helm create mychart

helm部署jenkins helm部署微服务_运维_16

进入文件夹

helm部署jenkins helm部署微服务_kubernetes_17


helm部署jenkins helm部署微服务_微服务_18

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

helm部署jenkins helm部署微服务_nginx_19

3、安装mychart

helm install web1 mychart/

helm部署jenkins helm部署微服务_helm部署jenkins_20

4、应用升级-----helm upgrade chart名称

helm upgrade webl mychart/

helm部署jenkins helm部署微服务_微服务_21

实现yaml高效复用

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

helm部署jenkins helm部署微服务_helm部署jenkins_22

在chart有values.Iyaml文件, 定义yaml文件全局变量

1、在value.yaml文件中定义变量和值
2、在具体的yaml文件,获取定义变量值
特点:yaml文件大体有几个地方不同的
Image
tag
label
port
replicas

第一步、在values.yaml定义变量和值

helm部署jenkins helm部署微服务_运维_23

第二步、在templates的yaml文件使用values.yaml定义变量

helm部署jenkins helm部署微服务_微服务_24

deplyoment.yaml

helm部署jenkins helm部署微服务_kubernetes_25

service.yaml

helm部署jenkins helm部署微服务_kubernetes_26

helm install --dry-run web2 mychart/
helm install web2 mychart/

helm部署jenkins helm部署微服务_kubernetes_27