监听Helm release资源

Helm实战手册:生产级Chart构建、调试与CI/CD工作流 Helm是Kubernetes生态中实现配置参数化、应用声明式交付与版本化生命周期管理的核心工具。其本质并非简单打包,而是通过Go模板引擎将values.yaml中的键值对动态注入YAML资源清单,实现多环境(开发/测试/生产)的差异化部署。技术价值在于统一抽象基础设施差异、保障Release级原子操作、支持OCI制品签名与校验,从而提升云原生交付的可重复性、可审计性与回滚能力。典型应用场景包括微服务多环境配置管理、Redis/MySQL等中间件对接、Ingress路由策略编排,以及与GitOps流水线深度 阅读详情

监听Helm release资源

基于helm做部署管理工具时,可能想要管理用户已有环境,这时需要将已有环境中的release信息上报到业务系统中。当用户在环境中部署新的release时,也需要实时监听并上报回来。下面将讲解如何去监听release资源

helm release存储源码分析

查看helm install源码,在helm/pkg/action/install.go中的run方法会执行实际的release安装
在这里插入图片描述
在install.run()方法中首先通过install.createRelease()方法创建release,然后在解析组装完chart模版中资源文件后,通过storage.Storage的Create方法将release信息进行存储,实际使用的是driver.Driver的Create方法进行release信息的存储。driver.Driver有三种存储实现,在helm2中默认使用ConfigMaps;在helm3中默认使用Secrets;也可以使用内存存储即通过map存储
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
无论存储到K8s的ConfigMaps还是Secrets或者内存map中,其资源名称或者map的key的命名规则满足:sh.helm.release.v1.<release的名称>.<release的版本>
在这里插入图片描述

如何监听

监听K8s中的CRD资源一种方式是通过资源的Watch方法监听,类似如下方式

func (c *Client) WaitAndGetCompletedPodPhase(name string, timeout time.Duration) (v1.PodPhase, error) {
	client, _ := c.Factory.KubernetesClientSet()
	to := int64(timeout)
	watcher, err := client.CoreV1().Pods(c.namespace()).Watch(metav1.ListOptions{
		FieldSelector:  fmt.Sprintf("metadata.name=%s", name),
		TimeoutSeconds: &to,
	})

	for event := range watcher.ResultChan() {
		p, ok := event.Object.(*v1.Pod)
		if !ok {
			return v1.PodUnknown, fmt.Errorf("%s not a pod", name)
		}
		switch p.Status.Phase {
		case v1.PodFailed:
			return v1.PodFailed, nil
		case v1.PodSucceeded:
			return v1.PodSucceeded, nil
		}
	}

	return v1.PodUnknown, err
}
  • 所有K8s的资源都会存储在etcd中,当客户端通过APIServer操作资源时,会将资源存储在etcd中,而etcd在存储信息时会发送事件到APIServer。当APIServer接收到创建pod资源事件后,会将事件发给其他监听pod资源的监听器,这样我们也能监听到pod的变化做出响应的处理

另一中方式是使用operator-sdk,这种方式其实也是借助于K8s中CRD资源的Watch方法,但使用operator-sdk监听资源代码结构会更好,便于统一控制,而且当处理失败后还能重新接到事件继续处理,直到成功。具体使用方式可以参考官网

在这里我们要监听release信息可以通过监听ConfigMaps、Secrets资源,判断其名称是否是以sh.helm.release.v1.开头,如果是则认为是helm release发生变化,通过解析出的release名称和命名空间名称,可以使用helm go客户端获取到release的详细信息,将这些release信息处理后上报到业务系统,release的所有信息包括参数、其下各种资源详细都能获取并上报

但对于使用内存map存储的release资源无法监听处理,因为其是从当前执行的helm客户端中获取,两个helm客户端是不能共享其内存中的map缓存的

Helm 2深度解析:Tiller架构、安全部署与企业级运维实践 Helm 是 Kubernetes 生态中面向应用交付的包管理工具,其核心价值在于将复杂 YAML 集合封装为可版本化、可复用、可审计的声明式应用包(Chart)。它通过模板渲染、参数化配置与发布生命周期管理,解决了多环境一致性部署难题。Helm 2 的关键创新在于引入 Tiller 服务端组件——一个运行于集群内的、带状态的原生控制器,实现权限隔离、操作留痕与原子回滚。尽管 Helm 3 已取代其成为主流,但大量金融、政企私有云场景仍深度依赖 Helm 2 的中心化代理模型与成熟 Chart 生态。本文聚 阅读详情

