使用 Client-Go 观看 CustomResourceDefinitions (CRD)
CustomResourceDefinitions (CRD) 扩展了 Kubernetes 的核心 API,允许用户创建和管理他们的资源自己的资源类型。要监视 CRD 的更改,您可以使用 Kubernetes 客户端库 client-go。
用于标准资源的 Client-Go
Client-go 提供了一种简单的机制监视服务等标准资源的变化。以下示例演示了如何监视新的或修改的服务:
<code class="go">import ( "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" ) func handleNewServices(clientset *kubernetes.Clientset) { for { serviceStreamWatcher, err := clientset.CoreV1().Services("").Watch(metav1.ListOptions{}) if err != nil { panic(err.Error()) } // Process events // ... } }</code>
为 CRD 扩展 Client-Go
Client-go 本身无法识别 CRD。为了支持它们,您需要为自定义资源生成一个客户端。 Kubernetes 为此提供了代码生成工具。
例如,要为提供的代码片段中定义的 ApiGateway CRD 创建客户端,请按照[此博文](博文链接)中概述的步骤操作。
代码生成
生成客户端:运行以下命令,将 your-group 替换为您的 CRD 组:
client-gen --input-base "" --input your-group/v1 --output-base ./pkg --output-package pkg/clientset/versioned --clientset-name versioned
这将生成必要的 API 和客户端pkg 目录中的结构。
控制器示例
请参阅[此示例控制器](链接到示例控制器)以获取如何使用以下方式监视 CRD 的示例生成的客户端。 example_controller 包包含处理监视事件的代码。
Kubebuilder
为了简化为 CRD 生成客户端配置和控制器的过程,您可以使用 [kubebuilder](链接到 kubebuilder)。该工具可自动执行上述许多步骤。
以上是如何使用 Client-Go 观察 CustomResourceDefinitions (CRD)?的详细内容。更多信息请关注PHP中文网其他相关文章!