Skip to content

Commit e1f9c9a

Browse files
committed
Add --transport option to port-forward
The latest Kubernetes beta supports using websockets for port-forward. We now introduce a similar option to `attach` and `exec` to be able to select the new transport. See: kubernetes/enhancements#4006 Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
1 parent 2c46976 commit e1f9c9a

File tree

215 files changed

+38315
-9102
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

215 files changed

+38315
-9102
lines changed

cmd/crictl/portforward.go

+34-6
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ import (
2525

2626
"github.com/sirupsen/logrus"
2727
"github.com/urfave/cli/v2"
28-
restclient "k8s.io/client-go/rest"
28+
"k8s.io/apimachinery/pkg/util/httpstream"
29+
"k8s.io/client-go/rest"
2930
"k8s.io/client-go/tools/portforward"
3031
"k8s.io/client-go/transport/spdy"
3132
internalapi "k8s.io/cri-api/pkg/apis"
@@ -36,6 +37,14 @@ var runtimePortForwardCommand = &cli.Command{
3637
Name: "port-forward",
3738
Usage: "Forward local port to a pod",
3839
ArgsUsage: "POD-ID [LOCAL_PORT:]REMOTE_PORT",
40+
Flags: []cli.Flag{
41+
&cli.StringFlag{
42+
Name: transportFlag,
43+
Aliases: []string{"r"},
44+
Value: transportSpdy,
45+
Usage: fmt.Sprintf("Transport protocol to be used, must be one of: %s, %s", transportSpdy, transportWebsocket),
46+
},
47+
},
3948
Action: func(c *cli.Context) error {
4049
if c.NArg() < 2 {
4150
return cli.ShowSubcommandHelp(c)
@@ -47,8 +56,9 @@ var runtimePortForwardCommand = &cli.Command{
4756
}
4857

4958
var opts = portforwardOptions{
50-
id: c.Args().Get(0),
51-
ports: c.Args().Tail(),
59+
id: c.Args().Get(0),
60+
ports: c.Args().Tail(),
61+
transport: c.String(transportFlag),
5262
}
5363
if err = PortForward(runtimeClient, opts); err != nil {
5464
return fmt.Errorf("port forward: %w", err)
@@ -88,11 +98,10 @@ func PortForward(client internalapi.RuntimeService, opts portforwardOptions) err
8898
}
8999

90100
logrus.Debugf("PortForward URL: %v", URL)
91-
transport, upgrader, err := spdy.RoundTripperFor(&restclient.Config{})
101+
dialer, err := getDialer(opts.transport, URL)
92102
if err != nil {
93-
return err
103+
return fmt.Errorf("get dialer: %w", err)
94104
}
95-
dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport}, "POST", URL)
96105

97106
readyChan := make(chan struct{})
98107

@@ -103,3 +112,22 @@ func PortForward(client internalapi.RuntimeService, opts portforwardOptions) err
103112
}
104113
return pf.ForwardPorts()
105114
}
115+
116+
func getDialer(transport string, url *url.URL) (exec httpstream.Dialer, err error) {
117+
config := &rest.Config{TLSClientConfig: rest.TLSClientConfig{Insecure: true}}
118+
119+
switch transport {
120+
case transportSpdy:
121+
tr, upgrader, err := spdy.RoundTripperFor(config)
122+
if err != nil {
123+
return nil, fmt.Errorf("get SPDY round tripper: %w", err)
124+
}
125+
return spdy.NewDialer(upgrader, &http.Client{Transport: tr}, "POST", url), nil
126+
127+
case transportWebsocket:
128+
return portforward.NewSPDYOverWebsocketDialer(url, config)
129+
130+
default:
131+
return nil, fmt.Errorf("unknown transport: %s", transport)
132+
}
133+
}

cmd/crictl/util.go

+2
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ type portforwardOptions struct {
133133
id string
134134
// ports to forward
135135
ports []string
136+
// transport to be used
137+
transport string
136138
}
137139

