Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubebuilder介绍:使用CRD构建Kubernetes API的SDK

Kubebuilder介绍:使用CRD构建Kubernetes API的SDK

作者头像
CNCF
发布于 2019-12-04 09:05:08
发布于 2019-12-04 09:05:08
1.4K0
举报
文章被收录于专栏:CNCFCNCF

Kubebuilder介绍:使用CRD构建Kubernetes APISDK

作者:Phillip Wittrock(谷歌),Sunil Arora(谷歌)

我们如何才能让MySQLSparkCassandra这样的应用程序来管理自己,就像Kubernetes Deployments和Pods一样?我们如何配置这些应用程序为自己的第一类API,而不是StatefulSets、Services和ConfigMaps的集合?

我们一直致力于这个问题的解决方案,并很高兴推出kubebuilder。这是一个全面的开发工具包,使用CRD快速构建和发布Kubernetes API和控制器。Kubebuilder支持项目和API定义,基于controller-runtime库构建。

为什么使用Kubebuilder和Kubernetes API?

应用程序和群集资源通常需要一些操作,无论是使用新副本替换失败的副本,还是在重新分析数据时缩放副本数量。运行MySQL应用程序可能需要安排备份,在扩展后重新配置副本,设置故障检测和修复等。

使用Kubernetes API模型,管理逻辑直接嵌入到特定于应用程序的Kubernetes API中,例如,“MySQL”API。然后,用户使用kubectl等工具通过YAML配置声明性地管理应用程序,就像它们对Kubernetes对象一样。此方法称为应用程序控制器,也称为操作器(Operator)。控制器是支持核心Kubernetes API的强大技术,可用于构建除应用程序之外的多种解决方案,例如Autoscalers、Workload API、Configuration API、CI/CD系统等。

然而,虽然开发者可以在原始API机器之上构建新的控制器,这样做是一种“从零开始”的DIY经验,要求开发者学习有关如何实现Kubernetes库的低层细节,手写样板代码并且建自己的解决方案用于集成测试、RBAC配置、文档等。Kubebuilder通过应用从构建核心Kubernetes API中学到的经验,使这种体验变得简单容易。

构建应用程序控制器和Kubernetes API入门

通过提供创建控制器和Kubernetes API的结构化解决方案,开发者可以使用从开发核心Kubernetes API中学到的经验教训和最佳实践,获得“开箱即用”的体验。使用kubebuilder创建新的“Hello World”控制器非常简单:

- 创建项目:kubebuilder init

- 定义新的API:kubebuilder create api

- 构建并运行提供的main函数:make install & make run

这将生成API和Controller供用户修改,以及集成测试、RBAC规则、DockerfilesMakefile等。在实现代码写好添加到项目之后,用户创建工件通过以下方式发布他们的API:

- 从提供的Dockerfile构建并推送容器映像:make docker-build & make docker-push

- 部署API:make deploy

无论您已经是控制器的爱好者,还是只想了解是什么,请查看kubebuilder代码或查看kubebuilder书中的示例,以了解构建控制器可以是简单易用。

Kubebuilder是SIG API Machinery旗下的一个项目,由Google、Red Hat、VMware、华为等众多公司的贡献者积极开发。

网站/代码:

https://github.com/kubernetes-sigs/kubebuilder

文档:

https://book.kubebuilder.io/

即时交流:

Slack:http://slack.k8s.io/#kubebuilder

邮件列表:

kubebuilder(https://groups.google.com/forum/#!forum/kubebuilder)

订阅邮件列表,也可以发电邮到:

kubebuilder+subscribe@googlegroups.com


CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。

云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kubernetes Operator 开发教程
Kubernetes Operator 是一种封装、部署和管理复杂有状态应用的高级方法。它通过扩展 Kubernetes API 和控制器模式,将运维领域的知识(如备份、扩缩容、故障恢复)编码到自定义逻辑中,使应用可以像管理原生 Kubernetes 资源(如 Deployment、Service)一样自动化运行。
rxg456
2025/03/02
3470
Kubernetes Operator 开发教程
kubebuilder实战之二:初次体验kubebuilder
本文是《kubebuilder实战》系列的第二篇,前文将kubebuilder环境准备完毕,今天咱们在此环境创建CRD和Controller,再部署到kubernetes环境并且验证是否生效,整篇文章由以下内容组成:
程序员欣宸
2022/05/06
9710
kubebuilder实战之二:初次体验kubebuilder
Kubernetes Operator简介与构建
自动化任务总是有其特殊之处。当我们想要执行某些任务时,我们需要能够对某些特定事件做出反应或被触发。但很多事件无法轻松监听,尤其是在 Kubernetes 集群中。所以今天,我们将看看如何尝试使用Operator来解决它。我们将了解如何创建 Kubernetes Operator!
DevOps云学堂
2023/11/06
6930
Kubernetes Operator简介与构建
kubernetes CRD如此简单
扩展kubernetes两个最常用最需要掌握的东西:自定义资源CRD 和 adminsion webhook, 本文教你如何十分钟掌握CRD开发.
sealyun
2019/07/30
2.5K0
kubernetes CRD如此简单
kubebuilder实战之七:webhook
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 系列文章链接 kubebuilder实战之一:准备工作 kubebuilder实战之二:初次体验kubebuilder kubebuilder实战之三:基础知识速览 kubebuilder实战之四:operator需求说明和设计 kubebuilder实战之五:operator编码 kubebuilder实战之六:构建部署运行 kubebuilder实战之七
程序员欣宸
2022/05/06
1.1K0
kubebuilder实战之七:webhook
深入理解Kubernetes Operator
多年来,Operator 一直是 Kubernetes 生态系统的重要组成部分。通过将管理界面移动到 Kubneretes API 中,带来了“单层玻璃”的体验。对于希望简化 kuberentes 原生应用程序的开发人员或者希望降低现有系统复杂性的 DevOps 工程师来说,Operator 可能是一个非常有吸引力的选择。但如何从头开始创建一个 Operator 呢?
深度学习与Python
2020/11/23
1.1K0
深入理解Kubernetes Operator
Kubernetes Controller 机制详解(二)
在上一篇文章 Kubernetes Controller 机制详解(一)中,我们学习了 Kubernetes API List/Watch 机制,以及如何采用 Kubernetes client-go 中的 Informer 机制来创建 Controller。该方法需要用户了解 Kubernetes client-go 的实现原理,并在 Controller 的编码中处理较多 Informer 实现相关的细节。包括启动 InformerFactory,将 Watch 到的消息加入到队列,重试等等逻辑。如果有多个副本,还需要加入 Leader Election 的相关代码。如果需如果你创建了自定义的 CRD,可能还希望在创建资源时采用 webhook 对资源进行校验。这些功能都需要用户编写较多的代码。
赵化冰
2023/04/08
9960
kubebuilder实战之八:知识点小记
《kubebuilder实战》系列已经写了七篇,前面曾遇到不少问题,磕磕碰碰解决后,打算在本篇集中小结作为备忘,主要有以下几部分组成:
程序员欣宸
2022/05/06
4590
kubebuilder实战之八:知识点小记
Kubebuilder 学习笔记之 Webhook Server
准入控制(Admission Controller)是 Kubernetes API Server 用于拦截请求的一种手段。Admission 可以做到对请求的资源对象进行校验,修改。service mesh 最近很火的项目 Istio 天生支持 Kubernetes,利用的就是 Admission 对服务实例自动注入 sidecar。
blazehu
2022/08/12
2.3K0
Kubebuilder 学习笔记
Kubebuilder is a framework for building Kubernetes APIs using custom resource definitions (CRDs).
blazehu
2022/08/12
5490
Operator Framework项目
说明:Operator Framework(操作器框架)是一个开源工具包,用于以有效、自动化和可伸缩的方式管理Kubernetes原生应用程序(称为Operators,操作器)。该框架由两个主要组件Operator SDK和Operator Lifecycle Manager(OLM,生命周期管理器)组成。OLM扩展了Kubernetes,提供了一种声明式方法来安装、管理和升级集群中的操作器及其依赖项。它使Kubernetes管理员能够从目录中发现并安全安装操作器,并以自动的方式更新它们。Operator SDK (操作器SDK)提供高级API、有用的抽象和用于构建Kubernetes应用程序的项目脚手架,并使用controller-runtime(控制器运行时)库简化操作器的编写。它使开发人员和包维护人员能够以迭代的方式编写、测试和验证操作器,并向社区发布更新。
CNCF
2020/07/15
1.2K0
kubebuilder实战之六:构建部署运行
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 系列文章链接 kubebuilder实战之一:准备工作 kubebuilder实战之二:初次体验kubebuilder kubebuilder实战之三:基础知识速览 kubebuilder实战之四:operator需求说明和设计 kubebuilder实战之五:operator编码 kubebuilder实战之六:构建部署运行 kubebuilder实战之七
程序员欣宸
2022/05/06
8970
kubebuilder实战之六:构建部署运行
Kubernetes项目
说明:Kubernetes是一个开源系统,用于管理多个主机上的容器化应用程序;提供应用程序部署、维护和扩展的基本机制。Kubernetes建立在Google使用Borg系统大规模运行生产工作负载的十五年经验的基础上,结合了社区中的最佳创意和实践。Kubernetes由云原生计算基金会Cloud Native Computing Foundation(CNCF)托管。如果您是一家希望帮助塑造容器打包、动态调度和面向微服务的技术发展的公司,请考虑加入CNCF。有关谁参与以及Kubernetes如何发挥作用的详细信息,请阅读CNCF公告。
CNCF
2019/12/06
3220
Kubernetes项目
kubebuilder 进阶使用教程
这里,Spec和Status均是Bucket的成员变量,Status并不像Pod.Status一样,是Pod的subResource.因此,如果我们在controller的代码中调用到Status().Update(),会触发panic,并报错:the server could not find the requested resource
我是阳明
2021/03/01
5.3K0
Kubernetes Operator与Helm的对比与选择
了解 Kubernetes operators 和 Helm 之间的区别,并选择在 Kubernetes 中安装和配置应用程序的最佳解决方案。
云云众生s
2024/03/28
4000
Kubernetes Operator与Helm的对比与选择
技术分享 | kubernetes operator 简介
爱可生研发团队成员,负责公司 DMP 产品的后端开发,爱好太广,三天三夜都说不完,低调低调...
爱可生开源社区
2021/07/16
7000
混合kubebuilder与code generator编写CRD
使用Kubebuilder+k8s.io/code-generator编写CRD。
颇忒脱
2020/07/06
3.6K0
从零开始入门 K8s | Kubernetes API 编程利器:Operator 和 Operator Framework
导读:本文将从实践出发,结合案例来说明,如何借助 Operator 开发框架来扩展 Kubernetes API。内容主要分为三个部分:首先会简单介绍一下 Operator 相关的知识;然后会介绍 Operator 开发框架并结合案例来详细说明整个开发过程;最后会结合案例的工作流程来重新说明 Operator 是如何工作的。
CNCF
2020/02/26
5.2K0
Kubernetes Operator 测试面面观
软件测试是一门工程技术,更是一门艺术。维护良好、质量过硬的测试用例不仅能大幅提高开发者的工作幸福感,也是企业对外提供优质软件服务的重要基础。在这篇文章中,才云工程师 gaocegege 将分享团队在 Kubernetes Operator 测试方案上的一些心得。
CNCF
2019/12/03
1.5K1
Kubebuilder 使用记录
(1)不同应用平台需要管理的目标各有差异,如何在 Kubernetes 中兼容定义管理的 目标? (2)如何管理和备份系统的应用数据,协调各应用之间不同生命周期的状态? (3)能否用同样的 Kubectl 命令来管理自己定义的复杂分布式应用?
看、未来
2022/05/28
5580
Kubebuilder 使用记录
相关推荐
Kubernetes Operator 开发教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档