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

Operator开发之operator-sdk入门

1 operator-sdk

除了kubebuilder,operator-sdk是另一个常用的用于开发Operator的框架,不过operator-sdk还是基于kubebuilder,因此,通常还是建议使用kubebuilder开发Operator。

2 环境准备

跟kubebuilder类似,需要安装golang、operator-sdk。

在Operator SDK下载对应环境的二进制,例如,x86环境一般下载operator-sdk_linux_amd64,然后重命名为operator-sdk,拷贝到/usr/local/bin/目录。

3 Operator Demo

这里采用跟kubebuilder一样的例子讲解operator-sdk的开发流程:开发的是一个类似ReplicaSet的资源,它会负责创建一定数量的Pod。

3.1 初始化项目
operator-sdk init --domain tutorial.kubebuilder.io --repo github.com/demo

上面的命令跟kubebuilder唯一的区别就是把kubebuilder命令换成了operator-sdk。

生成的目录结构跟kubebuilder的区别在于:

  • kubebuilder的main.go在cmd目录,而operator-sdk的main.go在根路径
  • operator-sdk的config目录下多了manifests目录和scorecard目录
3.2 创建API
operator-sdk create api --group batch --version v1 --kind Demo

与kubebuilder生成的文件的唯一的区别就是控制器所在的路径,kubebuilder是在internal/controller,而operator-sdk则将控制器代码放在controllers目录,代码是一样的,而且demo_types.go也是一样的,因此,完全可以直接将kubebuilder中的代码直接拷贝到operator-sdk中。因此,这里直接进入测试阶段。

3.3 部署测试

operator-sdk和kubebuilder的make help也没有太大区别,只是operator-sdk加了一些构建命令,里面还涉及到bundle和catalog image。

因此,也可以用同样的方式在本地进行测试:

  • 生成CRD和RBAC:make manifests
  • 为Demo资源重新生成zz_generated.deepcopy.go:make generate
  • 在k8s中创建CRD:make install
  • 本地运行Controller:make run

4 kubebuilder vs operator-sdk

从上面的operator-sdk的使用看,基本跟kubebuilder没有区别,那operator-sdk到底有啥优势呢?或者说,既然operator-sdk基于kubebuilder,那肯定有很多kubebuilder没有的功能。

kubebuilder是基于controller-runtime开发的operator开发库,而operator-sdk在kubebuilder上增加了很多用于实践的工具:

  • 执行operator-sdk help时可以看到有很多插件,每种插件就对应一种项目类型,里面比较熟悉的可能就是ansible、kubebuilder、helm,也就是说,通过operator-sdk创建项目时不仅可以创建基于kubebuilder的项目,还可以创建基于ansible和helm的项目,这两种方式基本不需要用golang就可以开发operator
  • operator-sdk集成了OLM,它可以管理集群中的operator,当安装OperatorHub上的operator时,就需要先安装OLM

以上两点应该是operator-sdk和kubebuilder的比较大的区别。

5 参考文档

  • RedHat 开发Operator

相关文章:

Operator开发之operator-sdk入门

1 operator-sdk 除了kubebuilder,operator-sdk是另一个常用的用于开发Operator的框架,不过operator-sdk还是基于kubebuilder,因此,通常还是建议使用kubebuilder开发Operator。 2 环境准备 跟kubebuilder类似,需要安…...

RabbitMQ生产者的可靠性

目录 MQ使用时会出现的问题 生产者的可靠性 1、生产者重连 2、生产者确认 3、数据持久化 交换机持久化 队列持久化 消息持久化 LazyQueue懒加载 MQ使用时会出现的问题 发送消息时丢失: 生产者发送消息时连接MQ失败生产者发送消息到达MQ后未找到Exchange生…...

集群节点批量执行 shell 命令

1、SSH 工具本身支持多窗口 比如 MobaXterm: 2、编写脚本通过 ssh 在多台机器批量执行shell命令 创建 ssh_hosts 配置文件,定义需要批量执行的节点(必须能够通过 ssh 免密登录,且存在同名用户) vim ssh_hostsbig…...

fl studio21.2水果软件怎么设置中文?

FL Studio编曲软件真的是个神器,不过一开始打开看到全是英文,有点头大,对吧?其实切换成中文版超级简单,只需要几个步骤就搞定啦!我自己也是用中文版的,觉得用起来更得心应手,效率也提…...

.NET CORE 3.1 集成JWT鉴权和授权2

JWT:全称是JSON Web Token是目前最流行的跨域身份验证、分布式登录、单点登录等解决方案。 通俗地来讲,JWT是能代表用户身份的令牌,可以使用JWT令牌在api接口中校验用户的身份以确认用户是否有访问api的权限。 授权:这是使用JWT的…...

nbcio-boot如何进行gitee第三方登录

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio-vue.git 在线演示(包括H5) : http://122.227.135.243:9888 1、用户g…...

【C语言】字符函数、字符串函数与内存函数

简单不先于复杂,而是在复杂之后。 目录 0. 前言 1. 函数介绍 1.1 strlen 1.1.1 介绍 1.1.2 strlen 函数模拟实现 1.1.2.1 计数器方法 1.1.2.2 递归方法 1.1.2.3 指针 - 指针方法 1.2 strcpy 1.2.1 介绍 1.2.2 strcpy 函数模拟实现 1.3 strcat 1…...

生成树协议:监控 STP 端口和交换机

什么是生成树协议 生成树协议 (STP) 用于网络交换机,以防止循环和广播风暴。在局域网 (LAN) 中,两条或多条冗余路径可以连接到同一网段。当交换机或网桥从所有可用端口传输帧时,这些帧开始在网…...

【黑产攻防道03】利用JS参数更新检测黑产的协议破解

任何业务在运营一段时间之后都会面临黑产大量的破解。验证码和各种爬虫的关系就像猫和老鼠一样, 会永远持续地进行博弈。极验根据十一年和黑产博弈对抗的经验,将黑产的破解方式分为三类: 1.通过识别出验证码图片答案实现批量破解验证,即图片…...

什么是web3.0?

Web 3.0,也常被称为下一代互联网,代表着互联网的下一个重大演变。尽管关于Web 3.0的确切定义尚无共识,但它通常被认为是一种更分散、更开放且更智能的互联网。 以下是Web 3.0的一些主要特征和概念: 1. 去中心化 Web 3.0旨在减少…...

二、W5100S/W5500+RP2040树莓派Pico<DHCP>

文章目录 1 前言2 简介2 .1 什么是DHCP?2.2 为什么要使用DHCP?2.3 DHCP工作原理2.4 DHCP应用场景 3 WIZnet以太网芯片4 DHCP网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 …...

【开源】基于SpringBoot的天然气工程业务管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程物资…...

讯飞星火大模型V3.0 WebApi使用

