监听Helm release资源

监听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, nilcase 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缓存的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边写代码边学习之TF Attention

1. Attention 背景介绍 通常注意力机制可以使得网络资源集中到某几个需要关注的部分上&#xff0c;和有选择性的弱化对网络结果不重要的部分。网络的注意力机制来源于人的视觉注意力&#xff0c;因为人的精力有限&#xff0c;不能注意到所有的细节&#xff0c;而是有选择性的弱…

前端Vue自定义得分构成水平柱形图组件 可用于系统专业门类得分评估分析

引入Vue自定义得分构成水平柱形图组件&#xff1a;cc-horBarChart 随着技术的发展&#xff0c;传统的开发方式使得系统的复杂度越来越高&#xff0c;一个小小的改动或小功能的增加可能会导致整体逻辑的修改&#xff0c;造成牵一发而动全身的情况。为了解决这个问题&#xff0c…

当AI遇到IoT:开启智能生活的无限可能

文章目录 1. AI和IoT的融合1.1 什么是人工智能&#xff08;AI&#xff09;&#xff1f;1.2 什么是物联网&#xff08;IoT&#xff09;&#xff1f;1.3 AI和IoT的融合 2. 智能家居2.1 智能家居安全2.2 智能家居自动化 3. 医疗保健3.1 远程监护3.2 个性化医疗 4. 智能交通4.1 交通…

c高级 day2

写一个1.sh脚本&#xff0c;将以下内容放到脚本中:在家目录下创建目录文件&#xff0c;dir 在dir下创建dir1和dir2 把当前目录下的所有文件拷贝到dir1中&#xff0c;把当前目录下的所有脚本文件拷贝到dir2中把dir2打包并压缩为dir2.tar.xz 再把dir2.tar.xz移动到dir1中解压d…

华为云云服务器评测|华为云耀云L搭建zerotier服务测试

0. 环境 - Win10 - 云耀云L服务器 1. 安装docker 检查yum源&#xff0c;本EulerOS的源在这里&#xff1a; cd /etc/yum.repos.d 更新源 yum makecache 安装 yum install -y docker-engine 运行测试 docker run hello-world 2. 运行docker镜像 默认配…

软件架构设计(四) 基于服务的架构(SOA)

前面我们了解到了层次架构中表示层的架构分层,分为了MVC,MVP,MVVM等架构风格,下面我们了解一下SOA架构与微服务架构。 什么是服务? 服务是一种为了满足某项业务需求的操作,规则等的逻辑组合,它包含了一系列有序活动的交互,为实现用户目标提供支持。 SOA的起源 前面…

