【Helm】什么是Helm?它的基础命令有都有啥?

Helm 是 Kubernetes(k8s)服务编排实施的标准,它提供了多种功能来支持 Kubernetes 的服务编排。以下是对 Helm 的详细介绍:

一、定义与功能

  1. Helm 是 Kubernetes 的包管理器,主要用于管理 Chart 包。 Chart 包中包含一系列 yaml 格式的
  2. Kubernetes 资源定义文件以及资源的配置。
  3. Helm 通过命令行工具,支持 Kubernetes 应用 Chart 的创建、打包、发布和管理。

二、关键组件

  1. Chart:代表一个 Helm 包,包含了在 Kubernetes 集群中运行应用程序、工具或服务所需的所有 yaml 格式的资源定义文件。
  2. Repository(仓库):存放和共享 Helm Chart 的地方。
  3. Release(版本):基于Chart的部署实体。一个 Chart 被 Helm 运行后将会生成一个对应的新的 Release,然后将在 Kubernetes 中创建出真正运行的资源对象,它是一个应用级别的版本管理。

三、文件结构

Helm 中主要包含两类文件:模板文件和配置文件。

  1. 模板文件:通常有多个,基于 text/template 模板文件,可将配置文件中的值渲染进模板文件中,最终生成一个可部署的 Kubernetes 的 yaml 格式的资源定义文件。
  2. 配置文件:通常有一个(对应使用同一套模板,启动不同配置的资源对象的场景使用)。

四、应用场景及作用

Helm主要应用于微服务、实际项目中多服务多对象资源组合创建部署的场景。它的主要作用包括:

  1. 高效复用:通过将创建服务或资源对象的yaml文件分离为模板和配置,其中模板为 yaml 中静态的不怎么修改变动的部分,配置为yaml中创建不同配置服务或对象时,需要修改变动的部分。使用时可以对模板进行复用,只需要对配置进行修改即可。
  2. 简化管理:Helm 提供了一种方便的方式来安装、更新和管理 Kubernetes 应用,以及处理应用依赖和配置。

五、 Helm 基础命令

# helm 查看命令 
$ helm --help

# helm 查看版本
$ helm version  
Helm 操作 Chart 包
# helm 创建一个 chart 包
# 语法: helm create <chart_name>
$ heim create myChart

# helm 增加 chart 仓库:类似 yum 仓库与 docker 仓库: 默认 stable 仓库的名称会被优先使用  
# 语法: helm repo add <store_name> <store_path>
$ helm repo add <store_name> <store_path>

# helm 查询是否有连接仓库 
$ helm repo list

# helm 更新远程仓库 
$ helm repo update 

# helm 移除仓库 
# 语法: helm remove <store_name>
$ helm remove stable

# 搜索远程仓库的 chart 包 (类似docker中搜索镜像)
#语法: helm search repo <chart_name>
$ helm search repo tomcat

# helm 查看 chart 包的格式以及基础信息 
# 语法: helm show chart <chart_name>
$ helm show chart stable/tomcat

# helm 查看 chart 包的详细信息 
# 语法: helm show values <chart_name>
$ helm show values stable/tomcat

# helm 在远程的 chart 仓库中拉取 chart 包
# 拉取 chart 包并解压, --untar 是解压, 不加就是压缩包 (默认拉取最新版本)
$ helm pull <chart_name> --untar

# 从远程仓库拉取指定版本的 chart 包到本地并解压
$ helm pull <chart_name> --version <version_number> --untar
Helm 操作 Release 实例
# **** 安装 **** # 
# helm 安装一个 release 的实例! (指定 release 实例名: myconfigmap、指定 chart 目录: /mychart。)
# 语法: helm install <release_name> <chart_path> 
$ helm install myconfigmap ./mychart/ 

# helm 测试渲染命令(不是真的执行, 只是试运行看能否运行)
# 语法: helm install <release_name> <chart_path> --debug --dry-run

# **** 查找 **** # 
# helm 查找 release 实例列表 
$ helm list

# helm 查看创建 release 实例的详细信息 
# 语法: helm get manifest <release_name>
$ helm get manifest cubeml-frontend

# **** 升级 **** # 
# 升级 release 实例
# 语法: helm upgrade <release_name> .
$ helm upgrade cubeml-frontend .

# **** 回滚 **** # 
# 回滚 release 实例 (默认回滚到上一个版本)
# 语法: helm rollback <release_name> 
$ helm rollback cubeml-frontend

# 回滚 指定到某个 release 版本 
# 语法: helm rollback <release_name> <release_version_number>
$ helm rollback cubeml-frontend 1.1.0

# **** 卸载 **** # 
# 卸载 release 的实例
# 语法: helm uninstall <release_name> 
$ helm uninstall cubeml-frontend 

