Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add --transport option to port-forward #1385

Merged
merged 1 commit into from
Mar 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/crictl/attach.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ var runtimeAttachCommand = &cli.Command{
Name: transportFlag,
Aliases: []string{"r"},
Value: transportSpdy,
Usage: fmt.Sprintf("Transport protocol to be used, must be one of: %s, %s", transportSpdy, transportWebsocket),
Usage: fmt.Sprintf("Transport protocol to use, one of: %s|%s", transportSpdy, transportWebsocket),
},
},
Action: func(c *cli.Context) error {
Expand Down
2 changes: 1 addition & 1 deletion cmd/crictl/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ var runtimeExecCommand = &cli.Command{
Name: transportFlag,
Aliases: []string{"r"},
Value: transportSpdy,
Usage: fmt.Sprintf("Transport protocol to be used, must be one of: %s, %s", transportSpdy, transportWebsocket),
Usage: fmt.Sprintf("Transport protocol to use, one of: %s|%s", transportSpdy, transportWebsocket),
},
},
Action: func(c *cli.Context) error {
Expand Down
40 changes: 34 additions & 6 deletions cmd/crictl/portforward.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ import (

"github.com/sirupsen/logrus"
"github.com/urfave/cli/v2"
restclient "k8s.io/client-go/rest"
"k8s.io/apimachinery/pkg/util/httpstream"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/portforward"
"k8s.io/client-go/transport/spdy"
internalapi "k8s.io/cri-api/pkg/apis"
Expand All @@ -36,6 +37,14 @@ var runtimePortForwardCommand = &cli.Command{
Name: "port-forward",
Usage: "Forward local port to a pod",
ArgsUsage: "POD-ID [LOCAL_PORT:]REMOTE_PORT",
Flags: []cli.Flag{
&cli.StringFlag{
Name: transportFlag,
Aliases: []string{"r"},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was r chosen here because t was already taken?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, on exec and attach.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah bummer.

Value: transportSpdy,
Usage: fmt.Sprintf("Transport protocol to use, one of: %s|%s", transportSpdy, transportWebsocket),
},
},
Action: func(c *cli.Context) error {
if c.NArg() < 2 {
return cli.ShowSubcommandHelp(c)
Expand All @@ -47,8 +56,9 @@ var runtimePortForwardCommand = &cli.Command{
}

var opts = portforwardOptions{
id: c.Args().Get(0),
ports: c.Args().Tail(),
id: c.Args().Get(0),
ports: c.Args().Tail(),
transport: c.String(transportFlag),
}
if err = PortForward(runtimeClient, opts); err != nil {
return fmt.Errorf("port forward: %w", err)
Expand Down Expand Up @@ -88,11 +98,10 @@ func PortForward(client internalapi.RuntimeService, opts portforwardOptions) err
}

logrus.Debugf("PortForward URL: %v", URL)
transport, upgrader, err := spdy.RoundTripperFor(&restclient.Config{})
dialer, err := getDialer(opts.transport, URL)
if err != nil {
return err
return fmt.Errorf("get dialer: %w", err)
}
dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport}, "POST", URL)

readyChan := make(chan struct{})

Expand All @@ -103,3 +112,22 @@ func PortForward(client internalapi.RuntimeService, opts portforwardOptions) err
}
return pf.ForwardPorts()
}

func getDialer(transport string, url *url.URL) (exec httpstream.Dialer, err error) {
config := &rest.Config{TLSClientConfig: rest.TLSClientConfig{Insecure: true}}

switch transport {
case transportSpdy:
tr, upgrader, err := spdy.RoundTripperFor(config)
if err != nil {
return nil, fmt.Errorf("get SPDY round tripper: %w", err)
}
return spdy.NewDialer(upgrader, &http.Client{Transport: tr}, "POST", url), nil

case transportWebsocket:
return portforward.NewSPDYOverWebsocketDialer(url, config)

default:
return nil, fmt.Errorf("unknown transport: %s", transport)
}
}
2 changes: 2 additions & 0 deletions cmd/crictl/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,8 @@ type portforwardOptions struct {
id string
// ports to forward
ports []string
// transport to be used
transport string
}

func getSortedKeys(m map[string]string) []string {
Expand Down
68 changes: 35 additions & 33 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
module github.com/kubernetes-sigs/cri-tools

go 1.21
go 1.22.0

toolchain go1.22.1

require (
github.com/distribution/reference v0.5.0
Expand Down Expand Up @@ -84,10 +86,10 @@ require (
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
go.opentelemetry.io/otel/metric v1.24.0 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
golang.org/x/mod v0.14.0 // indirect
golang.org/x/mod v0.15.0 // indirect
golang.org/x/oauth2 v0.15.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.17.0 // indirect
golang.org/x/tools v0.18.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
Expand All @@ -100,40 +102,40 @@ require (
k8s.io/cli-runtime v0.0.0 // indirect
k8s.io/component-base v0.0.0 // indirect
k8s.io/klog/v2 v2.120.1 // indirect
k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e // indirect
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
)

replace (
k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240227131458-12217672a351
k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240227131458-12217672a351
k8s.io/apimachinery => k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240227131458-12217672a351
k8s.io/apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240227131458-12217672a351
k8s.io/cli-runtime => k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240227131458-12217672a351
k8s.io/client-go => k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240227131458-12217672a351
k8s.io/cloud-provider => k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v0.0.0-20240227131458-12217672a351
k8s.io/cluster-bootstrap => k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v0.0.0-20240227131458-12217672a351
k8s.io/code-generator => k8s.io/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20240227131458-12217672a351
k8s.io/component-base => k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240227131458-12217672a351
k8s.io/component-helpers => k8s.io/kubernetes/staging/src/k8s.io/component-helpers v0.0.0-20240227131458-12217672a351
k8s.io/controller-manager => k8s.io/kubernetes/staging/src/k8s.io/controller-manager v0.0.0-20240227131458-12217672a351
k8s.io/cri-api => k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240227131458-12217672a351
k8s.io/csi-translation-lib => k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v0.0.0-20240227131458-12217672a351
k8s.io/dynamic-resource-allocation => k8s.io/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v0.0.0-20240227131458-12217672a351
k8s.io/endpointslice => k8s.io/kubernetes/staging/src/k8s.io/endpointslice v0.0.0-20240227131458-12217672a351
k8s.io/kms => k8s.io/kubernetes/staging/src/k8s.io/kms v0.0.0-20240227131458-12217672a351
k8s.io/kube-aggregator => k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v0.0.0-20240227131458-12217672a351
k8s.io/kube-controller-manager => k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v0.0.0-20240227131458-12217672a351
k8s.io/kube-proxy => k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v0.0.0-20240227131458-12217672a351
k8s.io/kube-scheduler => k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20240227131458-12217672a351
k8s.io/kubectl => k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240227131458-12217672a351
k8s.io/kubelet => k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240227131458-12217672a351
k8s.io/kubernetes => k8s.io/kubernetes v1.30.0-alpha.3
k8s.io/legacy-cloud-providers => k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v0.0.0-20240227131458-12217672a351
k8s.io/metrics => k8s.io/kubernetes/staging/src/k8s.io/metrics v0.0.0-20240227131458-12217672a351
k8s.io/mount-utils => k8s.io/kubernetes/staging/src/k8s.io/mount-utils v0.0.0-20240227131458-12217672a351
k8s.io/pod-security-admission => k8s.io/kubernetes/staging/src/k8s.io/pod-security-admission v0.0.0-20240227131458-12217672a351
k8s.io/sample-apiserver => k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v0.0.0-20240227131458-12217672a351
k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240312153413-634fc1b4836b
k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240312153413-634fc1b4836b
k8s.io/apimachinery => k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240312153413-634fc1b4836b
k8s.io/apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240312153413-634fc1b4836b
k8s.io/cli-runtime => k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240312153413-634fc1b4836b
k8s.io/client-go => k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240312153413-634fc1b4836b
k8s.io/cloud-provider => k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v0.0.0-20240312153413-634fc1b4836b
k8s.io/cluster-bootstrap => k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v0.0.0-20240312153413-634fc1b4836b
k8s.io/code-generator => k8s.io/kubernetes/staging/src/k8s.io/code-generator v0.0.0-20240312153413-634fc1b4836b
k8s.io/component-base => k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240312153413-634fc1b4836b
k8s.io/component-helpers => k8s.io/kubernetes/staging/src/k8s.io/component-helpers v0.0.0-20240312153413-634fc1b4836b
k8s.io/controller-manager => k8s.io/kubernetes/staging/src/k8s.io/controller-manager v0.0.0-20240312153413-634fc1b4836b
k8s.io/cri-api => k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240312153413-634fc1b4836b
k8s.io/csi-translation-lib => k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v0.0.0-20240312153413-634fc1b4836b
k8s.io/dynamic-resource-allocation => k8s.io/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v0.0.0-20240312153413-634fc1b4836b
k8s.io/endpointslice => k8s.io/kubernetes/staging/src/k8s.io/endpointslice v0.0.0-20240312153413-634fc1b4836b
k8s.io/kms => k8s.io/kubernetes/staging/src/k8s.io/kms v0.0.0-20240312153413-634fc1b4836b
k8s.io/kube-aggregator => k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v0.0.0-20240312153413-634fc1b4836b
k8s.io/kube-controller-manager => k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v0.0.0-20240312153413-634fc1b4836b
k8s.io/kube-proxy => k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v0.0.0-20240312153413-634fc1b4836b
k8s.io/kube-scheduler => k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v0.0.0-20240312153413-634fc1b4836b
k8s.io/kubectl => k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240312153413-634fc1b4836b
k8s.io/kubelet => k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240312153413-634fc1b4836b
k8s.io/kubernetes => k8s.io/kubernetes v1.30.0-beta.0
k8s.io/legacy-cloud-providers => k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v0.0.0-20240312153413-634fc1b4836b
k8s.io/metrics => k8s.io/kubernetes/staging/src/k8s.io/metrics v0.0.0-20240312153413-634fc1b4836b
k8s.io/mount-utils => k8s.io/kubernetes/staging/src/k8s.io/mount-utils v0.0.0-20240312153413-634fc1b4836b
k8s.io/pod-security-admission => k8s.io/kubernetes/staging/src/k8s.io/pod-security-admission v0.0.0-20240312153413-634fc1b4836b
k8s.io/sample-apiserver => k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v0.0.0-20240312153413-634fc1b4836b
)
56 changes: 28 additions & 28 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
Expand Down Expand Up @@ -239,8 +239,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ=
golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
Expand Down Expand Up @@ -272,30 +272,30 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e h1:snPmy96t93RredGRjKfMFt+gvxuVAncqSAyBveJtr4Q=
k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
k8s.io/kubernetes v1.30.0-alpha.3 h1:iNXxeu3ppkuOuUQ+apUVap8UROzQQw1ToOls9doIzo0=
k8s.io/kubernetes v1.30.0-alpha.3/go.mod h1:aW3opQ6TOnY8LHHsjQDykd7OByY5Ybd4FBXQlTlNDXw=
k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240227131458-12217672a351 h1:f6vteP7GMBmMtLUS5+QOpE1r4PhhZWb9Ro+kjUTDOCo=
k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240227131458-12217672a351/go.mod h1:d9PlyLI9hAI8M/nG5InZMhUwGFkcIj2nXezZzTJaqTo=
k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240227131458-12217672a351 h1:N1cw/xHiRzbuKdfdKZmffO3pZrpfJ6qvCqsdfx+z63w=
k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240227131458-12217672a351/go.mod h1:PhU6beDeeh0pfYyJcjA2l7jWs1prRXAdw2z+GbJEiQY=
k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240227131458-12217672a351 h1:htyDXn+v/ITypZXFnS6Y25fQSn0KXzzoj4AUIFzm6TA=
k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240227131458-12217672a351/go.mod h1:Z+wkny2xDaiGrvbiAi++8sRbKevNjf9v2JI3RSGn0rk=
k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240227131458-12217672a351 h1:kL36c+Y6xYWCuq/uEKCAasksqlesn2jOZ57Be/1UywY=
k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240227131458-12217672a351/go.mod h1:MDGYvywVRTyTQiLWNu9fbm95Ex+/VcytEQfvw+M38JU=
k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240227131458-12217672a351 h1:LTLUSuSvCOh6Wwyo5DHwd2udV9viGQhty/T/oe93Heo=
k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240227131458-12217672a351/go.mod h1:pxb62the36wpqNcGW0u7iE3+qrOrJ1MUJoJAvNYOlJA=
k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240227131458-12217672a351 h1:3/mSPZvsxkLp17InkEwnDIVe9hWvA7DE22y+SpztAhA=
k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240227131458-12217672a351/go.mod h1:2tPwJ8NZSkiabV6iUIevqXy75ND9fDRBGgKWY3bpAME=
k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240227131458-12217672a351 h1:iEpEMOU4+UwZS+NFIwQmlukwXL2SMhhIYFAPPdqhT7g=
k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240227131458-12217672a351/go.mod h1:+plvexQz7so9WJhIGrIlVn/LcMXPs7Ek4OttlFWHrh8=
k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240227131458-12217672a351 h1:h7T2Kh/bIFnkS8BBO2IcUbx9pgicxEE4vK0Qxx56Lak=
k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240227131458-12217672a351/go.mod h1:SUvEs9PmXRJ3+DNFLIRkUzJLZZfv6TT6Hkl8QWkszk0=
k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240227131458-12217672a351 h1:kOWwPVkDpNbHF1eCfMjbCjNxKakLe3TpYxt9kNsIIyk=
k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240227131458-12217672a351/go.mod h1:w3WWto1QHcuxlTjjG5ib7A6btWDq6z3wt0xwip4Qow4=
k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240227131458-12217672a351 h1:1ze4lmnBONOgWUEF9xebqMSGweGqhX3bG+GtbCGae+4=
k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240227131458-12217672a351/go.mod h1:UrwcUgoT9Sa+qebcjbAVMxOYnVz0clhqseRLLnVayIE=
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag=
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98=
k8s.io/kubernetes v1.30.0-beta.0 h1:/B/efs4o9Rv5dhEgDRfB8vi8ogyjkL3t2RqSddEG7kY=
k8s.io/kubernetes v1.30.0-beta.0/go.mod h1:ILVgoD+wBeVDbSwR/yvroVfgUzrgdVqEoUIfEpW7yvo=
k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240312153413-634fc1b4836b h1:FU5wuDm/V0MK8EaInVLRrrQiFabvFWavkQXZW492i48=
k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20240312153413-634fc1b4836b/go.mod h1:8Rw9VmXmXmuSW4IJfTnqz2xtVjFn/ZkkI2NEgdgQWdY=
k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240312153413-634fc1b4836b h1:cwj6uSGwI4T4r2e9A7C7SUKow9YRwT3TxATYIxPJTyE=
k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20240312153413-634fc1b4836b/go.mod h1:GE+cT4/ytq9PFwbr87EYkULT3XjcjWHEn81Eb6liULY=
k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240312153413-634fc1b4836b h1:5OPrKIYFvZcR5SCotpNAom8KTYmBW2xF/s2ucNyZ5Cw=
k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20240312153413-634fc1b4836b/go.mod h1:CpzoKKC+4kZ8D2cLu+d8XoaA0S6M97zeQoC2/UYLozI=
k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240312153413-634fc1b4836b h1:0X8PVeo5RTxcNjrEt/wMo0IBu/YlX9cYQO8O8oL6stM=
k8s.io/kubernetes/staging/src/k8s.io/apiserver v0.0.0-20240312153413-634fc1b4836b/go.mod h1:Ka0C2STSAiLU0Ku7GK38ulQlc+sXQp8KErQ84zdIL8Q=
k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240312153413-634fc1b4836b h1:bGfGuKDk9HHyhwY4D0SQmQ9XfDgmSslAQ5xOuI4opNM=
k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v0.0.0-20240312153413-634fc1b4836b/go.mod h1:nMuSuaueZO8KaFIPgwi36bFoJIuhAggFha9rYvINJV4=
k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240312153413-634fc1b4836b h1:JTX2isGVoabEsMzcyowtSqgfCVDLJViTWH6dg+1ciXI=
k8s.io/kubernetes/staging/src/k8s.io/client-go v0.0.0-20240312153413-634fc1b4836b/go.mod h1:4pif5+phsKz0JXRbnlWHjYBd+00SgtTRBaYZxDGhMdI=
k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240312153413-634fc1b4836b h1:OYOoidtCMHDzhLa54UFSAoTFIC27pD6KktxikoNefk0=
k8s.io/kubernetes/staging/src/k8s.io/component-base v0.0.0-20240312153413-634fc1b4836b/go.mod h1:TIFfW5OczlGp+/cRIe65P8VDInW1Je6YRtYGv9ox2YY=
k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240312153413-634fc1b4836b h1:+paDNUsjGGkuVHtYTCwrvFlkV/ZatLDfI/Nu5j+V8CQ=
k8s.io/kubernetes/staging/src/k8s.io/cri-api v0.0.0-20240312153413-634fc1b4836b/go.mod h1:js6uj8dAVJvpm7Avnf8wOF/wV5w/v8CrLXWP9wEA3Tw=
k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240312153413-634fc1b4836b h1:V88raZFrhIWXUe5z6yJm3N3LEUEfQx9EzueykbVIkHQ=
k8s.io/kubernetes/staging/src/k8s.io/kubectl v0.0.0-20240312153413-634fc1b4836b/go.mod h1:P0Bkh22hMoabLOHqmrX73iTxs0lHKfzgzyR8x9U/dAU=
k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240312153413-634fc1b4836b h1:mxYQ1p3eYcYJyajYZRkfF8JKGzl6QeMA51ZW1505UAk=
k8s.io/kubernetes/staging/src/k8s.io/kubelet v0.0.0-20240312153413-634fc1b4836b/go.mod h1:8XihhYHUXDjjvowEiyzqgsQ6No8S4V2mg9W2+mo6vo0=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
Expand Down
Loading
Loading