相关推荐

Helm 3:Kubernetes 生产级应用交付的声明式标准

在 Kubernetes 中,'部署应用'本质上是将多资源 YAML 声明式地提交至集群的过程,其核心挑战在于配置管理、环境差异化、版本控制与安全审计。Helm 3 作为当前主流的包管理器,通过纯客户端架构、Chart(可参数化模板包)、Release(带版本快照的原子部署单元)三大机制,实现了对最小权限原则和声明式 API 的深度适配。它将零散 YAML 升级为可复用、可签名、可验证的软件交付单元,支撑 DevOps 流水线、GitOps 实践与多租户隔离。尤其在微服务治理、中间件标准化部署及生产环境回滚

weixin_30791095的博客 498

使用helm部署release到kubernetes

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33670713的博客 1894

Helm 3深度解析:Kubernetes应用交付的声明式革命

Helm 是 Kubernetes 生态中核心的包管理器,它将分布式应用部署从手工 YAML 拼凑升级为可复现、可审计、可回滚的声明式交付范式。其原理基于模板化 Chart、RBAC 驱动的客户端直连架构,以及以 Secret 存储 release 状态的安全机制。技术价值体现在显著提升部署稳定性、权限收敛性与调试透明度,广泛应用于微服务治理、监控栈(如 kube-prometheus-stack)及 GitOps 流水线。本文聚焦 Helm 3 架构演进与生产级实践,深入解析 Tiller 移除、OCI

dixi7825的博客 459

Helm3入门

Chart是Helm的包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。可视作Yum RPM 在Kubernetes 中的等价物。

qq522044637的博客 3339

【Claude Code】Claude Code 使用指南

本文介绍了AI编码助手Claude的基础和进阶操作指南。基础部分涵盖启动命令、模式切换(自动编辑/Plan/Yolo模式)、资源监控等核心功能,重点讲解了斜杠命令的使用方法。进阶操作详细说明了CLAUDE.md文件的创建与管理,包括项目规范、代码风格等内容的配置,以及如何通过该文件建立持久上下文。同时提醒了使用过程中的安全风险,建议通过配置文件限制AI对关键代码的访问权限。全文提供了完整的操作指引和安全建议,帮助开发者高效安全地使用Claude进行编码辅助。

大家好,我是敖云岚,一个沉迷代码的 “技术玩家”。擅长 Java、C++ 开发,对 MySQL、Redis、RabbitMQ 等技术也颇有研究。博客里既有硬核技术干货,也有诙谐幽默的编程日常分享。愿和你一起,笑着学技术,快乐敲代码! 1万+

VBA常见错误 - “错误3706,未找到提供程序,该程序可能未正确安装”解决方法

1、问题描述 在利用VBA编程时,引用其它表格数据,出现以下问题: (1)运行“错误3706,未找到提供程序,该程序可能未正确安装”。 (2)引用数据失败 2、解决方法 下载“Access 2010 数据库引擎”,并安装即可。 https://www.microsoft.com/en-us/download/details.aspx?id=54920 AccessDatabaseEngine 2010 官方安装包,官网下载不了的可以来这里下载。(1)运行“错误3706,未找到提..

Nemuel的博客 3万+

简化Kubernetes应用部署工具-Helm之Release配置

本文讲的是简化Kubernetes应用部署工具-Helm之Release配置【编者的话】微服务和容器化给复杂应用部署与管理带来了极大的挑战。Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的apt-get / yum,由Deis 公司发起,该公司已经被微软收购。He...

weixin_34310369的博客 1801

APM 飞行模式切换--源码详解

APM飞控中有很多种方式可以改变飞行模式。其中最常见的为遥控器切换和地面站切换两种方式。 下面以遥控器切换为例详解飞行模式切换逻辑。 APM遥控器切换飞行模式的源代码在RC_Channel.cpp文件中的RC_Channel_Copter::do_aux_function_change_mode()函数中。 const bool success = copter.set_mode()调用Copter::set_mode()函数,在set_mode()函数中调用mode_fro...

