首頁  >  文章  >  後端開發  >  控制器協調對象更改

控制器協調對象更改

WBOY
WBOY轉載
2024-02-10 14:15:091117瀏覽

控制器協調對象更改

php小編魚仔在這篇文章中將為大家介紹控制器協調物件變更的相關內容。在開發過程中,控制器扮演著重要的角色,負責接收使用者請求並調度對應的業務邏輯。然而,有時我們可能需要更改控制器的協調對象,以滿足特定的需求。本文將詳細說明如何進行控制器協調物件的更改,幫助開發者更好地理解並應用這個概念。無論您是初學者還是有一定經驗的開發者,都將從本文中獲得有益的知識和技巧。讓我們一起開始吧!

問題內容

我正在嘗試使用操作員 sdk 監聽秘密更改 問題是,當我使用我在運算符中定義的標籤來應用秘密時,我沒有收到協調事件

我做了以下事情

mgr, err := ctrl.newmanager(ctrl.getconfigordie(), ctrl.options{
    scheme:                 scheme,
        …
    newcache: cache.builderwithoptions(cache.options{
        selectorsbyobject: cache.selectorsbyobject{
            &corev1.secret{}: {
                label: labels.selectorfromset(labels.set{"foo": "bar"}),
            },
        },
    }),

我運行操作員並應用以下秘密,但未呼叫協調,知道嗎?

apiVersion: v1
kind: Secret
metadata:
  labels:
    foo: bar
  name: mysecret
  namespace: dev
type: Opaque
data:
  USER_NAME: YWRtaW4=
  PASSWORD: dGVzdBo=

解決方法

看起來您正在使用cache.options.selectorsbyobject欄位來指定應觸發協調事件的標籤。但是,此欄位用於指定應用於從快取中選擇物件的標籤,而不是應觸發協調事件的標籤。

要指定應觸發協調事件的標籤,您可以使用 ctrl.watch 函數,如下所示:

mgr.Watch(&source.Kind{Type: &corev1.Secret{}},
    &handler.EnqueueRequestForObject{},
    predicate.Funcs{
        UpdateFunc: func(e event.UpdateEvent) bool {
            return labels.Set(e.MetaNew.GetLabels()).Has("foo", "bar")
        },
    })

以上是控制器協調對象更改的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除