十五、kubernetes 核心技术-Helm

helm引入

之前方式部署应用基本过程

  • 使用helm可以解决哪些问题?
    • 使用helm可以把这些yaml作为一个整体管理
    • 实现yaml高效复用
    • 使用helm应用级别的版本管理

Helm介绍

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

Helm三个重要概念

  • helm:是一个命令行客户端工具
  • Chart:把yaml打包,yaml集合
  • Release:基于chart部署实体,应用级别的版本管理

V3版本架构

在这里插入图片描述

1. Helm安装

官方文档https://helm.sh/zh/docs/intro/install/

每个Helm 版本都提供了各种操作系统的二进制版本,这些版本可以手动下载和安装。

  1. 下载 curl -LO https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
  2. 解压(tar -zxvf helm-v3.0.0-linux-amd64.tar.gz)
  3. 在解压目中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)
  4. 添加仓库(helm repo add stable http://mirror.azure.cn/kubernetes/charts)
  5. 仓库查看(helm repo list)

helm 常用命令

命令描述
dependency管理 chart 依赖
get下载一个 release。可用子命令:all、hooks、manifest、notes、values
history获取 release 历史
install安装一个 chart
list列出 release
package将 chart 目录打包到 chart 存档文件中
pull从远程仓库中下载 chart 并解压到本地 # helm pull stable/mysql – untar
repo添加,列出,移除,更新和索引 chart 仓库。可用子命令:add、index、 list、remove、update
rollback从之前版本回滚
search根据关键字搜索 chart。可用子命令:hub、repo
show查看 chart 详细信息。可用子命令:all、chart、readme、values
status显示已命名版本的状态
template本地呈现模板
uninstall卸载一个 release
upgrade更新一个 release
version查看 helm 客户端版本

一键部署weavescope应用

helm search repo weave
helm install ui stable/weave-scope
kubectl get all 

在这里插入图片描述

修改weave的service资源 讲ClusterIP改为NodePort

在这里插入图片描述

2. 如何自己创建Chart

2.1 使用命令创建chart

helm create [名称]


[root@k8s-master01 mychart]# ll
总用量 8
drwxr-xr-x 2 root root    6 5月  14 19:02 charts				
-rw-r--r-- 1 root root  905 5月  14 19:02 Chart.yaml			# chart属性配置信息
drwxr-xr-x 3 root root  146 5月  14 19:02 templates			# 编写yaml文件放到这个目录中
-rw-r--r-- 1 root root 1490 5月  14 19:02 values.yaml    # yaml可以使用全局变量

2.2 在templates目录中创建yaml

自行创建

[root@k8s-master01 templates]# ll
总用量 8
-rw-r--r-- 1 root root 389 5月  14 21:52 web01-deployment.yaml
-rw-r--r-- 1 root root 240 5月  14 21:55 web01-svc.yaml

2.3 安装mychart

cd ~
helm install [名称] [目录]
helm install web02 mychart/

2.4 应用升级

helm upgrade [名称] [目录]

helm upgrade web1 mychart/

3. 实现yaml高效复用

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

3.1 在values.yaml定义变量值

  • yaml 文件大体有几个地方不同

    * image
    * tag
    * label
    * port 
    * name
    
    replicas: 1
    image: nginx
    tag: 1.16
    label: nginx
    port: 80
    

3.2 在templates的文件使用values.yaml定义变量

通过表达式形式使用全局变量

{{ .Values.变量名称}}

{{ .Release.Name}}

cat > web-deployment.yaml <<-EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: {{ .Values.label}}
  name: {{ .Release.Name}}-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: {{ .Values.label}}
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: {{ .Values.label}}
    spec:
      containers:
      - image: {{ .Values.image}}:{{ .Values.tag}}
        name: {{ .Release.Name}}-deploy
        resources: {}
status: {}
EOF
cat > web-svc.yaml <<-EOF
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: {{ .Values.label}}
  name: {{ .Release.Name}}-svc
spec:
  ports:
  - port: {{ .Values.port}}
    protocol: TCP
    targetPort: {{ .Values.port}}
  selector:
    app: {{ .Values.label}}
  type: NodePort
status:
  loadBalancer: {}
  
EOF

安装并执行

helm install web03 mychart/
helm install web04 mychart/

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值