Windows Server 系统各版本及授权说明(附下载地址

本文为Windows Server系统各版本差异对比及授权说明。 会对相关目前仍主流使用的相关Windows Server系统版本和相关授权进行对比和功能说明。 WindowsServer2012 R2 Windows Server 2012 R2授权方式是按照物理CPU数量进行授权&#xff0c;比如物理服务器CPU插槽数量2&#xff…

部署Django报错-requires SQLite 3.8.3 or higher

记一次CentOS7部署Django项目时的报错 问题出现 在部署测试环境时&#xff0c;有需要用到一个python的后端服务&#xff0c;要部署到测试环境中去 心想这不是so easy吗&#xff0c;把本地调试时使用的python版本及Django版本在服务器上对应下载好&#xff0c;然后直接执行命…

1065 A+B and C (64bit)

题&#xff1a;点我 题目大意&#xff1a; 这题虽然看着像签到&#xff0c;然鹅签不过去。 因为我最初写的沙雕代码是&#xff1a; #include<iostream> #include<cstdio> using namespace std; int main(void) {int t;scanf("%d", &t);for (int i …

【云计算网络安全】解析DDoS攻击:工作原理、识别和防御策略 | 文末送书

文章目录 一、前言二、什么是 DDoS 攻击&#xff1f;三、DDoS 攻击的工作原理四、如何识别 DDoS 攻击五、常见的 DDoS 攻击有哪几类&#xff1f;5.1 应用程序层攻击5.1.1 攻击目标5.1.2 应用程序层攻击示例5.1.3 HTTP 洪水 5.2 协议攻击5.2.1 攻击目标5.2.2 协议攻击示例5.2.3 …

IDEA中Run/Debug Configurations添加VM options和Program arguments

1. 现象描述 我在我的IDEA当中打开配置模板后&#xff0c;发现没有VM options和Program arguments&#xff0c;也就是虚拟机选项和程序实参这两项&#xff0c;导致我不能配置系统属性参数和命令行参数&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff0…

最强的AI视频去码图片修复模型:CodeFormer

目录 1 CodeFormer介绍 1.1 CodeFormer解决的问题 1.2 人脸复原的挑战 1.3 方法动机 1.4 模型实现 1.5 实验结果 2 CodeFormer部署与运行 2.1 conda环境安装 2.2 运行环境构建 2.3 模型下载 2.4 运行 2.4.1 人脸复原 ​编辑​编辑 2.4.2 全图片增强 2.4.3 人脸颜色…

Android逆向学习(二)vscode进行双开与图标修改

Android逆向学习&#xff08;二&#xff09;vscode进行双开与图标修改 写在前面 这其实应该还是吾爱的第一个作业&#xff0c;但是写完上一个博客的时候已经比较晚了&#xff0c;如果继续敲机械键盘吵到室友&#xff0c;我怕我看不到明天的太阳&#xff0c;所以我决定分成两篇…

类ChatGPT大模型LLaMA及其微调模型

1.LLaMA LLaMA的模型架构:RMSNorm/SwiGLU/RoPE/Transfor mer/1-1.4T tokens 1.1对transformer子层的输入归一化 对每个transformer子层的输入使用RMSNorm进行归一化&#xff0c;计算如下&#xff1a; 1.2使用SwiGLU替换ReLU 【Relu激活函数】Relu(x) max(0,x) 。 【GLU激…

Unity ProBuilder(自己创建斜面、拐角)

目录 基础操作 下载 打开面板 新增对象 材质保存 1.斜面实例 2.拐角实例 3.切割实例 4.单独面赋值 基础操作 下载 打开面板 新增对象 选中想创建的块体后&#xff0c;在编辑器见面拉出块体 材质保存 打开材质编辑器后&#xff0c;将材质赋值&#xff0c;之后&am…

【开发】视频云存储/安防监控/AI分析/视频AI智能分析网关:垃圾满溢算法

随着我国科技的发展和城市化进程加快&#xff0c;大家对于生活环境以及空气质量更加重视&#xff0c;要求越来越严格。城市街道垃圾以及生活区垃圾满溢已经成为城市之痛。乱扔垃圾&#xff0c;垃圾不入桶这些行为已经严重影响到了城市的美化问题。特别是炎热的夏日和雨水季节&a…

在iPhone上构建自定义数据采集完整指南

在iPhone上构建自定义数据采集工具可以帮助我们更好地满足特定需求&#xff0c;提高数据采集的灵活性和准确性。本文将为您提供一份完整的指南和示例代码&#xff0c;教您如何在iPhone上构建自定义数据采集工具。 自定义数据采集工具的核心组件 a、数据模型 数据模型是数据采…

开开心心带你学习MySQL数据库之第六篇上

​ &#x1f4ae; &#x1f4ae;&#x1f4ae; 只要路是对的&#xff0c;就不害怕遥远! &#x1f4ae; &#x1f4ae;&#x1f4ae; &#x1f386;&#x1f386;&#x1f386;窗台是风景&#xff0c;笔下有前途&#xff0c;低头是题海&#xff0c;抬头是未来&#x1f386;&…

【BI看板】Superset时间过滤控件二次开发

有没有人发觉Superset时间过滤组件非常高级&#xff0c;&#x1f61f;但又有点复杂&#xff0c;没有选择时间区间的快捷方式。 Superset的时间过滤控件可以通过在代码中进行二次开发来进行定制。以下是一些可能有用的提示&#xff1a; 查找源代码&#xff1a;可以在Superset的源…

Redis之bigkey问题解读

目录 什么是bigkey&#xff1f; bigkey引发的问题 如何查找bigkey redis-cli --bigkeys MEMORY USAGE bigKey如何删除 渐进式删除 unlink bigKey生产调优 什么是bigkey&#xff1f; bigkey简单来说就是存储本身的key值空间太大&#xff0c;或者hash&#xff0c;list&…