# **** 历史版本 **** # 
$ helm history cubeml-frontend 
本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和Vue.js前端技术的大学生第二课堂系统,旨在为大学生提供一个便捷、高效的学习和实践平台。项目包含了完整的数据库设计、后端Java代码实现以及前端Vue.js页面展示,适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 在功能方面,系统主要实现了以下几个模块:用户管理、课程管理、活动管理、成绩管理和通知公告。用户管理模块支持学生和教师的注册、登录及权限管理;课程管理模块允许教师上传课程资料、设置课程时间,并由学生进行选课;活动管理模块提供了活动发布、报名和签到功能,鼓励学生参与课外实践活动;成绩管理模块则用于记录和查询学生的课程成绩和活动参与情况;通知公告模块则实时发布学校或班级的最新通知和公告。 技术实现上,后端采用SSM框架进行开发,Spring负责业务逻辑层,SpringMVC处理Web请求,MyBatis进行数据库操作,确保了系统的稳定性和扩展性。前端则使用Vue.js框架,结合Axios进行数据请求,实现了前后端分离,提升了用户体验和开发效率。 该项目不仅提供了完整的源代码和相关文档,还包括了详细的数据库设计文档和项目部署指南,为学习和实践提供了便利。对于基础较好的学习者,可以根据自己的需求在此基础上进行功能扩展和优化,进一步提升自己的技术水平和项目实战能力。
本项目是一个基于SSM(Spring+SpringMVC+MyBatis)后端框架与Vue.js前端框架的个人健康信息管理系统。该项目旨在为个人提供一个便捷、高效的健康信息管理平台,通过该系统,用户可以轻松地记录、查询和分析自己的健康数据。 在技术选型上,后端采用了Spring框架进行依赖注入和事务管理,SpringMVC负责处理Web请求,MyBatis则用于数据库操作,实现了前后端的分离。前端则使用了Vue.js框架,结合Vue Router进行页面路由管理,以及Vuex进行状态管理,确保了用户界面的响应性和交互性。 系统的主要功能包括用户注册与登录、健康数据录入(如身高、体重、血压等)、健康数据查询与分析、健康建议推送等。用户可以通过系统直观地查看自己的健康趋势,并根据系统提供的建议调整生活习惯。 数据库设计方面,系统采用了关系型数据库MySQL,设计了用户表、健康数据表等,确保了数据的完整性和安全性。此外,项目还包含了详细的文档和论文资料,为使用者提供了完整的开发背景和技术实现细节。 对于计算机相关专业的毕设学生而言,该项目不仅提供了一个实际的应用场景,还涵盖了从需求分析到系统实现的完整开发流程,是一个理想的实践平台。对于Java学习者,该项目也是一个很好的实战练习,可以在理解现有代码的基础上,进一步探索和实现更多功能。
`templates` 文件夹是 Helm Chart 的一个必需部分,它包含 Kubernetes 资源的定义模板。在执行 `helm install` 命令时,Helm 将使用这些模板生成 Kubernetes 资源,并将其部署到集群中。 下面是一些常见的 `templates` 文件和它们的作用: - `deployment.yaml`:定义 Kubernetes 部署的模板。您可以在此文件中定义容器镜像、环境变量、卷挂载、资源限制等。 - `service.yaml`:定义 Kubernetes 服务的模板。您可以在此文件中定义服务类型、端口号、负载均衡器类型等。 - `configmap.yaml`:定义 Kubernetes ConfigMap 的模板。您可以在此文件中定义应用程序的配置文件。 - `secret.yaml`:定义 Kubernetes Secret 的模板。您可以在此文件中定义应用程序的敏感信息,例如数据库密码等。 - `ingress.yaml`:定义 Kubernetes Ingress 的模板。您可以在此文件中定义域名、路径、TLS 证书等。 这些只是一些常见的 `templates` 文件,您可以根据您的应用程序和需求定义其他模板。在 `templates` 文件夹中,您可以使用 Helm 的模板语言来动态地生成 Kubernetes 资源。例如,您可以使用以下代码来在 `deployment.yaml` 中定义容器镜像的名称和版本: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-app spec: replicas: {{ .Values.replicaCount }} template: spec: containers: - name: app image: {{ .Values.image.repository }}:{{ .Values.image.tag }} ports: - containerPort: 80 ``` 在这个例子中,我们使用 `{{ .Release.Name }}` 和 `{{ .Values.replicaCount }}` 来生成部署名称和应用程序副本数,使用 `{{ .Values.image.repository }}` 和 `{{ .Values.image.tag }}` 来生成容器镜像的名称和版本号。 注意,如果您在 `templates` 文件夹中定义多个文件,那么每个文件都应该只包含一个 Kubernetes 资源的定义。例如,`deployment.yaml` 文件应该只包含一个 `Deployment` 对象的定义。这是因为 Helm 将会为每个文件生成一个 Kubernetes 资源,如果一个文件中包含多个资源定义,可能会导致部署失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值