Skip to content

Commit a481c4a

Browse files
authored
Merge pull request #13 from lburgazzoli/list-watch
restricts the cache's watches with label selector
2 parents bb6bcce + 727ae19 commit a481c4a

File tree

10 files changed

+109
-16
lines changed

10 files changed

+109
-16
lines changed

cmd/run/run.go

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
package run
22

33
import (
4+
"github.com/dapr-sandbox/dapr-kubernetes-operator/pkg/resources"
5+
"github.com/pkg/errors"
46
"github.com/spf13/cobra"
7+
admregv1 "k8s.io/api/admissionregistration/v1"
8+
appsv1 "k8s.io/api/apps/v1"
9+
corev1 "k8s.io/api/core/v1"
10+
rbacv1 "k8s.io/api/rbac/v1"
11+
rtcache "sigs.k8s.io/controller-runtime/pkg/cache"
12+
rtclient "sigs.k8s.io/controller-runtime/pkg/client"
513
"sigs.k8s.io/controller-runtime/pkg/manager"
614

715
"github.com/dapr-sandbox/dapr-kubernetes-operator/pkg/controller"
@@ -38,13 +46,34 @@ func NewRunCmd() *cobra.Command {
3846
Use: "run",
3947
Short: "run",
4048
RunE: func(cmd *cobra.Command, args []string) error {
49+
selector, err := daprCtl.ReleaseSelector()
50+
if err != nil {
51+
return errors.Wrap(err, "unable to compute cache's watch selector")
52+
}
53+
54+
controllerOpts.WatchSelectors = map[rtclient.Object]rtcache.ByObject{
55+
// k8s
56+
&rbacv1.ClusterRole{}: {Label: selector},
57+
&rbacv1.ClusterRoleBinding{}: {Label: selector},
58+
&rbacv1.Role{}: {Label: selector},
59+
&rbacv1.RoleBinding{}: {Label: selector},
60+
&admregv1.MutatingWebhookConfiguration{}: {Label: selector},
61+
&corev1.Secret{}: {Label: selector},
62+
&corev1.Service{}: {Label: selector},
63+
&corev1.ServiceAccount{}: {Label: selector},
64+
&appsv1.StatefulSet{}: {Label: selector},
65+
&appsv1.Deployment{}: {Label: selector},
66+
// dapr
67+
resources.UnstructuredFor("dapr.io", "v1alpha1", "Configuration"): {Label: selector},
68+
}
69+
4170
return controller.Start(controllerOpts, func(manager manager.Manager, opts controller.Options) error {
4271
_, err := daprCtl.NewReconciler(cmd.Context(), manager, helmOpts)
4372
if err != nil {
44-
return err
73+
return errors.Wrap(err, "unable to set-up DaprControlPlane reconciler")
4574
}
4675

47-
return err
76+
return nil
4877
})
4978
},
5079
}

config/crd/bases/operator.dapr.io_daprcontrolplanes.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
33
kind: CustomResourceDefinition
44
metadata:
55
annotations:
6-
controller-gen.kubebuilder.io/version: v0.12.0
6+
controller-gen.kubebuilder.io/version: v0.12.1
77
name: daprcontrolplanes.operator.dapr.io
88
spec:
99
group: operator.dapr.io

go.mod

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ require (
2323
k8s.io/apimachinery v0.28.0
2424
k8s.io/client-go v0.28.0
2525
k8s.io/klog/v2 v2.100.1
26-
sigs.k8s.io/controller-runtime v0.15.1
26+
sigs.k8s.io/controller-runtime v0.16.0
2727
sigs.k8s.io/structured-merge-diff/v4 v4.3.0
2828
)
2929

@@ -112,7 +112,7 @@ require (
112112
github.com/prometheus/client_golang v1.16.0 // indirect
113113
github.com/prometheus/client_model v0.4.0 // indirect
114114
github.com/prometheus/common v0.44.0 // indirect
115-
github.com/prometheus/procfs v0.10.1 // indirect
115+
github.com/prometheus/procfs v0.11.1 // indirect
116116
github.com/rubenv/sql-migrate v1.3.1 // indirect
117117
github.com/russross/blackfriday/v2 v2.1.0 // indirect
118118
github.com/shopspring/decimal v1.3.1 // indirect
@@ -127,22 +127,23 @@ require (
127127
go.opentelemetry.io/otel/trace v1.14.0 // indirect
128128
go.starlark.net v0.0.0-20230814145427-12f4cb8177e4 // indirect
129129
go.uber.org/atomic v1.10.0 // indirect
130-
go.uber.org/zap v1.24.0 // indirect
130+
go.uber.org/zap v1.25.0 // indirect
131131
golang.org/x/crypto v0.12.0 // indirect
132+
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect
132133
golang.org/x/net v0.14.0 // indirect
133134
golang.org/x/oauth2 v0.11.0 // indirect
134135
golang.org/x/sync v0.3.0 // indirect
135136
golang.org/x/sys v0.11.0 // indirect
136137
golang.org/x/term v0.11.0 // indirect
137138
golang.org/x/text v0.12.0 // indirect
138-
gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect
139+
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
139140
google.golang.org/appengine v1.6.7 // indirect
140141
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect
141142
google.golang.org/grpc v1.54.0 // indirect
142143
google.golang.org/protobuf v1.31.0 // indirect
143144
gopkg.in/inf.v0 v0.9.1 // indirect
144145
gopkg.in/yaml.v2 v2.4.0 // indirect
145-
k8s.io/apiextensions-apiserver v0.27.3 // indirect
146+
k8s.io/apiextensions-apiserver v0.28.0 // indirect
146147
k8s.io/apiserver v0.28.0 // indirect
147148
k8s.io/cli-runtime v0.28.0 // indirect
148149
k8s.io/component-base v0.28.0 // indirect

go.sum

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3d
9595
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
9696
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
9797
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
98+
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
9899
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
99100
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
100101
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
@@ -112,6 +113,7 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0Bsq
112113
github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o=
113114
github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
114115
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
116+
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
115117
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
116118
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
117119
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -620,6 +622,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
620622
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
621623
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
622624
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
625+
github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI=
626+
github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
623627
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
624628
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
625629
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
@@ -757,6 +761,8 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
757761
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
758762
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
759763
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
764+
go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c=
765+
go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk=
760766
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
761767
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
762768
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -785,6 +791,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
785791
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
786792
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
787793
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
794+
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ=
795+
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8=
788796
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
789797
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
790798
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1047,12 +1055,15 @@ golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
10471055
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
10481056
golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM=
10491057
golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
1058+
golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 h1:Vve/L0v7CXXuxUmaMGIEK/dEeq7uiqb5qBgQrZzIE7E=
10501059
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
10511060
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
10521061
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
10531062
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
10541063
gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc=
10551064
gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
1065+
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
1066+
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
10561067
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
10571068
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
10581069
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -1210,6 +1221,8 @@ k8s.io/api v0.28.0 h1:3j3VPWmN9tTDI68NETBWlDiA9qOiGJ7sdKeufehBYsM=
12101221
k8s.io/api v0.28.0/go.mod h1:0l8NZJzB0i/etuWnIXcwfIv+xnDOhL3lLW919AWYDuY=
12111222
k8s.io/apiextensions-apiserver v0.27.3 h1:xAwC1iYabi+TDfpRhxh4Eapl14Hs2OftM2DN5MpgKX4=
12121223
k8s.io/apiextensions-apiserver v0.27.3/go.mod h1:BH3wJ5NsB9XE1w+R6SSVpKmYNyIiyIz9xAmBl8Mb+84=
1224+
k8s.io/apiextensions-apiserver v0.28.0 h1:CszgmBL8CizEnj4sj7/PtLGey6Na3YgWyGCPONv7E9E=
1225+
k8s.io/apiextensions-apiserver v0.28.0/go.mod h1:uRdYiwIuu0SyqJKriKmqEN2jThIJPhVmOWETm8ud1VE=
12131226
k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM=
12141227
k8s.io/apimachinery v0.28.0 h1:ScHS2AG16UlYWk63r46oU3D5y54T53cVI5mMJwwqFNA=
12151228
k8s.io/apimachinery v0.28.0/go.mod h1:X0xh/chESs2hP9koe+SdIAcXWcQ+RM5hy0ZynB+yEvw=
@@ -1225,6 +1238,7 @@ k8s.io/component-base v0.28.0 h1:HQKy1enJrOeJlTlN4a6dU09wtmXaUvThC0irImfqyxI=
12251238
k8s.io/component-base v0.28.0/go.mod h1:Yyf3+ZypLfMydVzuLBqJ5V7Kx6WwDr/5cN+dFjw1FNk=
12261239
k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
12271240
k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
1241+
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
12281242
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
12291243
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
12301244
k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
@@ -1247,6 +1261,8 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
12471261
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
12481262
sigs.k8s.io/controller-runtime v0.15.1 h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUTb/+4c=
12491263
sigs.k8s.io/controller-runtime v0.15.1/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk=
1264+
sigs.k8s.io/controller-runtime v0.16.0 h1:5koYaaRVBHDr0LZAJjO5dWzUjMsh6cwa7q1Mmusrdvk=
1265+
sigs.k8s.io/controller-runtime v0.16.0/go.mod h1:77DnuwA8+J7AO0njzv3wbNlMOnGuLrwFr8JPNwx3J7g=
12501266
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs=
12511267
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
12521268
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=

internal/controller/operator/dapr_controller_action_apply.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,9 @@ func (a *ApplyAction) Run(ctx context.Context, rc *ReconciliationRequest) error
107107
r := gvk.GroupVersion().String() + ":" + gvk.Kind
108108

109109
if _, ok := a.subscriptions[r]; !ok {
110+
111+
a.l.Info("watch", "ref", r)
112+
110113
err = rc.Reconciler.Watch(
111114
&obj,
112115
rc.Reconciler.EnqueueRequestForOwner(&daprApi.DaprControlPlane{}, handler.OnlyControllerOwner()),
@@ -135,6 +138,9 @@ func (a *ApplyAction) Run(ctx context.Context, rc *ReconciliationRequest) error
135138
r := gvk.GroupVersion().String() + ":" + gvk.Kind
136139

137140
if _, ok := a.subscriptions[r]; !ok {
141+
142+
a.l.Info("watch", "ref", r)
143+
138144
err = rc.Reconciler.Watch(
139145
&obj,
140146
rc.Reconciler.EnqueueRequestsFromMapFunc(labelsToRequest),
@@ -196,6 +202,7 @@ func (a *ApplyAction) Run(ctx context.Context, rc *ReconciliationRequest) error
196202

197203
a.l.Info("run",
198204
"apply", "true",
205+
"gen", rc.Resource.Generation,
199206
"ref", resources.Ref(&obj))
200207
}
201208

internal/controller/operator/dapr_controller_support.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,21 @@ func dependantWithLabels(watchUpdate bool, watchDelete bool) predicate.Predicate
8888
},
8989
)
9090
}
91+
92+
func ReleaseSelector() (labels.Selector, error) {
93+
hasReleaseNameLabel, err := labels.NewRequirement(DaprReleaseName, selection.Exists, []string{})
94+
if err != nil {
95+
return nil, err
96+
}
97+
98+
hasReleaseNamespaceLabel, err := labels.NewRequirement(DaprReleaseNamespace, selection.Exists, []string{})
99+
if err != nil {
100+
return nil, err
101+
}
102+
103+
selector := labels.NewSelector().
104+
Add(*hasReleaseNameLabel).
105+
Add(*hasReleaseNamespaceLabel)
106+
107+
return selector, nil
108+
}

pkg/controller/controller.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"net/http/pprof"
66
"time"
77

8+
"sigs.k8s.io/controller-runtime/pkg/cache"
9+
810
"github.com/pkg/errors"
911

1012
"github.com/dapr-sandbox/dapr-kubernetes-operator/pkg/logger"
@@ -20,6 +22,7 @@ import (
2022
ctrl "sigs.k8s.io/controller-runtime"
2123
"sigs.k8s.io/controller-runtime/pkg/healthz"
2224
"sigs.k8s.io/controller-runtime/pkg/log/zap"
25+
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
2326
)
2427

2528
var (
@@ -38,12 +41,18 @@ func Start(options Options, setup func(manager.Manager, Options) error) error {
3841

3942
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
4043
Scheme: Scheme,
41-
MetricsBindAddress: options.MetricsAddr,
4244
HealthProbeBindAddress: options.ProbeAddr,
4345
LeaderElection: options.EnableLeaderElection,
4446
LeaderElectionID: options.LeaderElectionID,
4547
LeaderElectionReleaseOnCancel: options.ReleaseLeaderElectionOnCancel,
4648
LeaderElectionNamespace: options.LeaderElectionNamespace,
49+
50+
Metrics: metricsserver.Options{
51+
BindAddress: options.MetricsAddr,
52+
},
53+
Cache: cache.Options{
54+
ByObject: options.WatchSelectors,
55+
},
4756
})
4857

4958
if err != nil {

pkg/controller/predicates/dependant.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package predicates
22

33
import (
4-
"encoding/json"
54
"reflect"
65

76
"github.com/wI2L/jsondiff"
@@ -93,18 +92,13 @@ func (p DependentPredicate) Update(e event.UpdateEvent) bool {
9392
log.Error(err, "failed to generate diff")
9493
return true
9594
}
96-
d, err := json.Marshal(patch)
97-
if err != nil {
98-
log.Error(err, "failed to generate diff")
99-
return true
100-
}
10195

10296
log.Info("Reconciling due to dependent resource update",
10397
"name", newObj.GetName(),
10498
"namespace", newObj.GetNamespace(),
10599
"apiVersion", newObj.GroupVersionKind().GroupVersion(),
106100
"kind", newObj.GroupVersionKind().Kind,
107-
"diff", string(d))
101+
"diff", patch.String())
108102

109103
return true
110104
}

pkg/controller/types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package controller
22

3+
import (
4+
rtcache "sigs.k8s.io/controller-runtime/pkg/cache"
5+
rtclient "sigs.k8s.io/controller-runtime/pkg/client"
6+
)
7+
38
type ClusterType string
49

510
const (
@@ -15,4 +20,5 @@ type Options struct {
1520
LeaderElectionNamespace string
1621
EnableLeaderElection bool
1722
ReleaseLeaderElectionOnCancel bool
23+
WatchSelectors map[rtclient.Object]rtcache.ByObject
1824
}

pkg/resources/resources.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package resources
33
import (
44
"fmt"
55

6+
"k8s.io/apimachinery/pkg/runtime/schema"
7+
68
"github.com/dapr-sandbox/dapr-kubernetes-operator/pkg/pointer"
79
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
810
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -67,3 +69,14 @@ func Ref(obj *unstructured.Unstructured) string {
6769
name,
6870
)
6971
}
72+
73+
func UnstructuredFor(group string, version string, kind string) *unstructured.Unstructured {
74+
u := unstructured.Unstructured{}
75+
u.SetGroupVersionKind(schema.GroupVersionKind{
76+
Kind: kind,
77+
Group: group,
78+
Version: version,
79+
})
80+
81+
return &u
82+
}

0 commit comments

Comments
 (0)