Skip to content

Commit 08707d8

Browse files
committed
Introduced kubeconfig strategy for cluster inventory API provider which can abstract how kubeconfigs are managed and retrieved.
Signed-off-by: Shingo Omura <[email protected]>
1 parent 7670aa1 commit 08707d8

File tree

10 files changed

+256
-182
lines changed

10 files changed

+256
-182
lines changed

examples/cluster-inventory-api/go.mod

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
k8s.io/api v0.33.1
1313
k8s.io/apimachinery v0.33.1
1414
k8s.io/client-go v0.33.1
15-
sigs.k8s.io/cluster-inventory-api v0.0.0-20250318031555-c7c0594aa53b
15+
sigs.k8s.io/cluster-inventory-api v0.0.0-20250702132726-0f613c6275a5
1616
sigs.k8s.io/controller-runtime v0.21.0
1717
sigs.k8s.io/multicluster-runtime v0.21.0-alpha.8
1818
sigs.k8s.io/multicluster-runtime/providers/cluster-inventory-api v0.0.0-00010101000000-000000000000
@@ -24,7 +24,7 @@ require (
2424
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
2525
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
2626
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
27-
github.com/fsnotify/fsnotify v1.7.0 // indirect
27+
github.com/fsnotify/fsnotify v1.8.0 // indirect
2828
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
2929
github.com/go-logr/logr v1.4.2 // indirect
3030
github.com/go-logr/zapr v1.3.0 // indirect
@@ -47,18 +47,18 @@ require (
4747
github.com/prometheus/client_model v0.6.1 // indirect
4848
github.com/prometheus/common v0.62.0 // indirect
4949
github.com/prometheus/procfs v0.15.1 // indirect
50-
github.com/spf13/pflag v1.0.5 // indirect
50+
github.com/spf13/pflag v1.0.6 // indirect
5151
github.com/x448/float16 v0.8.4 // indirect
5252
go.uber.org/multierr v1.11.0 // indirect
5353
go.uber.org/zap v1.27.0 // indirect
54-
golang.org/x/net v0.38.0 // indirect
55-
golang.org/x/oauth2 v0.28.0 // indirect
56-
golang.org/x/sys v0.31.0 // indirect
57-
golang.org/x/term v0.30.0 // indirect
58-
golang.org/x/text v0.23.0 // indirect
54+
golang.org/x/net v0.39.0 // indirect
55+
golang.org/x/oauth2 v0.29.0 // indirect
56+
golang.org/x/sys v0.32.0 // indirect
57+
golang.org/x/term v0.31.0 // indirect
58+
golang.org/x/text v0.24.0 // indirect
5959
golang.org/x/time v0.11.0 // indirect
6060
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
61-
google.golang.org/protobuf v1.36.5 // indirect
61+
google.golang.org/protobuf v1.36.6 // indirect
6262
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
6363
gopkg.in/inf.v0 v0.9.1 // indirect
6464
gopkg.in/yaml.v3 v3.0.1 // indirect

examples/cluster-inventory-api/go.sum

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ github.com/evanphx/json-patch v0.5.2 h1:xVCHIVMUu1wtM/VkR9jVZ45N3FhZfYMMYGorLCR8
1414
github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ=
1515
github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
1616
github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
17-
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
18-
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
17+
github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
18+
github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
1919
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
2020
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
2121
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
@@ -88,8 +88,8 @@ github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0leargg
8888
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
8989
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
9090
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
91-
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
92-
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
91+
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
92+
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
9393
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
9494
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
9595
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
@@ -115,10 +115,10 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
115115
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
116116
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
117117
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
118-
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
119-
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
120-
golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc=
121-
golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
118+
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
119+
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
120+
golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98=
121+
golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
122122
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
123123
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
124124
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -127,30 +127,30 @@ golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
127127
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
128128
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
129129
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
130-
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
131-
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
132-
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
133-
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
130+
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
131+
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
132+
golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o=
133+
golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw=
134134
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
135135
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
136-
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
137-
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
136+
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
137+
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
138138
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
139139
golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
140140
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
141141
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
142142
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
143143
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
144-
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
145-
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
144+
golang.org/x/tools v0.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY=
145+
golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY=
146146
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
147147
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
148148
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
149149
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
150150
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
151151
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
152-
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
153-
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
152+
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
153+
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
154154
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
155155
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
156156
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -174,8 +174,8 @@ k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUy
174174
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
175175
k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0=
176176
k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
177-
sigs.k8s.io/cluster-inventory-api v0.0.0-20250318031555-c7c0594aa53b h1:dxgZ2Icq72axrMMtZ4NbfDRJtW40GhJ0VirvbksmYeg=
178-
sigs.k8s.io/cluster-inventory-api v0.0.0-20250318031555-c7c0594aa53b/go.mod h1:oAC/t/ChRw8Q8mQGq6Dqurf85SxRrhX1WDseqgwlnTo=
177+
sigs.k8s.io/cluster-inventory-api v0.0.0-20250702132726-0f613c6275a5 h1:gonrKU7V8WnTnsGs/QasvvgWbS+S5GwXWfuKv4357HM=
178+
sigs.k8s.io/cluster-inventory-api v0.0.0-20250702132726-0f613c6275a5/go.mod h1:uHmRJn/DNc0ScvENOAIagQPfXdjJfuDB7IgZxCpSLMM=
179179
sigs.k8s.io/controller-runtime v0.21.0 h1:CYfjpEuicjUecRk+KAeyYh+ouUBn4llGyDYytIGcJS8=
180180
sigs.k8s.io/controller-runtime v0.21.0/go.mod h1:OSg14+F65eWqIu4DceX7k/+QRAbTTvxeQSNSOQpukWM=
181181
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=

examples/cluster-inventory-api/main.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ import (
4040
mcbuilder "sigs.k8s.io/multicluster-runtime/pkg/builder"
4141
mcmanager "sigs.k8s.io/multicluster-runtime/pkg/manager"
4242
mcreconcile "sigs.k8s.io/multicluster-runtime/pkg/reconcile"
43+
4344
clusterinventoryapi "sigs.k8s.io/multicluster-runtime/providers/cluster-inventory-api"
45+
"sigs.k8s.io/multicluster-runtime/providers/cluster-inventory-api/kubeconfigstrategy"
4446
)
4547

4648
func init() {
@@ -60,8 +62,13 @@ func main() {
6062
}
6163

6264
// Create the provider against the local manager.
63-
provider := clusterinventoryapi.New(clusterinventoryapi.Options{
64-
ConsumerName: "cluster-inventory-api-consumer",
65+
provider, err := clusterinventoryapi.New(clusterinventoryapi.Options{
66+
KubeconfigStrategyOption: kubeconfigstrategy.Option{
67+
// Use the Secret strategy with a specific consumer name.
68+
Secret: kubeconfigstrategy.SecretStrategyOption{
69+
ConsumerName: "cluster-inventory-api-consumer",
70+
},
71+
},
6572
})
6673
if err != nil {
6774
entryLog.Error(err, "unable to create provider")

providers/cluster-inventory-api/go.mod

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ require (
88
github.com/go-logr/logr v1.4.2
99
github.com/onsi/ginkgo/v2 v2.22.0
1010
github.com/onsi/gomega v1.36.1
11-
golang.org/x/sync v0.12.0
11+
golang.org/x/sync v0.13.0
1212
k8s.io/api v0.33.0
1313
k8s.io/apimachinery v0.33.0
1414
k8s.io/client-go v0.33.0
1515
k8s.io/utils v0.0.0-20241210054802-24370beab758
16-
sigs.k8s.io/cluster-inventory-api v0.0.0-20250318031555-c7c0594aa53b
16+
sigs.k8s.io/cluster-inventory-api v0.0.0-20250702132726-0f613c6275a5
1717
sigs.k8s.io/controller-runtime v0.21.0
1818
sigs.k8s.io/multicluster-runtime v0.21.0-alpha.8
1919
)
@@ -25,7 +25,7 @@ require (
2525
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
2626
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
2727
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
28-
github.com/fsnotify/fsnotify v1.7.0 // indirect
28+
github.com/fsnotify/fsnotify v1.8.0 // indirect
2929
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
3030
github.com/go-logr/zapr v1.3.0 // indirect
3131
github.com/go-openapi/jsonpointer v0.21.1 // indirect
@@ -49,19 +49,19 @@ require (
4949
github.com/prometheus/client_model v0.6.1 // indirect
5050
github.com/prometheus/common v0.62.0 // indirect
5151
github.com/prometheus/procfs v0.15.1 // indirect
52-
github.com/spf13/pflag v1.0.5 // indirect
52+
github.com/spf13/pflag v1.0.6 // indirect
5353
github.com/x448/float16 v0.8.4 // indirect
5454
go.uber.org/multierr v1.11.0 // indirect
5555
go.uber.org/zap v1.27.0 // indirect
56-
golang.org/x/net v0.38.0 // indirect
57-
golang.org/x/oauth2 v0.28.0 // indirect
58-
golang.org/x/sys v0.31.0 // indirect
59-
golang.org/x/term v0.30.0 // indirect
60-
golang.org/x/text v0.23.0 // indirect
56+
golang.org/x/net v0.39.0 // indirect
57+
golang.org/x/oauth2 v0.29.0 // indirect
58+
golang.org/x/sys v0.32.0 // indirect
59+
golang.org/x/term v0.31.0 // indirect
60+
golang.org/x/text v0.24.0 // indirect
6161
golang.org/x/time v0.11.0 // indirect
62-
golang.org/x/tools v0.26.0 // indirect
62+
golang.org/x/tools v0.30.0 // indirect
6363
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
64-
google.golang.org/protobuf v1.36.5 // indirect
64+
google.golang.org/protobuf v1.36.6 // indirect
6565
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
6666
gopkg.in/inf.v0 v0.9.1 // indirect
6767
gopkg.in/yaml.v3 v3.0.1 // indirect

0 commit comments

Comments
 (0)