138140
func getSortedKeys(m map[string]string) []string {

go.mod

+35-33
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
module github.com/kubernetes-sigs/cri-tools
22

3-
go 1.21
3+
go 1.22.0
4+
5+
toolchain go1.22.1
46

57
require (
68
github.com/distribution/reference v0.5.0
@@ -84,10 +86,10 @@ require (
8486
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
8587
go.opentelemetry.io/otel/metric v1.24.0 // indirect
8688
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
87-
golang.org/x/mod v0.14.0 // indirect
89+
golang.org/x/mod v0.15.0 // indirect
8890
golang.org/x/oauth2 v0.15.0 // indirect
8991
golang.org/x/time v0.3.0 // indirect
90-
golang.org/x/tools v0.17.0 // indirect
92+
golang.org/x/tools v0.18.0 // indirect
9193
google.golang.org/appengine v1.6.8 // indirect
9294
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
9395
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
@@ -100,40 +102,40 @@ require (
100102
k8s.io/cli-runtime v0.0.0 // indirect
101103
k8s.io/component-base v0.0.0 // indirect
102104
k8s.io/klog/v2 v2.120.1 // indirect
103-
k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e // indirect
105+
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
104106
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
105107
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
106108
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
107109
)
108110

109111
replace (
110-
k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240227131458-12217672a351
111-
k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240227131458-12217672a351
112-
k8s.io/apimachinery => k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240227131458-12217672a351
113-
k8s.io/apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240227131458-12217672a351
114-
k8s.io/cli-runtime => k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240227131458-12217672a351
115-
k8s.io/client-go => k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240227131458-12217672a351
116-
k8s.io/cloud-provider => k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v0.0.0-20240227131458-12217672a351
117-
k8s.io/cluster-bootstrap => k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v0.0.0-20240227131458-12217672a351
118-
k8s.io/code-generator => k8s.io/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20240227131458-12217672a351
119-
k8s.io/component-base => k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240227131458-12217672a351
120-
k8s.io/component-helpers => k8s.io/kubernetes/staging/src/k8s.io/component-helpers v0.0.0-20240227131458-12217672a351
121-
k8s.io/controller-manager => k8s.io/kubernetes/staging/src/k8s.io/controller-manager v0.0.0-20240227131458-12217672a351
122-
k8s.io/cri-api => k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240227131458-12217672a351
123-
k8s.io/csi-translation-lib => k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v0.0.0-20240227131458-12217672a351
124-
k8s.io/dynamic-resource-allocation => k8s.io/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v0.0.0-20240227131458-12217672a351
125-
k8s.io/endpointslice => k8s.io/kubernetes/staging/src/k8s.io/endpointslice v0.0.0-20240227131458-12217672a351
126-
k8s.io/kms => k8s.io/kubernetes/staging/src/k8s.io/kms v0.0.0-20240227131458-12217672a351
127-
k8s.io/kube-aggregator => k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v0.0.0-20240227131458-12217672a351
128-
k8s.io/kube-controller-manager => k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v0.0.0-20240227131458-12217672a351
129-
k8s.io/kube-proxy => k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v0.0.0-20240227131458-12217672a351
130-
k8s.io/kube-scheduler => k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20240227131458-12217672a351
131-
k8s.io/kubectl => k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240227131458-12217672a351
132-
k8s.io/kubelet => k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240227131458-12217672a351
133-
k8s.io/kubernetes => k8s.io/kubernetes v1.30.0-alpha.3
134-
k8s.io/legacy-cloud-providers => k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v0.0.0-20240227131458-12217672a351
135-
k8s.io/metrics => k8s.io/kubernetes/staging/src/k8s.io/metrics v0.0.0-20240227131458-12217672a351
136-
k8s.io/mount-utils => k8s.io/kubernetes/staging/src/k8s.io/mount-utils v0.0.0-20240227131458-12217672a351
137-
k8s.io/pod-security-admission => k8s.io/kubernetes/staging/src/k8s.io/pod-security-admission v0.0.0-20240227131458-12217672a351
138-
k8s.io/sample-apiserver => k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v0.0.0-20240227131458-12217672a351
112+
k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240312153413-634fc1b4836b
113+
k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240312153413-634fc1b4836b
114+
k8s.io/apimachinery => k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240312153413-634fc1b4836b
115+
k8s.io/apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240312153413-634fc1b4836b
116+
k8s.io/cli-runtime => k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240312153413-634fc1b4836b
117+
k8s.io/client-go => k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240312153413-634fc1b4836b
118+
k8s.io/cloud-provider => k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v0.0.0-20240312153413-634fc1b4836b
119+
k8s.io/cluster-bootstrap => k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v0.0.0-20240312153413-634fc1b4836b
120+
k8s.io/code-generator => k8s.io/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20240312153413-634fc1b4836b
121+
k8s.io/component-base => k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240312153413-634fc1b4836b
122+
k8s.io/component-helpers => k8s.io/kubernetes/staging/src/k8s.io/component-helpers v0.0.0-20240312153413-634fc1b4836b
123+
k8s.io/controller-manager => k8s.io/kubernetes/staging/src/k8s.io/controller-manager v0.0.0-20240312153413-634fc1b4836b
124+
k8s.io/cri-api => k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240312153413-634fc1b4836b
125+
k8s.io/csi-translation-lib => k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v0.0.0-20240312153413-634fc1b4836b
126+
k8s.io/dynamic-resource-allocation => k8s.io/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v0.0.0-20240312153413-634fc1b4836b
127+
k8s.io/endpointslice => k8s.io/kubernetes/staging/src/k8s.io/endpointslice v0.0.0-20240312153413-634fc1b4836b
128+
k8s.io/kms => k8s.io/kubernetes/staging/src/k8s.io/kms v0.0.0-20240312153413-634fc1b4836b
129+
k8s.io/kube-aggregator => k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v0.0.0-20240312153413-634fc1b4836b
130+
k8s.io/kube-controller-manager => k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v0.0.0-20240312153413-634fc1b4836b
131+
k8s.io/kube-proxy => k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v0.0.0-20240312153413-634fc1b4836b
132+
k8s.io/kube-scheduler => k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20240312153413-634fc1b4836b
133+
k8s.io/kubectl => k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240312153413-634fc1b4836b
134+
k8s.io/kubelet => k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240312153413-634fc1b4836b
135+
k8s.io/kubernetes => k8s.io/kubernetes v1.30.0-beta.0
136+
k8s.io/legacy-cloud-providers => k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v0.0.0-20240312153413-634fc1b4836b
137+
k8s.io/metrics => k8s.io/kubernetes/staging/src/k8s.io/metrics v0.0.0-20240312153413-634fc1b4836b
138+
k8s.io/mount-utils => k8s.io/kubernetes/staging/src/k8s.io/mount-utils v0.0.0-20240312153413-634fc1b4836b
139+
k8s.io/pod-security-admission => k8s.io/kubernetes/staging/src/k8s.io/pod-security-admission v0.0.0-20240312153413-634fc1b4836b
140+
k8s.io/sample-apiserver => k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v0.0.0-20240312153413-634fc1b4836b
139141
)

go.sum

+28-28
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
191191
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
192192
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
193193
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
194-
golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
195-
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
194+
golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
195+
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
196196
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
197197
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
198198
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -239,8 +239,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
239239
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
240240
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
241241
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
242-
golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
243-
golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
242+
golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ=
243+
golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg=
244244
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
245245
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
246246
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -272,30 +272,30 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
272272
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
273273
k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
274274
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
275-
k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e h1:snPmy96t93RredGRjKfMFt+gvxuVAncqSAyBveJtr4Q=
276-
k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
277-
k8s.io/kubernetes v1.30.0-alpha.3 h1:iNXxeu3ppkuOuUQ+apUVap8UROzQQw1ToOls9doIzo0=
278-
k8s.io/kubernetes v1.30.0-alpha.3/go.mod h1:aW3opQ6TOnY8LHHsjQDykd7OByY5Ybd4FBXQlTlNDXw=
279-
k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240227131458-12217672a351 h1:f6vteP7GMBmMtLUS5+QOpE1r4PhhZWb9Ro+kjUTDOCo=
280-
k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240227131458-12217672a351/go.mod h1:d9PlyLI9hAI8M/nG5InZMhUwGFkcIj2nXezZzTJaqTo=
281-
k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240227131458-12217672a351 h1:N1cw/xHiRzbuKdfdKZmffO3pZrpfJ6qvCqsdfx+z63w=
282-
k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240227131458-12217672a351/go.mod h1:PhU6beDeeh0pfYyJcjA2l7jWs1prRXAdw2z+GbJEiQY=
283-
k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240227131458-12217672a351 h1:htyDXn+v/ITypZXFnS6Y25fQSn0KXzzoj4AUIFzm6TA=
284-
k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240227131458-12217672a351/go.mod h1:Z+wkny2xDaiGrvbiAi++8sRbKevNjf9v2JI3RSGn0rk=
285-
k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240227131458-12217672a351 h1:kL36c+Y6xYWCuq/uEKCAasksqlesn2jOZ57Be/1UywY=
286-
k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240227131458-12217672a351/go.mod h1:MDGYvywVRTyTQiLWNu9fbm95Ex+/VcytEQfvw+M38JU=
287-
k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240227131458-12217672a351 h1:LTLUSuSvCOh6Wwyo5DHwd2udV9viGQhty/T/oe93Heo=
288-
k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240227131458-12217672a351/go.mod h1:pxb62the36wpqNcGW0u7iE3+qrOrJ1MUJoJAvNYOlJA=
289-
k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240227131458-12217672a351 h1:3/mSPZvsxkLp17InkEwnDIVe9hWvA7DE22y+SpztAhA=
290-
k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240227131458-12217672a351/go.mod h1:2tPwJ8NZSkiabV6iUIevqXy75ND9fDRBGgKWY3bpAME=
291-
k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240227131458-12217672a351 h1:iEpEMOU4+UwZS+NFIwQmlukwXL2SMhhIYFAPPdqhT7g=
292-
k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240227131458-12217672a351/go.mod h1:+plvexQz7so9WJhIGrIlVn/LcMXPs7Ek4OttlFWHrh8=
293-
k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240227131458-12217672a351 h1:h7T2Kh/bIFnkS8BBO2IcUbx9pgicxEE4vK0Qxx56Lak=
294-
k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240227131458-12217672a351/go.mod h1:SUvEs9PmXRJ3+DNFLIRkUzJLZZfv6TT6Hkl8QWkszk0=
295-
k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240227131458-12217672a351 h1:kOWwPVkDpNbHF1eCfMjbCjNxKakLe3TpYxt9kNsIIyk=
296-
k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240227131458-12217672a351/go.mod h1:w3WWto1QHcuxlTjjG5ib7A6btWDq6z3wt0xwip4Qow4=
297-
k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240227131458-12217672a351 h1:1ze4lmnBONOgWUEF9xebqMSGweGqhX3bG+GtbCGae+4=
298-
k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240227131458-12217672a351/go.mod h1:UrwcUgoT9Sa+qebcjbAVMxOYnVz0clhqseRLLnVayIE=
275+
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag=
276+
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98=
277+
k8s.io/kubernetes v1.30.0-beta.0 h1:/B/efs4o9Rv5dhEgDRfB8vi8ogyjkL3t2RqSddEG7kY=
278+
k8s.io/kubernetes v1.30.0-beta.0/go.mod h1:ILVgoD+wBeVDbSwR/yvroVfgUzrgdVqEoUIfEpW7yvo=
279+
k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240312153413-634fc1b4836b h1:FU5wuDm/V0MK8EaInVLRrrQiFabvFWavkQXZW492i48=
280+
k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240312153413-634fc1b4836b/go.mod h1:8Rw9VmXmXmuSW4IJfTnqz2xtVjFn/ZkkI2NEgdgQWdY=
281+
k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240312153413-634fc1b4836b h1:cwj6uSGwI4T4r2e9A7C7SUKow9YRwT3TxATYIxPJTyE=
282+
k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240312153413-634fc1b4836b/go.mod h1:GE+cT4/ytq9PFwbr87EYkULT3XjcjWHEn81Eb6liULY=
283+
k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240312153413-634fc1b4836b h1:5OPrKIYFvZcR5SCotpNAom8KTYmBW2xF/s2ucNyZ5Cw=
284+
k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240312153413-634fc1b4836b/go.mod h1:CpzoKKC+4kZ8D2cLu+d8XoaA0S6M97zeQoC2/UYLozI=
285+
k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240312153413-634fc1b4836b h1:0X8PVeo5RTxcNjrEt/wMo0IBu/YlX9cYQO8O8oL6stM=
286+
k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240312153413-634fc1b4836b/go.mod h1:Ka0C2STSAiLU0Ku7GK38ulQlc+sXQp8KErQ84zdIL8Q=
287+
k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240312153413-634fc1b4836b h1:bGfGuKDk9HHyhwY4D0SQmQ9XfDgmSslAQ5xOuI4opNM=
288+
k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240312153413-634fc1b4836b/go.mod h1:nMuSuaueZO8KaFIPgwi36bFoJIuhAggFha9rYvINJV4=
289+
k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240312153413-634fc1b4836b h1:JTX2isGVoabEsMzcyowtSqgfCVDLJViTWH6dg+1ciXI=
290+
k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240312153413-634fc1b4836b/go.mod h1:4pif5+phsKz0JXRbnlWHjYBd+00SgtTRBaYZxDGhMdI=
291+
k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240312153413-634fc1b4836b h1:OYOoidtCMHDzhLa54UFSAoTFIC27pD6KktxikoNefk0=
292+
k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240312153413-634fc1b4836b/go.mod h1:TIFfW5OczlGp+/cRIe65P8VDInW1Je6YRtYGv9ox2YY=
293+
k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240312153413-634fc1b4836b h1:+paDNUsjGGkuVHtYTCwrvFlkV/ZatLDfI/Nu5j+V8CQ=
294+
k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240312153413-634fc1b4836b/go.mod h1:js6uj8dAVJvpm7Avnf8wOF/wV5w/v8CrLXWP9wEA3Tw=
295+
k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240312153413-634fc1b4836b h1:V88raZFrhIWXUe5z6yJm3N3LEUEfQx9EzueykbVIkHQ=
296+
k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240312153413-634fc1b4836b/go.mod h1:P0Bkh22hMoabLOHqmrX73iTxs0lHKfzgzyR8x9U/dAU=
297+
k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240312153413-634fc1b4836b h1:mxYQ1p3eYcYJyajYZRkfF8JKGzl6QeMA51ZW1505UAk=
298+
k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240312153413-634fc1b4836b/go.mod h1:8XihhYHUXDjjvowEiyzqgsQ6No8S4V2mg9W2+mo6vo0=
299299
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
300300
k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
301301
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=

0 commit comments

Comments
 (0)