使用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
這將在pkg 目錄中產生必要的API 和客戶端結構。
控制器範例
請參閱[此範例控制器](連結到範例控制器)作為範例如何使用產生的用戶端監視您的 CRD。 example_controller 套件包含處理監視事件的程式碼。
Kubebuilder
為了簡化為 CRD 產生客戶端設定和控制器的過程,您可以使用 [kubebuilder](連結到 kubebuilder)。該工具可自動執行上述許多步驟。
以上是如何使用 Client-Go 觀察 CustomResourceDefinitions (CRD)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!