qq_30623591的博客 2440

k8s学习笔记--helm安装

初识helm   helm本质就是让k8s的应用管理(Deployment,Service等)可配置,能动态生成。通过动态生成k8s资源清单文件(deployment.yaml, service.yaml)。然后调用kubectl自动执行k8s资源部署。是由官方提供的类似于yum的包管理器,是部署环境的流程封装。Helm有两个重要概念:chart和release: chart是创建一个应用的信息集合,包括各种kubernetes对象的配置模板,参数定义,依赖关系,文档说明等,chart是应用部署的自包含逻

weixin_37703162的博客 811

倍福Beckhoff运动控制功能块实战解析:从MC_ReadActualPosition到MC_GearInVelo

本文深入解析倍福(Beckhoff)TwinCAT运动控制功能块,从基础的MC_ReadActualPosition、MC_Power等轴状态读取与使能操作,到MC_MoveAbsolute、MC_MoveRelative等单轴定位指令,并重点剖析了用于动态速度同步的核心功能块MC_GearInVelo在飞锯等场景的应用。文章结合实战经验,详细介绍了齿轮耦合、电子凸轮(MC_CamIn)等高级同步功能的参数配置、调试技巧及常见问题,旨在帮助工程师快速掌握倍福运动控制工具箱,实现复杂的同步工艺。

transformer2023的博客 984

VSCode里玩转AvaloniaUI:手把手教你搭建跨平台桌面应用开发环境(附.NET 7配置避坑)

本文详细介绍了如何在VSCode中搭建AvaloniaUI跨平台桌面应用开发环境,包括.NET 7配置避坑指南。从环境准备、项目创建到调试优化,手把手教你利用VSCode和Avalonia实现高效开发,特别解决了.NET 7依赖等常见问题,助力开发者快速上手跨平台应用开发。

weixin_28826545的博客 578

推荐开源项目:Helm Operator - 应对Kubernetes的Helm部署神器

