首頁  >  文章  >  後端開發  >  如何使用 Client-Go 觀察 CustomResourceDefinitions (CRD)?

如何使用 Client-Go 觀察 CustomResourceDefinitions (CRD)?

DDD
DDD原創
2024-11-02 06:28:02408瀏覽

How to Watch CustomResourceDefinitions (CRDs) with Client-Go?

使用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 建立用戶端,請依照[此部落格](博文連結)中概述的步驟操作。

程式碼產生

  1. 安裝程式碼產生工具: go install k8s.io/code-generator/cmd/client-gen
  2. 產生客戶端:執行以下命令,將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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn