kubebuilder 에서 namespace, label 조건으로 watch 하는 방법(=Watch event for specific object in kubebuilder)
kubebuilder
를 이용해서 custom controller
를 개발 하다 보면 namespace
, label
조건을 주어 watch
를 하고 싶은 경우가 생긴다. 이런 경우는 cache.Options
을 이용하면 아주 쉽게 처리 할 수 있다. :)
아래는 default namespace
, label 이 foo: bar
인 Custom Resource Sample
이다.
apiVersion: "jellay/v1alpha1"
kind: Jellybeanz
metadata:
name: jellybeanz-sample
namespace: "default"
labels:
foo: bar
spec:
startJob: true"
이 Custom Resource
의 event
를 namespace
, label
조건을 주어 watch
하는 방법은 아래와 같다.
default namespace
의 Custom Resource
만 Watch
하고 싶다면,
mrg, mrgErr := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
Scheme: scheme,
HealthProbeBindAddress: probeAddr,
LeaderElection: enableLeaderElection,
LeaderElectionID: "44d540b2.hana.sap.com",
Cache: cache.Options{
DefaultNamespaces: map[string]cache.Config{"default": {}},
},
})
label 이 foo: bar
인 Custom Resource
만 Watch
하고 싶다면,
mrg, mrgErr := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
Scheme: scheme,
HealthProbeBindAddress: probeAddr,
LeaderElection: enableLeaderElection,
LeaderElectionID: "44d540b2.hana.sap.com",
Cache: cache.Options{
DefaultLabelSelector: labels.SelectorFromSet(labels.Set{"foo": "bar"}),
},
})
그럼 즐거운 개발 세발~~