使用 Client-Go 监视 CustomResourceDefinitions (CRD)
在 Kubernetes 中,监视新创建或修改的资源至关重要,包括 CustomResourceDefinitions ( CRD)。虽然简单的 Rest Client 可以处理此任务,但问题出现了:client-go(官方 Kubernetes 客户端库)能否为 CRD 履行此角色?
挑战:Client-Go 缺乏 CRD 意识
Client-go 为标准 Kubernetes 资源(例如 pod 和服务)提供内置支持。然而,CRD 是 client-go 本身不知道的自定义资源。因此,使用 client-go 来监控 CRD 需要解决这个识别差距。
解决方案:为 CRD 自定义客户端生成
解决方案在于生成自定义客户端对于 CRD。 Kubernetes 提供了代码生成工具,允许开发人员定义 CRD API 的结构并自动生成必要的客户端。通过这样做,client-go 获得了识别 CRD 并与之交互的能力。
示例控制器和代码生成工具
Kubernetes 提供了一个示例控制器示例,演示如何使用 client-go 监视 CRD。本示例中的 pkg 目录包含生成的 API 定义和客户端代码,而 main.go 和controller.go 文件负责 CRD 事件的监视和处理。
使用 Kubebuilder 简化代码生成
最近,kubebuilder(由 kubernetes-sigs 维护的工具)已成为为 CRD 生成客户端配置和控制器的便捷方法。借助 kubebuilder,开发人员可以简化使用 client-go 监控 CRD 的过程。
以上是Client-Go 可以监视 CustomResourceDefinitions (CRD) 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!