在Kubernetes生态系统中,Helm成为了管理应用包和简化部署流程的关键工具。而当我们谈论如何更智能地利用Helm时,就不得不提到这个名为[Helm Operator](https://github.com/fluxcd/helm-operator)的开源项目。虽然它已进入维护阶段,但其功能强大,对于仍在使用Flux v1的用户来说依然极具价值。 ## 项目介绍 Helm Operato

gitblog_00018的博客 660

3D医学影像分割实战:从数据预处理到模型训练全流程解析

本文详细解析了3D医学影像分割的全流程,从数据预处理到模型训练,重点介绍了nnUNet框架的应用技巧。通过实战案例,帮助开发者掌握如何处理复杂的.nii.gz文件格式、优化数据预处理流程以及高效训练3D分割模型,特别适合医学影像分析领域的从业者参考。

weixin_29098367的博客 223

如何快速认识 Helm Operator:Kubernetes 声明式 GitOps 管理 Helm Release 的完整指南

**Helm Operator** 是 Flux 项目下的一个 Kubernetes 控制器,用声明式的 GitOps 方式管理 Helm Release:你只需要在集群里声明一个 `HelmRelease` 资源,它就会自动完成 Helm 图表的拉取、安装、升级和回滚,并持续将集群状态与声明保持同步。本指南带你快速认识它的核心概念、安装步骤与关键能力。 > ⚠️ **版本提示**:Helm O

gitblog_00111的博客 158

CANbus收发器ADM3053BRWZ-REEL7应用原理图设计

ADM3053 在 CAN 协议控制器与物理层总线之间创建一个 完全隔离的接口。该器件具有限流和热关断特性,可防止输出短路。额定温 度范围为工业温度范围,提供 20 引脚、宽体 SOIC 封装。该器件采用 5 V 单电源供电, 提供完全隔离的 CAN 解决方案。ADM3053 是一款隔离式控制器区域网络 (CAN) 物理层收 发器,集成隔离 DC/DC 转换器,符合 ISO 11898 标准。该器件采用 ADI 公司的。Coupler® 技术,将双通道隔离器、 CAN 收发器和 ADI 公司的。

zhusl6688的博客 1246

Yocto系列讲解[入门篇] 1 - 快速入门熟悉Yocto的构建

yocto quick start up带大家快速上手

fulinux的博客 5万+

K8s包管理工具-helm:helm安装

每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器。

TaxiH_的博客 1246

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

升级失败自动回滚:Helm Operator rollback 与 retry 重试策略完全指南

Helm Operator(Flux Helm Operator)是一款 Kubernetes 声明式 Helm 发布管理 Operator,它根据 `HelmRelease` 自定义资源自动完成 Helm release 的安装、升级与同步。这篇指南带你完整掌握 **Helm Operator 升级失败自动回滚(rollback)与重试(retry)** 策略:只需几行配置,就能让 Operat

gitblog_00490的博客 949

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

k8s,helm命令详解

基础运维手册 1、kubernetes运维手册 1.1 整体介绍 1.2 架构描述 1.3 交互逻辑 1.4 kubernetes常用操作 一、查看帮助和集群基础信息 二、获取资源情况 三、资源扩缩容 四、更新资源 五、删除资源 六、对节点的操作 七、与运行中的 Pod 交互 1.5 kubernetes使用问题排查 1.6 kubernetes环境故障排查 2、helm运维手册 2.1 整体介绍 2.2 架构描述 2.3 交互逻辑

weixin_46941625的博客 2541

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【云原生--Kubernetes】Helm 工具安装

在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment、svc 等,步骤较繁琐。况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm 通过打包的方式,支持发布的版本管理和控制, 很大程度上简化了 Kubernetes 应用的部署和管理。Helm 本质就是让 K8s 的应用管理(Deployment、Service 等)可配置,可以通过类似于传递环境变量的方式能动态生成。

夏颜的博客 2031

helm安装mysql_Helm安装部署

1.为什么要用Helm?首先在原来项目中都是基于yaml文件来进行部署发布的,而目前项目大部分微服务化或者模块化,会分成很多个组件来部署,每个组件可能对应一个deployment.yaml,一个service.yaml,一个Ingress.yaml还可能存在各种依赖关系,这样一个项目如果有5个组件,很可能就有15个不同的yaml文件,这些yaml分散存放,如果某天进行项目恢复的话,很难知道部署顺序...

weixin_31681589的博客 1479

K8S中Helm

前言 在我们yum管理工具,主要解决的是包之间的依赖问题,而我们的helm工具是安装服务的问题,在我们的k8s中的包管理工具helm,它可以通过一些仓库去下载一些我们想要yalm文件,我们去修改这些yalm文件对应的属性就可以安装对应我们想要的系统信息。 一、Helm 概述 1、Helm 简介 Helm是kubernetes生态系统中的一个软件包管理工具,类似ubuntu的apt,centos的...

mcl914的博客 637

K8s应用部署工具-Helm

微服务和容器化给复杂应用部署与管理带来了极大的挑战。Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的apt-get / yum,由Deis 公司发起,该公司已经被微软收购。Helm通过软件打包的形式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用部署和管理的复杂性。 随着业务容器化与向...

yangbosos的博客 1062

Helm Dashboard 实战指南:简化K8s Helm Chart管理的可视化利器

本文提供了Helm Dashboard的实战指南,这是一款专为Kubernetes设计的可视化工具,旨在简化Helm Chart的日常管理。文章详细介绍了其核心功能,包括一键安装、全景视图、版本历史对比、关联资源穿透查看以及安全升级回滚操作,并分享了多集群管理、安全扫描集成等进阶技巧与生产环境优化建议,帮助用户显著提升Helm运维效率与安全性。

weixin_28829629的博客 260

给Jenkins Helm Chart项目贡献代码:Tilt本地开发、helm-unittest测试与CI流程完整指南

Jenkins Helm Chart 项目(Jenkins 社区官方 Helm chart 仓库)是 Kubernetes 上部署 Jenkins 的标准方式。本指南带你走完 Jenkins chart 开发全流程:用 Tilt 一键本地调试、用 helm-unittest 跑 214 个单元测试、并看懂 PR 背后的 CI 检查与自动发布机制——这是给 Jenkins Helm Chart 贡献

gitblog_01159的博客 792
上一篇: 客户端发现pod并与之通信
下一篇: springboot + mybatis支持多数据库
炒栗子不加糖
博客等级 码龄10年 68粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值