讯飞星火大模型V3.0 WebApi使用 文档说明:星火认知大模型Web文档 | 讯飞开放平台文档中心 (xfyun.cn) 实现效果 初始化 首先构建一个基础脚手架项目 npm init vuelatest用到如下依赖 "dependencies": {"crypto-js": "^4.2.0",&q…...

拥有DOM力量的你究竟可以干什么

如果你希望访问 HTML 页面中的任何元素&#xff0c;那么您总是从访问 document 对象开始&#xff01; 查找HTML元素 document.getElementById(id) 通过元素 id 来查找元素 <!DOCTYPE html> <html> <head><meta charset…...

GnuTLS recv error (-110): The TLS connection was non-properly terminated

ubuntu git下载提示 GnuTLS recv error (-110): The TLS connection was non-properly terminated解决方法 git config --global --unset http.https://github.com.proxy...

Notepad++安装插件和配置快捷键

Notepad是一款轻量级、开源的文件编辑工具&#xff0c;可以编辑、浏览文本文件、二进制文件、.cpp、.java、*.cs等文件。Notepad每隔1个月&#xff0c;就有一个新版本&#xff0c;其官网是&#xff1a; https://github.com/notepad-plus-plus/notepad-plus-plus。这里介绍其插件…...

iOS Autolayout 约束设置【顺序】的重要性!

0x00 顺序不同&#xff0c;结果不同 看图说话 1 代码是这样滴~ 设置好约束&#xff0c;让 4 个按钮&#xff0c;宽度均分~ 结果如上图 [_pastButton.topAnchor constraintEqualToAnchor:_textView.bottomAnchor constant:6].active YES;[_pastButton.leftAnchor constraintEq…...

Echarts渲染不报错但是没有内容

&#x1f525;博客主页&#xff1a; 破浪前进 &#x1f516;系列专栏&#xff1a; Vue、React、PHP ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 问题&#xff1a;在开发项目的时候使用了Echarts但是好端端的忽然就不渲染了 感觉很无语啊&#xff0c;毕竟好好的就不渲染了&am…...

数据结构 | 算法的时间复杂度和空间复杂度【详解】

数据结构 | 算法的时间复杂度和空间复杂度【详解】 1. 什么是数据结构&#xff1f; 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。 2. 什么是算法&#xff1f; 算法(Algorithm):就是定义良好的计算过…...

高级篇之ENC编码器多机位帧同步配置详解

高级篇之ENC编码器多机位帧同步配置详解 一 帧同步方案多样性1. 配合vMIX导播的帧同步方案3. 配合硬件导播的帧同步方案3. 配合芯象导播的帧同步 二 帧同步方案1实现步骤1. 准备设备2. 搭建环境3 配置设备3.1 配置固定机位3.2 配置帧同步转发端3.3 配置vMIX 三 效果对比1 不开帧…...

IPXWrapper完整教程:让经典游戏在现代Windows系统重获联机能力

IPXWrapper完整教程&#xff1a;让经典游戏在现代Windows系统重获联机能力 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 你是否怀念《星际争霸》《帝国时代》《红色警戒2》等经典游戏的局域网对战乐趣&#xff1f;在现代Windo…...

Taotoken 用量看板如何帮助个人开发者管理月度成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken 用量看板如何帮助个人开发者管理月度成本 对于独立开发者而言&#xff0c;在项目开发中调用多个大模型 API 时&#xff0…...

跟着 MDN 学CSS day_12 :(值与单位的技能测试与深入理解)

在学习 CSS 的过程中&#xff0c;值与单位是决定样式精确性和灵活性的关键知识。颜色值怎么写、字体大小用 px 还是 em、背景图怎么定位&#xff0c;这些看似基础的问题&#xff0c;实际上直接影响到页面的可维护性、响应式表现和视觉效果。MDN 的"Test your skills: Valu…...

论文党速看!2026实测靠谱的一键生成论文工具|实测必入避坑版

2026 年学术写作工具已高度分化&#xff0c;千笔AI与ThouPen为全流程首选&#xff0c;豆包、DeepSeek 为专项强手&#xff1b;避坑关键&#xff1a;拒绝假文献、严控 AIGC 率、优先国内适配、免费试用先行。 一、TOP3 全流程首选&#xff08;亲测不踩雷&#xff09; 1. 千笔AI&…...

从‘拍脑袋’到‘有章法’:用Python实战Embedded与Wrapper方法,为你的模型精准选特征

从‘拍脑袋’到‘有章法’&#xff1a;Python实战Embedded与Wrapper方法的高阶特征选择指南在金融风控和医疗诊断这类对模型精度要求严苛的领域&#xff0c;数据科学家们常常面临这样的困境&#xff1a;当特征数量膨胀到数百甚至上千维时&#xff0c;盲目依赖过滤法选特征就像在…...

会计学论文降AI工具免费推荐:2026年会计学研究生毕业论文降AI4.8元达标知网完整指南

会计学论文降AI工具免费推荐&#xff1a;2026年会计学研究生毕业论文降AI4.8元达标知网完整指南 整理了一份会计学论文降AI的完整选购指南&#xff0c;按性价比排序。 首推嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;&#xff0c;4.8元&#xff0c;99.26%达标率&…...

5步掌握LyricsX:macOS平台歌词同步的终极解决方案

5步掌握LyricsX&#xff1a;macOS平台歌词同步的终极解决方案 【免费下载链接】LyricsX &#x1f3b6; Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 在macOS生态系统中&#xff0c;LyricsX作为一款开源歌词同步工具&#xff0…...

ide-eval-resetter深度解析:JetBrains IDE试用期管理架构揭秘

ide-eval-resetter深度解析&#xff1a;JetBrains IDE试用期管理架构揭秘 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter ide-eval-resetter作为JetBrains IDE试用期重置的专业工具&#xff0c;通过分布式评估数据…...

Axure RP 多版本本地化引擎:高性能界面翻译架构解析与部署指南

Axure RP 多版本本地化引擎&#xff1a;高性能界面翻译架构解析与部署指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn Axure…...

【Gemini重大Bug修复公告】:20年Google AI架构师亲述3个致命漏洞及72小时紧急修复全过程

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini重大Bug修复公告 近日&#xff0c;Google 工程团队紧急发布 Gemini API v0.5.3 补丁版本&#xff0c;修复了一个影响多模态推理一致性的高危竞态条件&#xff08;Race Condition&#xff09;Bug。…...