当前位置: 首页 > news >正文

【1】k8s集群管理系列--包应用管理器之helm

一、helm概述

Helm核心是模板,即模板化K8s YAML文件。
通过模板实现Chart高效复用,当部署多个应用时,可以将差异化的字段进行模板化,在部署时使用-f或
者–set动态覆盖默认值,从而适配多个应用

helm工作流程:
在这里插入图片描述

二、helm客户端安装

使用helm很简单,你只需要下载一个二进制客户端包即可,会通过kubeconfig配置–共用k8s客户端(kubectl)的证书配置(通常
$HOME/.kube/config)来连接Kubernetes。

项目地址:https://github.com/helm/helm
下载Helm客户端(下载解压,然后把二进制文件拷贝到系统bin目录下):

wget https://get.helm.sh/helm-v3.4.2-linux-amd64.tar.gz
tar zxvf helm-v3.4.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/

三、helm的资源文件包:chart

chart资源配置目录结构:
在这里插入图片描述
• charts:目录里存放这个chart依赖的所有子chart。
• Chart.yaml:用于描述这个 Chart的基本信息,包括名字、描述信息以及版本等。
• values.yaml :用于存储 templates 目录中模板文件中用到变量的值。
• templates: 目录里面存放所有yaml模板文件。
• NOTES.txt :用于介绍Chart帮助信息, helm install 部署后展示给用户。例如:
如何使用这个 Chart、列出缺省的设置等。
• _helpers.tpl:放置模板的地方,可以在整个 chart 中重复使用。

四、helm客户端

4.1 基本命令

命令描述
completion命令补全,source <(helm completion bash)
create命令补全,创建一个chart并指定名字
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客户端版本

4.1 helm管理应用的生命周期

• helm create 创建Chart示例
• helm install 部署
• helm upgrade 更新
• helm rollback 回滚
• helm uninstall 卸载

五、创建一个chart示例

mkdir mychart  # 创建一个chart根目录
cd mychart
touch Chart.yaml
touch values.yaml
mkdir templates

1、Chart.yaml内容

apiVersion: v2
name: web-chart
description: this is my web-chart
type: application
version: 0.1.0
appVersion: 1.0.10

2、values.yaml内容(变量值定义,template中的变量引用,将从这个文件取值)

relicaCount: 1
image:
  respository: nginx
  tag: latest

label: nginx
service:
  type: ClusterIp
  port: 80
  targetPort: 80

3、创建template文件

cd templates
touch deployment.yaml
touch service.yaml
touch NOTES.txt
touch _helpers.tpl

4、deployment.yaml文件内容:

# .Values开头的变量,值从values.yaml文件中获取,变量引用使用“{{ }}”
apiVersion: apps/v1
kind: Deployment
metadata:
   name: {{ .Release.Name }}
spec: 
  replicas: {{ .Values.relicaCount }}
  selector:
    matchLabels:
      app: {{ .Values.label }}
  strategy: {}
  template:
    metadata:
      labels:
        app: {{ .Values.label }}
    spec:
      containers:
      - image: {{ .Values.image.respository }}:{{ .Values.image.tag }}
        name:  nginx
        resources: {}

5、service.yaml文件内容:

# .Values开头的变量,值从values.yaml文件中获取,变量引用使用“{{ }}”
apiVersion: v1
kind: Service
metadata:
# .Release是系统变量,可以在运行安装命令时传入
  name: {{ .Release.Name }}
spec:
  ports:
  - port: {{ .Values.service.port }}
    protocol: TCP
    targetPort: {{ .Values.service.targetPort }}
  selector:
    app: {{ .Values.label }}
  type: NodePort

六、helm部署应用

# mychart是目录地址(上面步骤创建的),web是应用名---自定义
helm install web-ng mychart

查看部署的应用:

helm list -n default

查看部署的Pod:

kubectl get pods,svc

部署效果:
在这里插入图片描述

七、helm升级应用

  1. 第一种方式:
# vi values.yaml #任意路径
vi values.yaml # 修改变量值
# 执行升级命令 web-ng是应用名,mychart是一个chart的目录名
helm upgrade -f values.yaml web-ng mychart
  1. 第二种方式(set设置变量值,覆盖values文件的对应变量值):
helm upgrade --set image.tag=1.17 web-ng mychart

八、helm安装、升级前测试(不实际执行)

helm upgrade -f values.yaml web-ng mychart --dry-run
helm install web-ng mychart --dry-run

相关文章:

  • Makefile:超简单快速入门(go示例)
  • 京东与喜茶关系破裂:切断所有合作 禁止进入办公场所
  • 安全是基石
  • http页面的加载过程
  • 富士相机照片 RAF 格式如何快速批量转为 JPG 格式教程
  • HarmonyOS:HMPermission权限请求框架
  • 宁德时代25年春招笔试演绎数字推理SHL测评题库
  • Python星球日记 - 第20天:数据分析入门
  • spark集群,Stand alone,Hadoop集群有关启动问题
  • biblatex 的 Biber 警告​​:tex文件运行无法生成参考文献和目录
  • Vue 项目中的package.json各部分的作用和用法的详细说明
  • Cline Memory Bank 结构化文档持久化 AI 上下文详解
  • 深入探索字符串处理:BF 算法与 KMP 算法
  • 红宝书第三十六讲:持续集成(CI)配置入门指南
  • OSPF接口的网络类型和不规则区域
  • Git使用与管理
  • 基于MCP协议调用的大模型agent开发04
  • 【GDB】调试程序的基本命令和用法(Qt程序为例)
  • Harmony鸿蒙应用开发-录音保存并播放音频
  • 《穿透表象,洞察分布式软总线“无形”之奥秘》
  • 织梦网站上传保存文档/百度推广销售员的工作内容
  • 要学做网站/哪家培训机构好
  • 做哪一类网站容易有排名/seo 首页
  • 网站建设方案书b2b/免费的网站推广软件
  • 福田做网站优化乐云seo/淘宝seo搜索引擎优化
  • b2c网站 方案/网络运营是做什么的