From 8de4aa7f75ea054cc6f8f7e28850962bd93dedce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jan 2023 09:38:09 -0500 Subject: [PATCH 1/9] build(deps): NOT bump sigs.k8s.io/gateway-api from 0.5.1 to 0.6.0 (#10038) * build(deps): bump sigs.k8s.io/gateway-api from 0.5.1 to 0.6.0 ** NOTE ** This was cherry-picked from 62d6d7cd52e3b889aaa2f112d1e353cd9b92dfd5 in order to acquire the `AddEventHandler` changes that went there. The actualy gateway-api bump was discarded. Bumps [sigs.k8s.io/gateway-api](https://github.com/kubernetes-sigs/gateway-api) from 0.5.1 to 0.6.0. - [Release notes](https://github.com/kubernetes-sigs/gateway-api/releases) - [Changelog](https://github.com/kubernetes-sigs/gateway-api/blob/main/CHANGELOG.md) - [Commits](https://github.com/kubernetes-sigs/gateway-api/compare/v0.5.1...v0.6.0) --- updated-dependencies: - dependency-name: sigs.k8s.io/gateway-api dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Account for possible errors returned from `AddEventHandler` In v0.26.0 client-go's `AddEventHandler` method for informers started returning a registration handle (that we ignore) and an error that we now surface up. * client-go v0.26.0 removed the openstack plugin * Temporary changes to trigger tests in k8s 1.21 - Adds an innocuous change to integration.yml so that all tests get triggered - Hard-code k8s version in `k3d cluster create` invocation to v1.21 * Revert "Temporary changes to trigger tests in k8s 1.21" This reverts commit 3e1fdd0e5e8d888a16c519bb04c045cb37352f81. Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alejandro Pedraza --- bin/install-deps | 1 - controller/api/destination/server.go | 20 ++- controller/api/destination/test_util.go | 20 ++- .../destination/watcher/endpoints_watcher.go | 24 ++- .../watcher/endpoints_watcher_test.go | 40 ++++- .../watcher/opaque_ports_watcher.go | 10 +- .../watcher/opaque_ports_watcher_test.go | 5 +- .../destination/watcher/profile_watcher.go | 9 +- .../watcher/profile_watcher_test.go | 10 +- .../api/destination/watcher/server_watcher.go | 10 +- go.mod | 65 ++++---- go.sum | 154 +++++++----------- .../service-mirror/cluster_watcher.go | 15 +- 13 files changed, 216 insertions(+), 167 deletions(-) diff --git a/bin/install-deps b/bin/install-deps index 161968b638154..de8f1a7bb61d1 100755 --- a/bin/install-deps +++ b/bin/install-deps @@ -58,7 +58,6 @@ CGO_ENABLED=0 GOOS=linux GOARCH=$arch go install -mod=readonly \ k8s.io/client-go/plugin/pkg/client/auth/azure \ k8s.io/client-go/plugin/pkg/client/auth/gcp \ k8s.io/client-go/plugin/pkg/client/auth/oidc \ - k8s.io/client-go/plugin/pkg/client/auth/openstack \ k8s.io/client-go/rest \ k8s.io/client-go/rest/watch \ k8s.io/client-go/tools/auth \ diff --git a/controller/api/destination/server.go b/controller/api/destination/server.go index e5f3927fbc93f..2b5021ea60654 100644 --- a/controller/api/destination/server.go +++ b/controller/api/destination/server.go @@ -80,10 +80,22 @@ func NewServer( return nil, err } - endpoints := watcher.NewEndpointsWatcher(k8sAPI, log, enableEndpointSlices) - opaquePorts := watcher.NewOpaquePortsWatcher(k8sAPI, log, defaultOpaquePorts) - profiles := watcher.NewProfileWatcher(k8sAPI, log) - servers := watcher.NewServerWatcher(k8sAPI, log) + endpoints, err := watcher.NewEndpointsWatcher(k8sAPI, log, enableEndpointSlices) + if err != nil { + return nil, err + } + opaquePorts, err := watcher.NewOpaquePortsWatcher(k8sAPI, log, defaultOpaquePorts) + if err != nil { + return nil, err + } + profiles, err := watcher.NewProfileWatcher(k8sAPI, log) + if err != nil { + return nil, err + } + servers, err := watcher.NewServerWatcher(k8sAPI, log) + if err != nil { + return nil, err + } srv := server{ pb.UnimplementedDestinationServer{}, diff --git a/controller/api/destination/test_util.go b/controller/api/destination/test_util.go index 117bdfc253e5d..61a4be2af5ae5 100644 --- a/controller/api/destination/test_util.go +++ b/controller/api/destination/test_util.go @@ -381,10 +381,22 @@ spec: t.Fatalf("initializeIndexers returned an error: %s", err) } - endpoints := watcher.NewEndpointsWatcher(k8sAPI, log, false) - opaquePorts := watcher.NewOpaquePortsWatcher(k8sAPI, log, defaultOpaquePorts) - profiles := watcher.NewProfileWatcher(k8sAPI, log) - servers := watcher.NewServerWatcher(k8sAPI, log) + endpoints, err := watcher.NewEndpointsWatcher(k8sAPI, log, false) + if err != nil { + t.Fatalf("can't create Endpoints watcher: %s", err) + } + opaquePorts, err := watcher.NewOpaquePortsWatcher(k8sAPI, log, defaultOpaquePorts) + if err != nil { + t.Fatalf("can't create opaque ports watcher: %s", err) + } + profiles, err := watcher.NewProfileWatcher(k8sAPI, log) + if err != nil { + t.Fatalf("can't create profile watcher: %s", err) + } + servers, err := watcher.NewServerWatcher(k8sAPI, log) + if err != nil { + t.Fatalf("can't create Server watcher: %s", err) + } // Sync after creating watchers so that the the indexers added get updated // properly diff --git a/controller/api/destination/watcher/endpoints_watcher.go b/controller/api/destination/watcher/endpoints_watcher.go index 25657a0702a43..bca7e16b55ce4 100644 --- a/controller/api/destination/watcher/endpoints_watcher.go +++ b/controller/api/destination/watcher/endpoints_watcher.go @@ -134,7 +134,7 @@ var undefinedEndpointPort = Port(0) // NewEndpointsWatcher creates an EndpointsWatcher and begins watching the // k8sAPI for pod, service, and endpoint changes. An EndpointsWatcher will // watch on Endpoints or EndpointSlice resources, depending on cluster configuration. -func NewEndpointsWatcher(k8sAPI *k8s.API, log *logging.Entry, enableEndpointSlices bool) *EndpointsWatcher { +func NewEndpointsWatcher(k8sAPI *k8s.API, log *logging.Entry, enableEndpointSlices bool) (*EndpointsWatcher, error) { ew := &EndpointsWatcher{ publishers: make(map[ServiceID]*servicePublisher), k8sAPI: k8sAPI, @@ -144,34 +144,46 @@ func NewEndpointsWatcher(k8sAPI *k8s.API, log *logging.Entry, enableEndpointSlic }), } - k8sAPI.Svc().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := k8sAPI.Svc().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: ew.addService, DeleteFunc: ew.deleteService, UpdateFunc: func(_, obj interface{}) { ew.addService(obj) }, }) + if err != nil { + return nil, err + } - k8sAPI.Srv().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ + _, err = k8sAPI.Srv().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: ew.addServer, DeleteFunc: ew.deleteServer, UpdateFunc: func(_, obj interface{}) { ew.addServer(obj) }, }) + if err != nil { + return nil, err + } if ew.enableEndpointSlices { ew.log.Debugf("Watching EndpointSlice resources") - k8sAPI.ES().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := k8sAPI.ES().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: ew.addEndpointSlice, DeleteFunc: ew.deleteEndpointSlice, UpdateFunc: ew.updateEndpointSlice, }) + if err != nil { + return nil, err + } } else { ew.log.Debugf("Watching Endpoints resources") - k8sAPI.Endpoint().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ + _, err = k8sAPI.Endpoint().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: ew.addEndpoints, DeleteFunc: ew.deleteEndpoints, UpdateFunc: func(_, obj interface{}) { ew.addEndpoints(obj) }, }) + if err != nil { + return nil, err + } } - return ew + return ew, nil } //////////////////////// diff --git a/controller/api/destination/watcher/endpoints_watcher_test.go b/controller/api/destination/watcher/endpoints_watcher_test.go index 8d1ac0366431b..b685c8c981b03 100644 --- a/controller/api/destination/watcher/endpoints_watcher_test.go +++ b/controller/api/destination/watcher/endpoints_watcher_test.go @@ -665,7 +665,10 @@ status: t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), false) + watcher, err := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), false) + if err != nil { + t.Fatalf("can't create Endpoints watcher: %s", err) + } k8sAPI.Sync(nil) @@ -1281,7 +1284,10 @@ status: t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), true) + watcher, err := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), true) + if err != nil { + t.Fatalf("can't create Endpoints watcher: %s", err) + } k8sAPI.Sync(nil) @@ -1398,7 +1404,10 @@ status: t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), false) + watcher, err := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), false) + if err != nil { + t.Fatalf("can't create Endpoints watcher: %s", err) + } k8sAPI.Sync(nil) @@ -1519,7 +1528,10 @@ status: t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), true) + watcher, err := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), true) + if err != nil { + t.Fatalf("can't create Endpoints watcher: %s", err) + } k8sAPI.Sync(nil) @@ -1746,7 +1758,10 @@ subsets: t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), tt.enableEndpointSlices) + watcher, err := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), tt.enableEndpointSlices) + if err != nil { + t.Fatalf("can't create Endpoints watcher: %s", err) + } k8sAPI.Sync(nil) @@ -1906,7 +1921,10 @@ subsets: t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), false) + watcher, err := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), false) + if err != nil { + t.Fatalf("can't create Endpoints watcher: %s", err) + } k8sAPI.Sync(nil) @@ -2029,7 +2047,10 @@ status: t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), false) + watcher, err := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), false) + if err != nil { + t.Fatalf("can't create Endpoints watcher: %s", err) + } k8sAPI.Sync(nil) @@ -2122,7 +2143,10 @@ status: t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), true) + watcher, err := NewEndpointsWatcher(k8sAPI, logging.WithField("test", t.Name()), true) + if err != nil { + t.Fatalf("can't create Endpoints watcher: %s", err) + } k8sAPI.Sync(nil) diff --git a/controller/api/destination/watcher/opaque_ports_watcher.go b/controller/api/destination/watcher/opaque_ports_watcher.go index 0b9da47ca3413..afcde309545bb 100644 --- a/controller/api/destination/watcher/opaque_ports_watcher.go +++ b/controller/api/destination/watcher/opaque_ports_watcher.go @@ -37,19 +37,23 @@ type ( // NewOpaquePortsWatcher creates a OpaquePortsWatcher and begins watching for // k8sAPI for service changes. -func NewOpaquePortsWatcher(k8sAPI *k8s.API, log *logging.Entry, opaquePorts map[uint32]struct{}) *OpaquePortsWatcher { +func NewOpaquePortsWatcher(k8sAPI *k8s.API, log *logging.Entry, opaquePorts map[uint32]struct{}) (*OpaquePortsWatcher, error) { opw := &OpaquePortsWatcher{ subscriptions: make(map[ServiceID]*svcSubscriptions), k8sAPI: k8sAPI, log: log.WithField("component", "opaque-ports-watcher"), defaultOpaquePorts: opaquePorts, } - k8sAPI.Svc().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := k8sAPI.Svc().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: opw.addService, DeleteFunc: opw.deleteService, UpdateFunc: func(_, obj interface{}) { opw.addService(obj) }, }) - return opw + if err != nil { + return nil, err + } + + return opw, nil } // Subscribe subscribes a listener to a service; each time the service diff --git a/controller/api/destination/watcher/opaque_ports_watcher_test.go b/controller/api/destination/watcher/opaque_ports_watcher_test.go index bce866d80e7c9..9b94cb202f24f 100644 --- a/controller/api/destination/watcher/opaque_ports_watcher_test.go +++ b/controller/api/destination/watcher/opaque_ports_watcher_test.go @@ -218,7 +218,10 @@ func TestOpaquePortsWatcher(t *testing.T) { if err != nil { t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewOpaquePortsWatcher(k8sAPI, logging.WithField("test", t.Name()), defaultOpaquePorts) + watcher, err := NewOpaquePortsWatcher(k8sAPI, logging.WithField("test", t.Name()), defaultOpaquePorts) + if err != nil { + t.Fatalf("can't create opaque ports watcher: %s", err) + } k8sAPI.Sync(nil) listener := newTestOpaquePortsListener() watcher.Subscribe(tt.service, listener) diff --git a/controller/api/destination/watcher/profile_watcher.go b/controller/api/destination/watcher/profile_watcher.go index 859f67a81c9a5..ec52f96bd2811 100644 --- a/controller/api/destination/watcher/profile_watcher.go +++ b/controller/api/destination/watcher/profile_watcher.go @@ -44,22 +44,25 @@ var profileVecs = newMetricsVecs("profile", []string{"namespace", "profile"}) // NewProfileWatcher creates a ProfileWatcher and begins watching the k8sAPI for // service profile changes. -func NewProfileWatcher(k8sAPI *k8s.API, log *logging.Entry) *ProfileWatcher { +func NewProfileWatcher(k8sAPI *k8s.API, log *logging.Entry) (*ProfileWatcher, error) { watcher := &ProfileWatcher{ profileLister: k8sAPI.SP().Lister(), profiles: make(map[ProfileID]*profilePublisher), log: log.WithField("component", "profile-watcher"), } - k8sAPI.SP().Informer().AddEventHandler( + _, err := k8sAPI.SP().Informer().AddEventHandler( cache.ResourceEventHandlerFuncs{ AddFunc: watcher.addProfile, UpdateFunc: watcher.updateProfile, DeleteFunc: watcher.deleteProfile, }, ) + if err != nil { + return nil, err + } - return watcher + return watcher, nil } ////////////////////// diff --git a/controller/api/destination/watcher/profile_watcher_test.go b/controller/api/destination/watcher/profile_watcher_test.go index fa6b6242f3b6d..02af3ca9d74ba 100644 --- a/controller/api/destination/watcher/profile_watcher_test.go +++ b/controller/api/destination/watcher/profile_watcher_test.go @@ -84,7 +84,10 @@ func TestProfileWatcherUpdates(t *testing.T) { t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewProfileWatcher(k8sAPI, logging.WithField("test", t.Name())) + watcher, err := NewProfileWatcher(k8sAPI, logging.WithField("test", t.Name())) + if err != nil { + t.Fatalf("can't create profile watcher: %s", err) + } k8sAPI.Sync(nil) @@ -136,7 +139,10 @@ func TestProfileWatcherDeletes(t *testing.T) { t.Fatalf("NewFakeAPI returned an error: %s", err) } - watcher := NewProfileWatcher(k8sAPI, logging.WithField("test", t.Name())) + watcher, err := NewProfileWatcher(k8sAPI, logging.WithField("test", t.Name())) + if err != nil { + t.Fatalf("can't create profile watcher: %s", err) + } k8sAPI.Sync(nil) listener := NewDeletingProfileListener() diff --git a/controller/api/destination/watcher/server_watcher.go b/controller/api/destination/watcher/server_watcher.go index e703393870ce5..91dd01fa4eb41 100644 --- a/controller/api/destination/watcher/server_watcher.go +++ b/controller/api/destination/watcher/server_watcher.go @@ -37,18 +37,22 @@ type ServerUpdateListener interface { } // NewServerWatcher creates a new ServerWatcher. -func NewServerWatcher(k8sAPI *k8s.API, log *logging.Entry) *ServerWatcher { +func NewServerWatcher(k8sAPI *k8s.API, log *logging.Entry) (*ServerWatcher, error) { sw := &ServerWatcher{ subscriptions: make(map[podPort][]ServerUpdateListener), k8sAPI: k8sAPI, log: log, } - k8sAPI.Srv().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := k8sAPI.Srv().Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: sw.addServer, DeleteFunc: sw.deleteServer, UpdateFunc: func(_, obj interface{}) { sw.addServer(obj) }, }) - return sw + if err != nil { + return nil, err + } + + return sw, nil } // Subscribe subscribes a listener for any Server updates that may select the diff --git a/go.mod b/go.mod index 3a5bed5e3ea20..a4c68b4d341df 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/emicklei/proto v1.11.0 github.com/evanphx/json-patch v5.6.0+incompatible github.com/fatih/color v1.13.0 - github.com/fsnotify/fsnotify v1.5.4 + github.com/fsnotify/fsnotify v1.6.0 github.com/ghodss/yaml v1.0.0 github.com/go-openapi/spec v0.20.7 github.com/go-test/deep v1.0.8 @@ -27,26 +27,26 @@ require ( github.com/nsf/termbox-go v0.0.0-20180613055208-5c94acc5e6eb github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/browser v0.0.0-20170505125900-c90ca0c84f15 - github.com/prometheus/client_golang v1.13.0 + github.com/prometheus/client_golang v1.14.0 github.com/prometheus/common v0.37.0 github.com/sergi/go-diff v1.2.0 github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd github.com/sirupsen/logrus v1.9.0 - github.com/spf13/cobra v1.5.0 + github.com/spf13/cobra v1.6.0 github.com/spf13/pflag v1.0.5 go.opencensus.io v0.23.0 - golang.org/x/net v0.0.0-20220722155237-a158d28d115b - golang.org/x/tools v0.1.12 + golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10 + golang.org/x/tools v0.2.0 google.golang.org/grpc v1.50.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.2.0 google.golang.org/protobuf v1.28.1 helm.sh/helm/v3 v3.9.4 - k8s.io/api v0.24.3 - k8s.io/apiextensions-apiserver v0.24.2 - k8s.io/apimachinery v0.24.3 - k8s.io/client-go v0.24.3 - k8s.io/code-generator v0.25.2 + k8s.io/api v0.26.0 + k8s.io/apiextensions-apiserver v0.26.0 + k8s.io/apimachinery v0.26.0 + k8s.io/client-go v0.26.0 + k8s.io/code-generator v0.26.0 k8s.io/klog/v2 v2.80.1 k8s.io/kube-aggregator v0.23.5 sigs.k8s.io/gateway-api v0.5.0 @@ -55,20 +55,13 @@ require ( require ( github.com/AdaLogics/go-fuzz-headers v0.0.0-20220408101031-f1761e18c0c6 - github.com/prometheus/client_model v0.2.0 + github.com/prometheus/client_model v0.3.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - cloud.google.com/go v0.99.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/Azure/go-autorest v14.2.0+incompatible // indirect - github.com/Azure/go-autorest/autorest v0.11.24 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect - github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect - github.com/Azure/go-autorest/logger v0.2.1 // indirect - github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/BurntSushi/toml v1.0.0 // indirect + github.com/BurntSushi/toml v1.1.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.1.1 // indirect github.com/Masterminds/sprig/v3 v3.2.2 // indirect @@ -96,11 +89,10 @@ require ( github.com/go-openapi/swag v0.19.15 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.2.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/btree v1.0.1 // indirect github.com/google/gnostic v0.5.7-v3refs // indirect - github.com/google/go-cmp v0.5.8 // indirect + github.com/google/go-cmp v0.5.9 // indirect github.com/google/go-containerregistry v0.7.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect @@ -109,7 +101,7 @@ require ( github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/huandu/xstrings v1.3.2 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.13.6 // indirect @@ -131,40 +123,39 @@ require ( github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect github.com/spf13/cast v1.4.1 // indirect - github.com/stretchr/testify v1.7.2 // indirect + github.com/stretchr/objx v0.4.0 // indirect github.com/vbatts/tar-split v0.11.2 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect - github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect + github.com/xlab/treeprint v1.1.0 // indirect go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect - golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect - golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect + golang.org/x/crypto v0.1.0 // indirect + golang.org/x/mod v0.6.0 // indirect golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect - golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect - golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect - golang.org/x/text v0.3.7 // indirect + golang.org/x/sys v0.3.0 // indirect + golang.org/x/term v0.3.0 // indirect + golang.org/x/text v0.5.0 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect google.golang.org/api v0.62.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/cli-runtime v0.24.2 // indirect - k8s.io/gengo v0.0.0-20211129171323-c02415ce4185 // indirect - k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 // indirect - k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect + k8s.io/cli-runtime v0.25.2 // indirect + k8s.io/gengo v0.0.0-20220902162205-c0856e24416d // indirect + k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect + k8s.io/utils v0.0.0-20221107191617-1a15be271d1d // indirect oras.land/oras-go v1.2.0 // indirect - sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect - sigs.k8s.io/kustomize/api v0.11.4 // indirect - sigs.k8s.io/kustomize/kyaml v0.13.6 // indirect + sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect + sigs.k8s.io/kustomize/api v0.12.1 // indirect + sigs.k8s.io/kustomize/kyaml v0.13.9 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) diff --git a/go.sum b/go.sum index 3b70ff9f06249..48a0cd26dfe9e 100644 --- a/go.sum +++ b/go.sum @@ -27,7 +27,6 @@ cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+Y cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM= -cloud.google.com/go v0.99.0 h1:y/cM2iqGgGi5D5DQZl6D9STN/3dR/Vx5Mp8s752oJTY= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= @@ -58,25 +57,16 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest v0.11.24 h1:1fIGgHKqVm54KIPT+q8Zmd1QlVsmHqeUGso5qm2BqqE= -github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ= -github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU= -github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I= +github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= @@ -109,7 +99,6 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -117,7 +106,6 @@ github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -130,7 +118,6 @@ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edY github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/briandowns/spinner v0.0.0-20190212173954-5cf08d0ac778 h1:Dmz6bJXocvwkw7BOz4jpyVZReGrkjs+fBDWKn5tBES4= github.com/briandowns/spinner v0.0.0-20190212173954-5cf08d0ac778/go.mod h1:hw/JEQBIE+c/BLI4aKM8UU8v+ZqrD3h7HC27kKt8JQU= github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= @@ -295,16 +282,16 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -370,11 +357,7 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= -github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -414,8 +397,6 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/cel-go v0.10.1/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= -github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -430,8 +411,8 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-containerregistry v0.7.0 h1:u0onUUOcyoCDHEiJoyR1R1gx5er1+r06V5DBhUU5ndk= github.com/google/go-containerregistry v0.7.0/go.mod h1:2zaoelrL0d08gGbpdP3LqyUuBmhWbpD6IOe2s9nLS2k= @@ -544,8 +525,9 @@ github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -699,7 +681,7 @@ github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.1.6 h1:Fx2POJZfKRQcM1pH49qSZiYeu319wji004qX+GDovrU= +github.com/onsi/ginkgo/v2 v2.4.0 h1:+Ig9nvqgS5OBSACXNk15PLdp0U9XPYROt9CFzVdFGIs= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -707,7 +689,7 @@ github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoT github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.20.1 h1:PA/3qinGoukvymdIDV8pii6tiZgC8kbmJO6Z5+b002Q= +github.com/onsi/gomega v1.23.0 h1:/oxKu9c2HVap+F3PfKort2Hw5DEU+HGlW8n+tguWsys= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= @@ -756,13 +738,14 @@ github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.13.0 h1:b71QUfeo5M8gq2+evJdTPfZhYMAU0uKPkyPJ7TPsloU= -github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -803,7 +786,6 @@ github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= @@ -839,9 +821,9 @@ github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHN github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= -github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= -github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= +github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI= +github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -857,16 +839,17 @@ github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= @@ -892,8 +875,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -914,7 +897,6 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3 go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/client/v3 v3.5.1/go.mod h1:OnjH4M8OnAotwaB2l9bVgZzRFKru7/ZMoS46OtKyd3Q= go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= @@ -974,12 +956,9 @@ golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1017,9 +996,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1082,8 +1060,9 @@ golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10 h1:Frnccbp+ok2GkUS2tC84yAq/U9Vg+0sIO7aRL3T4Xnc= +golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1220,20 +1199,21 @@ golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220405210540-1e041c57c461/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1242,8 +1222,9 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1321,9 +1302,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= 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= @@ -1406,7 +1386,6 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1440,7 +1419,6 @@ google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21 h1:hrbNEivu7Zn1pxvHk6MBrq9iE22woVILTHqexqBxe6I= google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1546,48 +1524,41 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= -k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg= -k8s.io/api v0.24.3 h1:tt55QEmKd6L2k5DP6G/ZzdMQKvG5ro4H4teClqm0sTY= -k8s.io/api v0.24.3/go.mod h1:elGR/XSZrS7z7cSZPzVWaycpJuGIw57j9b95/1PdJNI= -k8s.io/apiextensions-apiserver v0.24.2 h1:/4NEQHKlEz1MlaK/wHT5KMKC9UKYz6NZz6JE6ov4G6k= -k8s.io/apiextensions-apiserver v0.24.2/go.mod h1:e5t2GMFVngUEHUd0wuCJzw8YDwZoqZfJiGOW6mm2hLQ= +k8s.io/api v0.26.0 h1:IpPlZnxBpV1xl7TGk/X6lFtpgjgntCg8PJ+qrPHAC7I= +k8s.io/api v0.26.0/go.mod h1:k6HDTaIFC8yn1i6pSClSqIwLABIcLV9l5Q4EcngKnQg= +k8s.io/apiextensions-apiserver v0.26.0 h1:Gy93Xo1eg2ZIkNX/8vy5xviVSxwQulsnUdQ00nEdpDo= +k8s.io/apiextensions-apiserver v0.26.0/go.mod h1:7ez0LTiyW5nq3vADtK6C3kMESxadD51Bh6uz3JOlqWQ= k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= -k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= -k8s.io/apimachinery v0.24.3 h1:hrFiNSA2cBZqllakVYyH/VyEh4B581bQRmqATJSeQTg= -k8s.io/apimachinery v0.24.3/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= +k8s.io/apimachinery v0.26.0 h1:1feANjElT7MvPqp0JT6F3Ss6TWDwmcjLypwoPpEf7zg= +k8s.io/apimachinery v0.26.0/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74= k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= k8s.io/apiserver v0.23.5/go.mod h1:7wvMtGJ42VRxzgVI7jkbKvMbuCbVbgsWFT7RyXiRNTw= -k8s.io/apiserver v0.24.2/go.mod h1:pSuKzr3zV+L+MWqsEo0kHHYwCo77AT5qXbFXP2jbvFI= -k8s.io/cli-runtime v0.24.2 h1:KxY6tSgPGsahA6c1/dmR3uF5jOxXPx2QQY6C5ZrLmtE= -k8s.io/cli-runtime v0.24.2/go.mod h1:1LIhKL2RblkhfG4v5lZEt7FtgFG5mVb8wqv5lE9m5qY= +k8s.io/cli-runtime v0.25.2 h1:XOx+SKRjBpYMLY/J292BHTkmyDffl/qOx3YSuFZkTuc= +k8s.io/cli-runtime v0.25.2/go.mod h1:OQx3+/0st6x5YpkkJQlEWLC73V0wHsOFMC1/roxV8Oc= k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= -k8s.io/client-go v0.24.2/go.mod h1:zg4Xaoo+umDsfCWr4fCnmLEtQXyCNXCvJuSsglNcV30= -k8s.io/client-go v0.24.3 h1:Nl1840+6p4JqkFWEW2LnMKU667BUxw03REfLAVhuKQY= -k8s.io/client-go v0.24.3/go.mod h1:AAovolf5Z9bY1wIg2FZ8LPQlEdKHjLI7ZD4rw920BJw= +k8s.io/client-go v0.26.0 h1:lT1D3OfO+wIi9UFolCrifbjUUgu7CpLca0AD8ghRLI8= +k8s.io/client-go v0.26.0/go.mod h1:I2Sh57A79EQsDmn7F7ASpmru1cceh3ocVT9KlX2jEZg= k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= k8s.io/code-generator v0.23.5/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk= -k8s.io/code-generator v0.24.2/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w= -k8s.io/code-generator v0.25.2 h1:qEHux0+E1c+j1MhsWn9+4Z6av8zrZBixOTPW064rSiY= -k8s.io/code-generator v0.25.2/go.mod h1:f61OcU2VqVQcjt/6TrU0sta1TA5hHkOO6ZZPwkL9Eys= +k8s.io/code-generator v0.26.0 h1:ZDY+7Gic9p/lACgD1G72gQg2CvNGeAYZTPIncv+iALM= +k8s.io/code-generator v0.26.0/go.mod h1:OMoJ5Dqx1wgaQzKgc+ZWaZPfGjdRq/Y3WubFrZmeI3I= k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= k8s.io/component-base v0.23.5/go.mod h1:c5Nq44KZyt1aLl0IpHX82fhsn84Sb0jjzwjpcA42bY0= -k8s.io/component-base v0.24.2/go.mod h1:ucHwW76dajvQ9B7+zecZAP3BVqvrHoOxm8olHEg0nmM= k8s.io/cri-api v0.25.0/go.mod h1:J1rAyQkSJ2Q6I+aBMOVgg2/cbbebso6FNa0UagiR0kc= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20211129171323-c02415ce4185 h1:TT1WdmqqXareKxZ/oNXEUSwKlLiHzPMyB0t8BaFeBYI= -k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20220902162205-c0856e24416d h1:U9tB195lKdzwqicbJvyJeOXV7Klv+wNAWENRnXEGi08= +k8s.io/gengo v0.0.0-20220902162205-c0856e24416d/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-aggregator v0.23.5 h1:UZ+qE3hGo6DcgKySf27Jg7d3X9/6JQkVLUiHZAoAfCY= @@ -1596,15 +1567,14 @@ k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= -k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= -k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 h1:MQ8BAZPZlWk3S9K4a9NCkIFQtZShWqoha7snGixVgEA= -k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1/go.mod h1:C/N6wCaBHeBHkHUesQOQy2/MZqGgMAFPqGsGQLdbZBU= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20221107191617-1a15be271d1d h1:0Smp/HP1OH4Rvhe+4B8nWGERtlqAGSftbSbbmm45oFs= +k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.0 h1:yoKosVIbsPoFMqAIFHTnrmOuafHal+J/r+I5bdbVWu4= oras.land/oras-go v1.2.0/go.mod h1:pFNs7oHp2dYsYMSS82HaX5l4mpnGO7hbpPN6EWH2ltc= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= @@ -1615,12 +1585,12 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30/go.mod h1:fEO7lR sigs.k8s.io/gateway-api v0.5.0 h1:ze+k9fJqvmL8s1t3e4q1ST8RnN+f09dEv+gfacahlAE= sigs.k8s.io/gateway-api v0.5.0/go.mod h1:x0AP6gugkFV8fC/oTlnOMU0pnmuzIR8LfIPRVUjxSqA= sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/kustomize/api v0.11.4 h1:/0Mr3kfBBNcNPOW5Qwk/3eb8zkswCwnqQxxKtmrTkRo= -sigs.k8s.io/kustomize/api v0.11.4/go.mod h1:k+8RsqYbgpkIrJ4p9jcdPqe8DprLxFUUO0yNOq8C+xI= -sigs.k8s.io/kustomize/kyaml v0.13.6 h1:eF+wsn4J7GOAXlvajv6OknSunxpcOBQQqsnPxObtkGs= -sigs.k8s.io/kustomize/kyaml v0.13.6/go.mod h1:yHP031rn1QX1lr/Xd934Ri/xdVNG8BE2ECa78Ht/kEg= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/kustomize/api v0.12.1 h1:7YM7gW3kYBwtKvoY216ZzY+8hM+lV53LUayghNRJ0vM= +sigs.k8s.io/kustomize/api v0.12.1/go.mod h1:y3JUhimkZkR6sbLNwfJHxvo1TCLwuwm14sCYnkH6S1s= +sigs.k8s.io/kustomize/kyaml v0.13.9 h1:Qz53EAaFFANyNgyOEJbT/yoIHygK40/ZcvU3rgry2Tk= +sigs.k8s.io/kustomize/kyaml v0.13.9/go.mod h1:QsRbD0/KcU+wdk0/L0fIp2KLnohkVzs6fQ85/nOXac4= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= diff --git a/multicluster/service-mirror/cluster_watcher.go b/multicluster/service-mirror/cluster_watcher.go index a609f107ae25e..ca21274261c90 100644 --- a/multicluster/service-mirror/cluster_watcher.go +++ b/multicluster/service-mirror/cluster_watcher.go @@ -782,7 +782,7 @@ func (rcsw *RemoteClusterServiceWatcher) processEvents(ctx context.Context) { func (rcsw *RemoteClusterServiceWatcher) Start(ctx context.Context) error { rcsw.remoteAPIClient.Sync(rcsw.stopper) rcsw.eventsQueue.Add(&OrphanedServicesGcTriggered{}) - rcsw.remoteAPIClient.Svc().Informer().AddEventHandler( + _, err := rcsw.remoteAPIClient.Svc().Informer().AddEventHandler( cache.ResourceEventHandlerFuncs{ AddFunc: func(svc interface{}) { rcsw.eventsQueue.Add(&OnAddCalled{svc.(*corev1.Service)}) @@ -808,8 +808,11 @@ func (rcsw *RemoteClusterServiceWatcher) Start(ctx context.Context) error { }, }, ) + if err != nil { + return err + } - rcsw.remoteAPIClient.Endpoint().Informer().AddEventHandler( + _, err = rcsw.remoteAPIClient.Endpoint().Informer().AddEventHandler( cache.ResourceEventHandlerFuncs{ // AddFunc only relevant for exported headless endpoints AddFunc: func(obj interface{}) { @@ -845,14 +848,20 @@ func (rcsw *RemoteClusterServiceWatcher) Start(ctx context.Context) error { }, }, ) + if err != nil { + return err + } - rcsw.localAPIClient.NS().Informer().AddEventHandler( + _, err = rcsw.localAPIClient.NS().Informer().AddEventHandler( cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { rcsw.eventsQueue.Add(&OnLocalNamespaceAdded{obj.(*corev1.Namespace)}) }, }, ) + if err != nil { + return err + } go rcsw.processEvents(ctx) From d2c2e7368fda387196bf96791ccd658564972223 Mon Sep 17 00:00:00 2001 From: Alejandro Pedraza Date: Tue, 2 May 2023 08:56:41 -0500 Subject: [PATCH 2/9] Fix memory leak in service mirror (#10833) Fixes #10746 ## Repro Just by leaving two linked clusters by themselves and monitoring the service mirror pod's RSS (via the `container_memory_working_set_bytes` metric) and goroutines count (via the `go_goroutines` metric) one can see the small but consistent memory increase accompanied by periodic increases of goroutines in batches of 5. ![Screenshot from 2023-04-27 09-28-48](https://user-images.githubusercontent.com/554287/235007199-604dd517-47ae-4f95-a863-21ae16eca898.png) ## Diagnosis Those goroutines count increases can be correlated in the controller's log with the probe worker and cluster watcher recycling: ``` time="2023-04-27T10:06:14Z" level=info msg="Stopping probe worker" probe-key=target time="2023-04-27T10:06:14Z" level=info msg="Starting probe worker" probe-key=target time="2023-04-27T10:06:14Z" level=info msg="Received: Stop" apiAddress="https://192.168.32.4:6443" cluster=remote ``` Enabling pprof, the beginning of the goroutine stack dump look like this: ``` goroutine profile: total 94 10 @ 0x43c976 0x406d3b 0x406878 0x175ee77 0xb2aefe 0xb2adb6 0xb2aca9 0x175edeb 0x175ed95 0xb2cfda 0x46de41 # 0x175ee76 k8s.io/client-go/tools/cache.(*processorListener).run.func1+0x56 /go/pkg/mod/k8s.io/client-go@v0.27.1/tools/cache/shared_informer.go:968 # 0xb2aefd k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1+0x3d /go/pkg/mod/k8s.io/apimachinery@v0.27.1/pkg/util/wait/backoff.go:226 # 0xb2adb5 k8s.io/apimachinery/pkg/util/wait.BackoffUntil+0xb5 /go/pkg/mod/k8s.io/apimachinery@v0.27.1/pkg/util/wait/backoff.go:227 # 0xb2aca8 k8s.io/apimachinery/pkg/util/wait.JitterUntil+0x88 /go/pkg/mod/k8s.io/apimachinery@v0.27.1/pkg/util/wait/backoff.go:204 # 0x175edea k8s.io/apimachinery/pkg/util/wait.Until+0x6a /go/pkg/mod/k8s.io/apimachinery@v0.27.1/pkg/util/wait/backoff.go:161 # 0x175ed94 k8s.io/client-go/tools/cache.(*processorListener).run+0x14 /go/pkg/mod/k8s.io/client-go@v0.27.1/tools/cache/shared_informer.go:967 # 0xb2cfd9 k8s.io/apimachinery/pkg/util/wait.(*Group).Start.func1+0x59 /go/pkg/mod/k8s.io/apimachinery@v0.27.1/pkg/util/wait/wait.go:72 10 @ 0x43c976 0x44c81c 0x175eb99 0xb2cfda 0x46de41 # 0x175eb98 k8s.io/client-go/tools/cache.(*processorListener).pop+0x118 /go/pkg/mod/k8s.io/client-go@v0.27.1/tools/cache/shared_informer.go:938 # 0xb2cfd9 k8s.io/apimachinery/pkg/util/wait.(*Group).Start.func1+0x59 /go/pkg/mod/k8s.io/apimachinery@v0.27.1/pkg/util/wait/wait.go:72 8 @ 0x43c976 0x406d3b 0x406878 0x19f35d3 0x46de41 # 0x19f35d2 k8s.io/client-go/tools/record.(*eventBroadcasterImpl).StartEventWatcher.func1+0x72 /go/pkg/mod/k8s.io/client-go@v0.27.1/tools/record/event.go:320 8 @ 0x43c976 0x406d3b 0x406878 0xa88825 0x46de41 # 0xa88824 k8s.io/apimachinery/pkg/watch.(*Broadcaster).loop+0x64 /go/pkg/mod/k8s.io/apimachinery@v0.27.1/pkg/watch/mux.go:268 8 @ 0x43c976 0x46abb5 0x1a2a7a5 0x46de41 # 0x46abb4 time.Sleep+0x134 /usr/local/go/src/runtime/time.go:195 # 0x1a2a7a4 github.com/linkerd/linkerd2/multicluster/service-mirror.(*Ticker).loop+0x64 /linkerd-build/multicluster/service-mirror/jittered_ticker.go:55 ``` The number of goroutines shown here is almost the same as the number of goroutines count jumps we've seen in the chart when this was taken, which suggests these are indeed the leaks. The service mirror main function contains a loop that restarts the cluster watcher (and with it its probe worker) whenever the main watch following the Link resources terminates (I don't know why that happens). And some resources aren't getting cleaned up upon the restart, producing the leak. It would be interesting to see (as a followup) why that restart is required here, but not in the other controllers. ## Resolution We can map each one of those entries in the dump to these leaks: ### jitterred_ticker.go Each probe worker starts a jittered ticker, whose `Stop()` method was never called. Fixed that through a `defer` statement. ### event.go With every watcher restart a new k8s event recorder was instantiated but it wasn't cleaned. Added a `Shutdown()` call to the event's broadcaster in the cluster watcher's `Stop()` method. ### mux.go, shared_informer.go and friends The cluster watcher attached event handlers to informers for Services, Endpoints and Namespaces. Added `RemoveEventHandler()` to them on the cluster watcher's `Stop()` method. ## Result After the fix, we can see the goroutines count remains stable. ![image](https://user-images.githubusercontent.com/554287/235007727-3b3b6f31-901d-4c05-aedb-9fa3d3178ee1.png) --- .../service-mirror/cluster_watcher.go | 34 +++++++++++++++++-- multicluster/service-mirror/probe_worker.go | 1 + 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/multicluster/service-mirror/cluster_watcher.go b/multicluster/service-mirror/cluster_watcher.go index ca21274261c90..410a28bf06314 100644 --- a/multicluster/service-mirror/cluster_watcher.go +++ b/multicluster/service-mirror/cluster_watcher.go @@ -44,6 +44,7 @@ type ( remoteAPIClient *k8s.API localAPIClient *k8s.API stopper chan struct{} + eventBroadcaster record.EventBroadcaster recorder record.EventRecorder log *logging.Entry eventsQueue workqueue.RateLimitingInterface @@ -52,6 +53,14 @@ type ( gatewayAlive bool liveness chan bool headlessServicesEnabled bool + + informerHandlers + } + + informerHandlers struct { + svcHandler cache.ResourceEventHandlerRegistration + epHandler cache.ResourceEventHandlerRegistration + nsHandler cache.ResourceEventHandlerRegistration } // RemoteServiceCreated is generated whenever a remote service is created Observing @@ -185,6 +194,7 @@ func NewRemoteClusterServiceWatcher( remoteAPIClient: remoteAPI, localAPIClient: localAPI, stopper: stopper, + eventBroadcaster: eventBroadcaster, recorder: recorder, log: logging.WithFields(logging.Fields{ "cluster": clusterName, @@ -782,7 +792,8 @@ func (rcsw *RemoteClusterServiceWatcher) processEvents(ctx context.Context) { func (rcsw *RemoteClusterServiceWatcher) Start(ctx context.Context) error { rcsw.remoteAPIClient.Sync(rcsw.stopper) rcsw.eventsQueue.Add(&OrphanedServicesGcTriggered{}) - _, err := rcsw.remoteAPIClient.Svc().Informer().AddEventHandler( + var err error + rcsw.svcHandler, err = rcsw.remoteAPIClient.Svc().Informer().AddEventHandler( cache.ResourceEventHandlerFuncs{ AddFunc: func(svc interface{}) { rcsw.eventsQueue.Add(&OnAddCalled{svc.(*corev1.Service)}) @@ -812,7 +823,7 @@ func (rcsw *RemoteClusterServiceWatcher) Start(ctx context.Context) error { return err } - _, err = rcsw.remoteAPIClient.Endpoint().Informer().AddEventHandler( + rcsw.epHandler, err = rcsw.remoteAPIClient.Endpoint().Informer().AddEventHandler( cache.ResourceEventHandlerFuncs{ // AddFunc only relevant for exported headless endpoints AddFunc: func(obj interface{}) { @@ -852,7 +863,7 @@ func (rcsw *RemoteClusterServiceWatcher) Start(ctx context.Context) error { return err } - _, err = rcsw.localAPIClient.NS().Informer().AddEventHandler( + rcsw.nsHandler, err = rcsw.localAPIClient.NS().Informer().AddEventHandler( cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { rcsw.eventsQueue.Add(&OnLocalNamespaceAdded{obj.(*corev1.Namespace)}) @@ -898,6 +909,23 @@ func (rcsw *RemoteClusterServiceWatcher) Stop(cleanupState bool) { rcsw.eventsQueue.Add(&ClusterUnregistered{}) } rcsw.eventsQueue.ShutDown() + rcsw.eventBroadcaster.Shutdown() + + if rcsw.svcHandler != nil { + if err := rcsw.remoteAPIClient.Svc().Informer().RemoveEventHandler(rcsw.svcHandler); err != nil { + rcsw.log.Warnf("error removing service informer handler: %s", err) + } + } + if rcsw.epHandler != nil { + if err := rcsw.remoteAPIClient.Endpoint().Informer().RemoveEventHandler(rcsw.epHandler); err != nil { + rcsw.log.Warnf("error removing service informer handler: %s", err) + } + } + if rcsw.nsHandler != nil { + if err := rcsw.localAPIClient.NS().Informer().RemoveEventHandler(rcsw.nsHandler); err != nil { + rcsw.log.Warnf("error removing service informer handler: %s", err) + } + } } func (rcsw *RemoteClusterServiceWatcher) resolveGatewayAddress() ([]corev1.EndpointAddress, error) { diff --git a/multicluster/service-mirror/probe_worker.go b/multicluster/service-mirror/probe_worker.go index 9992eaf216262..297c60cdeffd0 100644 --- a/multicluster/service-mirror/probe_worker.go +++ b/multicluster/service-mirror/probe_worker.go @@ -66,6 +66,7 @@ func (pw *ProbeWorker) run() { probeTickerPeriod := pw.probeSpec.Period maxJitter := pw.probeSpec.Period / 10 // max jitter is 10% of period probeTicker := NewTicker(probeTickerPeriod, maxJitter) + defer probeTicker.Stop() probeLoop: for { From 43afac1e74cf19b962e10155337cc8db2b2d543b Mon Sep 17 00:00:00 2001 From: Oliver Gould Date: Thu, 16 Feb 2023 08:25:42 -0800 Subject: [PATCH 3/9] Update to dev:v39 with Go 1.19 (#10336) --- .devcontainer/devcontainer.json | 2 +- .github/workflows/actions.yml | 13 +- .github/workflows/codecov.yml | 2 +- .github/workflows/devcontainer.yml | 22 +--- .github/workflows/go.yml | 6 +- .github/workflows/helm.yml | 7 +- .github/workflows/integration.yml | 19 ++- .github/workflows/proto.yml | 5 +- .github/workflows/release.yml | 8 +- .github/workflows/rust.yml | 8 +- .github/workflows/shell.yml | 4 +- Dockerfile-proxy | 2 +- bin/fmt | 2 +- cli/Dockerfile | 2 +- cni-plugin/Dockerfile | 2 +- controller/Dockerfile | 2 +- controller/gen/common/net/net.pb.go | 1 + go.mod | 2 +- jaeger/injector/Dockerfile | 2 +- justfile | 2 +- .../deep/opaqueports/assertions.go | 117 ++++++++++-------- .../upgrade-edge/upgrade_edge_test.go | 6 - .../upgrade-stable/upgrade_stable_test.go | 6 - testutil/doc.go | 2 - tools.go | 3 +- viz/metrics-api/Dockerfile | 2 +- viz/metrics-api/gen/viz/viz.pb.go | 14 +++ viz/tap/Dockerfile | 2 +- viz/tap/api/grpc_server.go | 1 + viz/tap/gen/tap/viz_tap.pb.go | 7 ++ web/Dockerfile | 2 +- 31 files changed, 139 insertions(+), 136 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b9b1b99688d73..d4a718aa73071 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ { "name": "linkerd2", - "image": "ghcr.io/linkerd/dev:v30", + "image": "ghcr.io/linkerd/dev:v39", // "dockerFile": "./Dockerfile", // "context": "..", "extensions": [ diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index d82050e1f46f5..24a499263cd26 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -13,15 +13,14 @@ jobs: actionlint: runs-on: ubuntu-20.04 timeout-minutes: 10 - container: ghcr.io/linkerd/dev:v30-tools steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - name: Run actionlint - run: just action-lint + - uses: linkerd/dev/actions/setup-tools@v39 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + - run: just-dev lint-actions devcontainer-versions: runs-on: ubuntu-latest - container: ghcr.io/linkerd/dev:v30-tools steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - run: just action-dev-check + - uses: linkerd/dev/actions/setup-tools@v39 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + - run: just-dev check-action-images diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index b95144ff294e3..c1da60b74d1aa 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -14,7 +14,7 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-20.04 container: - image: golang:1.18 + image: golang:1.19 steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: go install gotest.tools/gotestsum@v0.4.2 diff --git a/.github/workflows/devcontainer.yml b/.github/workflows/devcontainer.yml index dfc0b95fc6b2a..e29f407006d9c 100644 --- a/.github/workflows/devcontainer.yml +++ b/.github/workflows/devcontainer.yml @@ -15,7 +15,7 @@ permissions: jobs: rust-version: runs-on: ubuntu-latest - container: ghcr.io/linkerd/dev:v30-rust + container: ghcr.io/linkerd/dev:v39-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: | @@ -29,20 +29,6 @@ jobs: devcontainer-image: runs-on: ubuntu-latest steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - run: | - export DEBIAN_FRONTEND=noninteractive - sudo apt-get update - sudo apt-get -y --no-install-recommends install jq - - run: | - # Strip jsonc comments because `jq` doesn't support them. - image=$(sed -E '/^\s*\/\/.*/d' .devcontainer/devcontainer.json |jq -Mr .image) - line=$(grep -nF '"image"' .devcontainer/devcontainer.json |cut -d':' -f1 |head -n1) - if [ "$image" == "null" ]; then - echo "::error file=.devcontainer/devcontainer.json,line=$line::Missing image" - exit 1 - fi - if ! docker pull "$image" ; then - echo "::error file=.devcontainer/devcontainer.json,line=$line::Unable to pull image: $image" - exit 1 - fi + - uses: linkerd/dev/actions/setup-tools@v39 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + - run: just-dev pull-dev-image diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 8cffff77d81f2..b6e7450a3131e 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -16,7 +16,7 @@ jobs: go-lint: timeout-minutes: 10 runs-on: ubuntu-20.04 - container: ghcr.io/linkerd/dev:v30-go + container: ghcr.io/linkerd/dev:v39-go steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just go-lint --verbose --timeout=10m @@ -24,7 +24,7 @@ jobs: go-format: timeout-minutes: 10 runs-on: ubuntu-20.04 - container: ghcr.io/linkerd/dev:v30-go + container: ghcr.io/linkerd/dev:v39-go steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just go-fmt @@ -32,7 +32,7 @@ jobs: go-test: timeout-minutes: 10 runs-on: ubuntu-20.04 - container: ghcr.io/linkerd/dev:v30-go + container: ghcr.io/linkerd/dev:v39-go steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just go-fetch diff --git a/.github/workflows/helm.yml b/.github/workflows/helm.yml index ec5123448d5c4..d59cb2a7c5a8e 100644 --- a/.github/workflows/helm.yml +++ b/.github/workflows/helm.yml @@ -15,7 +15,8 @@ jobs: helm-docs-diff: runs-on: ubuntu-20.04 timeout-minutes: 5 - container: ghcr.io/linkerd/dev:v30-tools steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - run: bin/helm-docs-diff + - uses: linkerd/dev/actions/setup-tools@v39 + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - run: helm-docs + - run: git diff --exit-code -- charts/**/README.md diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 19838ccf84c17..a4e1754fd1cde 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -124,9 +124,9 @@ jobs: steps: - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.17' - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 + go-version: '1.19' + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a with: name: image-archives path: image-archives @@ -264,9 +264,9 @@ jobs: steps: - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.17' - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 + go-version: '1.19' + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a with: name: image-archives path: image-archives @@ -305,9 +305,9 @@ jobs: steps: - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.17' - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 + go-version: '1.19' + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a with: name: image-archives path: image-archives @@ -316,4 +316,3 @@ jobs: - run: bin/tests --images archive --cleanup-docker --name viz "$HOME/linkerd" env: LINKERD_DOCKER_REGISTRY: ${{ env.DOCKER_REGISTRY }} - diff --git a/.github/workflows/proto.yml b/.github/workflows/proto.yml index e22b9479a01e3..3ac275a861536 100644 --- a/.github/workflows/proto.yml +++ b/.github/workflows/proto.yml @@ -15,8 +15,9 @@ jobs: proto-diff: timeout-minutes: 10 runs-on: ubuntu-20.04 - container: ghcr.io/linkerd/dev:v30-go + container: ghcr.io/linkerd/dev:v39-go steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - run: apt update && apt install -y unzip + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - run: bin/protoc-diff diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4d90456e5ee17..f41d487bae199 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -146,7 +146,7 @@ jobs: uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.18' + go-version: '1.19' - name: Download image archives uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: @@ -180,7 +180,7 @@ jobs: uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.18' + go-version: '1.19' - name: Set environment variables from scripts run: | TAG='${{ needs.tag.outputs.tag }}' @@ -204,8 +204,8 @@ jobs: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f with: - go-version: '1.18' - - uses: docker/setup-buildx-action@94ab11c41e45d028884a99163086648e898eed25 + go-version: '1.19' + - uses: docker/setup-buildx-action@f03ac48505955848960e80bbb68046aa35c7b9e7 - name: Pull linkerd binary run: | TAG='${{ needs.tag.outputs.tag }}' diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a64d1207e0f6f..1be077d8f025e 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -42,7 +42,7 @@ jobs: fmt: timeout-minutes: 5 runs-on: ubuntu-latest - container: ghcr.io/linkerd/dev:v30-rust + container: ghcr.io/linkerd/dev:v39-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just rs-check-fmt @@ -50,7 +50,7 @@ jobs: clippy: timeout-minutes: 10 runs-on: ubuntu-latest - container: ghcr.io/linkerd/dev:v30-rust + container: ghcr.io/linkerd/dev:v39-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just rs-fetch @@ -60,7 +60,7 @@ jobs: check: timeout-minutes: 20 runs-on: ubuntu-latest - container: ghcr.io/linkerd/dev:v30-rust + container: ghcr.io/linkerd/dev:v39-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just rs-fetch @@ -70,7 +70,7 @@ jobs: name: test runs-on: ubuntu-latest timeout-minutes: 15 - container: ghcr.io/linkerd/dev:v30-rust + container: ghcr.io/linkerd/dev:v39-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just rs-fetch diff --git a/.github/workflows/shell.yml b/.github/workflows/shell.yml index 9e0c70d448ff7..970d1f4563b20 100644 --- a/.github/workflows/shell.yml +++ b/.github/workflows/shell.yml @@ -15,8 +15,8 @@ jobs: shellcheck: timeout-minutes: 10 runs-on: ubuntu-20.04 - container: ghcr.io/linkerd/dev:v30-tools steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: linkerd/dev/actions/setup-tools@v39 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - run: just sh-lint diff --git a/Dockerfile-proxy b/Dockerfile-proxy index 2bf9e440c4334..5a9434e28ac89 100644 --- a/Dockerfile-proxy +++ b/Dockerfile-proxy @@ -2,7 +2,7 @@ ARG RUNTIME_IMAGE=gcr.io/distroless/cc ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/bin/fmt b/bin/fmt index e2dbd04d39992..6428e8013c442 100755 --- a/bin/fmt +++ b/bin/fmt @@ -8,7 +8,7 @@ while IFS= read -r line; do dirs+=("$line"); done <<< "$(go list -f \{\{.Dir\}\} # results in certain files being reported multiple time. Therefore, we must # dedup them. We also ignore protobuf auto-generated code. files=() -while IFS= read -r line; do files+=("$line"); done <<< "$(bin/goimports -l "${dirs[@]}" | sort -u | grep -v pb.go | grep -v gogen.go )" +while IFS= read -r line; do files+=("$line"); done <<< "$(bin/goimports -l "${dirs[@]}" | sort -u | grep -v pb.go | grep -v gogen.go | grep -v /controller/gen )" if [[ ${files[*]} ]]; then for file in "${files[@]}"; do diff --git a/cli/Dockerfile b/cli/Dockerfile index d1cec751ee707..57141faf759b9 100644 --- a/cli/Dockerfile +++ b/cli/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/cni-plugin/Dockerfile b/cni-plugin/Dockerfile index 0dad474429e50..b2ca49b0d301b 100644 --- a/cni-plugin/Dockerfile +++ b/cni-plugin/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/controller/Dockerfile b/controller/Dockerfile index 8580208dcd9ba..488edeed33eda 100644 --- a/controller/Dockerfile +++ b/controller/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/controller/gen/common/net/net.pb.go b/controller/gen/common/net/net.pb.go index 15847a979daa1..25e2a0c5a7ad6 100644 --- a/controller/gen/common/net/net.pb.go +++ b/controller/gen/common/net/net.pb.go @@ -26,6 +26,7 @@ type IPAddress struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Ip: + // // *IPAddress_Ipv4 // *IPAddress_Ipv6 Ip isIPAddress_Ip `protobuf_oneof:"ip"` diff --git a/go.mod b/go.mod index a4c68b4d341df..008c2f796325a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/linkerd/linkerd2 -go 1.18 +go 1.19 require ( contrib.go.opencensus.io/exporter/ocagent v0.7.0 diff --git a/jaeger/injector/Dockerfile b/jaeger/injector/Dockerfile index 0bb471b383e20..3de3f05478aa1 100644 --- a/jaeger/injector/Dockerfile +++ b/jaeger/injector/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/justfile b/justfile index 7102a47d2aa67..8d7ece08347fd 100644 --- a/justfile +++ b/justfile @@ -461,7 +461,7 @@ action-lint: # Ensure all devcontainer versions are in sync action-dev-check: - action-dev-check + just-dev check-action-images ## ## Other tools... diff --git a/test/integration/deep/opaqueports/assertions.go b/test/integration/deep/opaqueports/assertions.go index 86e8b5efb9d56..9eaf7093c419f 100644 --- a/test/integration/deep/opaqueports/assertions.go +++ b/test/integration/deep/opaqueports/assertions.go @@ -29,14 +29,15 @@ func hasNoOutboundHTTPRequest(metrics, ns string) error { } // hasOutboundHTTPRequestWithTLS checks there is a series matching: -// request_total{ -// direction="outbound", -// target_addr=~"[0-9\.]+:[0-9]+", -// target_ip=~"[0-9.]+", -// tls="true", -// dst_namespace="default.${ns}.serviceaccount.identity.linkerd.cluster.local", -// dst_serviceaccount="default" -// } +// +// request_total{ +// direction="outbound", +// target_addr=~"[0-9\.]+:[0-9]+", +// target_ip=~"[0-9.]+", +// tls="true", +// dst_namespace="default.${ns}.serviceaccount.identity.linkerd.cluster.local", +// dst_serviceaccount="default" +// } func hasOutboundHTTPRequestWithTLS(metrics, ns string) error { m := prommatch.NewMatcher("request_total", prommatch.Labels{ @@ -59,15 +60,16 @@ func hasOutboundHTTPRequestWithTLS(metrics, ns string) error { } // hasOutboundHTTPRequestNoTLS checks there is a series matching: -// request_total{ -// direction="outbound", -// target_addr=~"[0-9\.]+:[0-9]+", -// target_ip=~"[0-9.]+", -// tls="no_identity", -// no_tls_reason="not_provided_by_service_discovery", -// dst_namespace="default.${ns}.serviceaccount.identity.linkerd.cluster.local", -// dst_serviceaccount="default" -// } +// +// request_total{ +// direction="outbound", +// target_addr=~"[0-9\.]+:[0-9]+", +// target_ip=~"[0-9.]+", +// tls="no_identity", +// no_tls_reason="not_provided_by_service_discovery", +// dst_namespace="default.${ns}.serviceaccount.identity.linkerd.cluster.local", +// dst_serviceaccount="default" +// } func hasOutboundHTTPRequestNoTLS(metrics, ns string) error { m := prommatch.NewMatcher("request_total", prommatch.Labels{ @@ -90,16 +92,17 @@ func hasOutboundHTTPRequestNoTLS(metrics, ns string) error { } // hasInboundTCPTrafficWithTLS checks there is a series matching: -// tcp_open_total{ -// direction="inbound", -// peer="src", -// tls="true", -// client_id="default.${ns}.serviceaccount.identity.linkerd.cluster.local", -// srv_kind="default", -// srv_name="all-unauthenticated", -// target_addr=~"[0-9\.]+:[0-9]+", -// target_ip=~"[0-9\.]+" -// } +// +// tcp_open_total{ +// direction="inbound", +// peer="src", +// tls="true", +// client_id="default.${ns}.serviceaccount.identity.linkerd.cluster.local", +// srv_kind="default", +// srv_name="all-unauthenticated", +// target_addr=~"[0-9\.]+:[0-9]+", +// target_ip=~"[0-9\.]+" +// } func hasInboundTCPTrafficWithTLS(metrics, ns string) error { m := prommatch.NewMatcher( "tcp_open_total", @@ -125,13 +128,14 @@ func hasInboundTCPTrafficWithTLS(metrics, ns string) error { } // hasOutboundTCPWithAuthorityAndNoTLS checks there is a series matching: -// tcp_open_total{ -// direction="outbound", -// peer="dst", -// tls="no_identity", -// no_tls_reason="not_provided_by_service_discovery", -// authority=~"[a-zA-Z\-]+\.[a-zA-Z\-]+\.svc\.cluster\.local:[0-9]+" -// } +// +// tcp_open_total{ +// direction="outbound", +// peer="dst", +// tls="no_identity", +// no_tls_reason="not_provided_by_service_discovery", +// authority=~"[a-zA-Z\-]+\.[a-zA-Z\-]+\.svc\.cluster\.local:[0-9]+" +// } func hasOutboundTCPWithAuthorityAndNoTLS(metrics, ns string) error { m := prommatch.NewMatcher("tcp_open_total", prommatch.Labels{ @@ -153,13 +157,14 @@ func hasOutboundTCPWithAuthorityAndNoTLS(metrics, ns string) error { } // hasOutboundTCPWithNoTLSAndNoAuthority checks there is a series matching: -// tcp_open_total{ -// direction="outbound", -// peer="dst", -// tls="no_identity", -// no_tls_reason="not_provided_by_service_discovery", -// authority="" -// } +// +// tcp_open_total{ +// direction="outbound", +// peer="dst", +// tls="no_identity", +// no_tls_reason="not_provided_by_service_discovery", +// authority="" +// } func hasOutboundTCPWithNoTLSAndNoAuthority(metrics, ns string) error { m := prommatch.NewMatcher("tcp_open_total", prommatch.Labels{ @@ -180,13 +185,14 @@ func hasOutboundTCPWithNoTLSAndNoAuthority(metrics, ns string) error { } // hasOutboundTCPWithTLSAndAuthority checks there is a series matching: -// tcp_open_total{ -// direction="outbound", -// peer="dst", -// tls="true", -// target_addr=~"[0-9\.]+:[0-9]+", -// authority=~"[a-zA-Z\-]+\.[a-zA-Z\-]+\.svc\.cluster\.local:[0-9]+" -// } +// +// tcp_open_total{ +// direction="outbound", +// peer="dst", +// tls="true", +// target_addr=~"[0-9\.]+:[0-9]+", +// authority=~"[a-zA-Z\-]+\.[a-zA-Z\-]+\.svc\.cluster\.local:[0-9]+" +// } func hasOutboundTCPWithTLSAndAuthority(metrics, ns string) error { m := prommatch.NewMatcher("tcp_open_total", prommatch.Labels{ @@ -208,13 +214,14 @@ func hasOutboundTCPWithTLSAndAuthority(metrics, ns string) error { } // hasOutboundTCPWithTLSAndNoAuthority checks there is a series matching: -// tcp_open_total{ -// direction="outbound", -// peer="dst", -// tls="true", -// target_addr=~"[0-9\.]+:[0-9]+", -// authority="" -// } +// +// tcp_open_total{ +// direction="outbound", +// peer="dst", +// tls="true", +// target_addr=~"[0-9\.]+:[0-9]+", +// authority="" +// } func hasOutboundTCPWithTLSAndNoAuthority(metrics, ns string) error { m := prommatch.NewMatcher("tcp_open_total", prommatch.Labels{ diff --git a/test/integration/upgrade-edge/upgrade_edge_test.go b/test/integration/upgrade-edge/upgrade_edge_test.go index 0c140e27c4333..2f9f23e70504d 100644 --- a/test/integration/upgrade-edge/upgrade_edge_test.go +++ b/test/integration/upgrade-edge/upgrade_edge_test.go @@ -21,9 +21,6 @@ import ( "github.com/linkerd/linkerd2/testutil" ) -////////////////////// -/// TEST SETUP /// -////////////////////// var ( TestHelper *testutil.TestHelper @@ -49,9 +46,6 @@ func TestMain(m *testing.M) { os.Exit(m.Run()) } -////////////////////// -/// TEST EXECUTION /// -////////////////////// func TestInstallResourcesPreUpgrade(t *testing.T) { versions, err := TestHelper.GetReleaseChannelVersions() if err != nil { diff --git a/test/integration/upgrade-stable/upgrade_stable_test.go b/test/integration/upgrade-stable/upgrade_stable_test.go index 076538a2e7547..296e8bd1e701a 100644 --- a/test/integration/upgrade-stable/upgrade_stable_test.go +++ b/test/integration/upgrade-stable/upgrade_stable_test.go @@ -21,9 +21,6 @@ import ( "github.com/linkerd/linkerd2/testutil" ) -////////////////////// -/// TEST SETUP /// -////////////////////// var ( TestHelper *testutil.TestHelper @@ -49,9 +46,6 @@ func TestMain(m *testing.M) { os.Exit(m.Run()) } -////////////////////// -/// TEST EXECUTION /// -////////////////////// func TestInstallResourcesPreUpgrade(t *testing.T) { versions, err := TestHelper.GetReleaseChannelVersions() if err != nil { diff --git a/testutil/doc.go b/testutil/doc.go index cf63620331a2f..7b4ca391d5521 100644 --- a/testutil/doc.go +++ b/testutil/doc.go @@ -1,5 +1,4 @@ /* - Package testutil provides helpers for running the linkerd integration tests. All helpers are defined as functions on the TestHelper struct, which you should @@ -44,6 +43,5 @@ the tests aren't inadvertently executed when unit tests for the project are run. TestHelper embeds KubernetesHelper, so all functions defined on KubernetesHelper are also available to instances of TestHelper. See the individual function definitions for details on how to use each helper in tests. - */ package testutil diff --git a/tools.go b/tools.go index 5dc96771ec83f..1558379a17e55 100644 --- a/tools.go +++ b/tools.go @@ -1,3 +1,4 @@ +//go:build tools // +build tools package tools @@ -5,6 +6,6 @@ package tools import ( _ "github.com/shurcooL/vfsgen" _ "golang.org/x/tools/cmd/goimports" - _ "k8s.io/code-generator" _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc" + _ "k8s.io/code-generator" ) diff --git a/viz/metrics-api/Dockerfile b/viz/metrics-api/Dockerfile index b094d1637f121..3f79cd86caea4 100644 --- a/viz/metrics-api/Dockerfile +++ b/viz/metrics-api/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/viz/metrics-api/gen/viz/viz.pb.go b/viz/metrics-api/gen/viz/viz.pb.go index 835ba97848c15..71a1c7de92923 100644 --- a/viz/metrics-api/gen/viz/viz.pb.go +++ b/viz/metrics-api/gen/viz/viz.pb.go @@ -628,6 +628,7 @@ type Pod struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` PodIP string `protobuf:"bytes,2,opt,name=podIP,proto3" json:"podIP,omitempty"` // Types that are assignable to Owner: + // // *Pod_Deployment // *Pod_ReplicaSet // *Pod_ReplicationController @@ -850,6 +851,7 @@ type HttpMethod struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *HttpMethod_Registered_ // *HttpMethod_Unregistered Type isHttpMethod_Type `protobuf_oneof:"type"` @@ -930,6 +932,7 @@ type Scheme struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: + // // *Scheme_Registered_ // *Scheme_Unregistered Type isScheme_Type `protobuf_oneof:"type"` @@ -1057,6 +1060,7 @@ type Eos struct { unknownFields protoimpl.UnknownFields // Types that are assignable to End: + // // *Eos_GrpcStatusCode // *Eos_ResetErrorCode End isEos_End `protobuf_oneof:"end"` @@ -1422,6 +1426,7 @@ type StatSummaryRequest struct { Selector *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` TimeWindow string `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"` // Types that are assignable to Outbound: + // // *StatSummaryRequest_None // *StatSummaryRequest_ToResource // *StatSummaryRequest_FromResource @@ -1546,6 +1551,7 @@ type StatSummaryResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: + // // *StatSummaryResponse_Ok_ // *StatSummaryResponse_Error Response isStatSummaryResponse_Response `protobuf_oneof:"response"` @@ -1681,6 +1687,7 @@ type AuthzResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: + // // *AuthzResponse_Ok_ // *AuthzResponse_Error Response isAuthzResponse_Response `protobuf_oneof:"response"` @@ -2064,6 +2071,7 @@ type StatTable struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Table: + // // *StatTable_PodGroup_ Table isStatTable_Table `protobuf_oneof:"table"` } @@ -2177,6 +2185,7 @@ type EdgesResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: + // // *EdgesResponse_Ok_ // *EdgesResponse_Error Response isEdgesResponse_Response `protobuf_oneof:"response"` @@ -2338,6 +2347,7 @@ type TopRoutesRequest struct { Selector *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` TimeWindow string `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"` // Types that are assignable to Outbound: + // // *TopRoutesRequest_None // *TopRoutesRequest_ToResource Outbound isTopRoutesRequest_Outbound `protobuf_oneof:"outbound"` @@ -2432,6 +2442,7 @@ type TopRoutesResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: + // // *TopRoutesResponse_Error // *TopRoutesResponse_Ok_ Response isTopRoutesResponse_Response `protobuf_oneof:"response"` @@ -2680,6 +2691,7 @@ type GatewaysResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: + // // *GatewaysResponse_Ok_ // *GatewaysResponse_Error Response isGatewaysResponse_Response `protobuf_oneof:"response"` @@ -2766,6 +2778,7 @@ type Headers_Header struct { // assumed and `value_bin` will be set. // // Types that are assignable to Value: + // // *Headers_Header_ValueStr // *Headers_Header_ValueBin Value isHeaders_Header_Value `protobuf_oneof:"value"` @@ -2853,6 +2866,7 @@ type PodErrors_PodError struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Error: + // // *PodErrors_PodError_Container Error isPodErrors_PodError_Error `protobuf_oneof:"error"` } diff --git a/viz/tap/Dockerfile b/viz/tap/Dockerfile index 1dab962c408fb..c21f99c97383d 100644 --- a/viz/tap/Dockerfile +++ b/viz/tap/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/viz/tap/api/grpc_server.go b/viz/tap/api/grpc_server.go index ba202048b20eb..89d40771f080f 100644 --- a/viz/tap/api/grpc_server.go +++ b/viz/tap/api/grpc_server.go @@ -54,6 +54,7 @@ var ( // Tap is deprecated, use TapByResource. // This API endpoint is marked as deprecated but it's still used. +// //nolint:staticcheck func (s *GRPCTapServer) Tap(req *tapPb.TapRequest, stream tapPb.Tap_TapServer) error { return status.Error(codes.Unimplemented, "Tap is deprecated, use TapByResource") diff --git a/viz/tap/gen/tap/viz_tap.pb.go b/viz/tap/gen/tap/viz_tap.pb.go index 54995dae8bbb6..cf79eb252f78b 100644 --- a/viz/tap/gen/tap/viz_tap.pb.go +++ b/viz/tap/gen/tap/viz_tap.pb.go @@ -79,6 +79,7 @@ type TapRequest struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Target: + // // *TapRequest_Pod // *TapRequest_Deployment Target isTapRequest_Target `protobuf_oneof:"target"` @@ -318,6 +319,7 @@ type TapEvent struct { RouteMeta *TapEvent_RouteMeta `protobuf:"bytes,7,opt,name=route_meta,json=routeMeta,proto3" json:"route_meta,omitempty"` ProxyDirection TapEvent_ProxyDirection `protobuf:"varint,6,opt,name=proxy_direction,json=proxyDirection,proto3,enum=linkerd2.tap.TapEvent_ProxyDirection" json:"proxy_direction,omitempty"` // Types that are assignable to Event: + // // *TapEvent_Http_ Event isTapEvent_Event `protobuf_oneof:"event"` } @@ -426,6 +428,7 @@ type TapByResourceRequest_Match struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Match: + // // *TapByResourceRequest_Match_All // *TapByResourceRequest_Match_Any // *TapByResourceRequest_Match_Not @@ -553,6 +556,7 @@ type TapByResourceRequest_Extract struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Extract: + // // *TapByResourceRequest_Extract_Http_ Extract isTapByResourceRequest_Extract_Extract `protobuf_oneof:"extract"` } @@ -666,6 +670,7 @@ type TapByResourceRequest_Match_Http struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Match: + // // *TapByResourceRequest_Match_Http_Scheme // *TapByResourceRequest_Match_Http_Method // *TapByResourceRequest_Match_Http_Authority @@ -774,6 +779,7 @@ type TapByResourceRequest_Extract_Http struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Extract: + // // *TapByResourceRequest_Extract_Http_Headers_ Extract isTapByResourceRequest_Extract_Http_Extract `protobuf_oneof:"extract"` } @@ -972,6 +978,7 @@ type TapEvent_Http struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Event: + // // *TapEvent_Http_RequestInit_ // *TapEvent_Http_ResponseInit_ // *TapEvent_Http_ResponseEnd_ diff --git a/web/Dockerfile b/web/Dockerfile index 3c63c0dc394a8..94f82d3524b6e 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ From c69acaeb4a411bfda229be4be3b77bada7dc3c61 Mon Sep 17 00:00:00 2001 From: Alejandro Pedraza Date: Wed, 6 Sep 2023 15:44:50 -0500 Subject: [PATCH 4/9] Revert "Update to dev:v39 with Go 1.19 (#10336)" This reverts commit 43afac1e74cf19b962e10155337cc8db2b2d543b. --- .devcontainer/devcontainer.json | 2 +- .github/workflows/actions.yml | 13 +- .github/workflows/codecov.yml | 2 +- .github/workflows/devcontainer.yml | 22 +++- .github/workflows/go.yml | 6 +- .github/workflows/helm.yml | 7 +- .github/workflows/integration.yml | 19 +-- .github/workflows/proto.yml | 5 +- .github/workflows/release.yml | 8 +- .github/workflows/rust.yml | 8 +- .github/workflows/shell.yml | 4 +- Dockerfile-proxy | 2 +- bin/fmt | 2 +- cli/Dockerfile | 2 +- cni-plugin/Dockerfile | 2 +- controller/Dockerfile | 2 +- controller/gen/common/net/net.pb.go | 1 - go.mod | 2 +- jaeger/injector/Dockerfile | 2 +- justfile | 2 +- .../deep/opaqueports/assertions.go | 117 ++++++++---------- .../upgrade-edge/upgrade_edge_test.go | 6 + .../upgrade-stable/upgrade_stable_test.go | 6 + testutil/doc.go | 2 + tools.go | 3 +- viz/metrics-api/Dockerfile | 2 +- viz/metrics-api/gen/viz/viz.pb.go | 14 --- viz/tap/Dockerfile | 2 +- viz/tap/api/grpc_server.go | 1 - viz/tap/gen/tap/viz_tap.pb.go | 7 -- web/Dockerfile | 2 +- 31 files changed, 136 insertions(+), 139 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d4a718aa73071..b9b1b99688d73 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ { "name": "linkerd2", - "image": "ghcr.io/linkerd/dev:v39", + "image": "ghcr.io/linkerd/dev:v30", // "dockerFile": "./Dockerfile", // "context": "..", "extensions": [ diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 24a499263cd26..d82050e1f46f5 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -13,14 +13,15 @@ jobs: actionlint: runs-on: ubuntu-20.04 timeout-minutes: 10 + container: ghcr.io/linkerd/dev:v30-tools steps: - - uses: linkerd/dev/actions/setup-tools@v39 - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - - run: just-dev lint-actions + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - name: Run actionlint + run: just action-lint devcontainer-versions: runs-on: ubuntu-latest + container: ghcr.io/linkerd/dev:v30-tools steps: - - uses: linkerd/dev/actions/setup-tools@v39 - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - - run: just-dev check-action-images + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - run: just action-dev-check diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index c1da60b74d1aa..b95144ff294e3 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -14,7 +14,7 @@ jobs: timeout-minutes: 30 runs-on: ubuntu-20.04 container: - image: golang:1.19 + image: golang:1.18 steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: go install gotest.tools/gotestsum@v0.4.2 diff --git a/.github/workflows/devcontainer.yml b/.github/workflows/devcontainer.yml index e29f407006d9c..dfc0b95fc6b2a 100644 --- a/.github/workflows/devcontainer.yml +++ b/.github/workflows/devcontainer.yml @@ -15,7 +15,7 @@ permissions: jobs: rust-version: runs-on: ubuntu-latest - container: ghcr.io/linkerd/dev:v39-rust + container: ghcr.io/linkerd/dev:v30-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: | @@ -29,6 +29,20 @@ jobs: devcontainer-image: runs-on: ubuntu-latest steps: - - uses: linkerd/dev/actions/setup-tools@v39 - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - - run: just-dev pull-dev-image + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - run: | + export DEBIAN_FRONTEND=noninteractive + sudo apt-get update + sudo apt-get -y --no-install-recommends install jq + - run: | + # Strip jsonc comments because `jq` doesn't support them. + image=$(sed -E '/^\s*\/\/.*/d' .devcontainer/devcontainer.json |jq -Mr .image) + line=$(grep -nF '"image"' .devcontainer/devcontainer.json |cut -d':' -f1 |head -n1) + if [ "$image" == "null" ]; then + echo "::error file=.devcontainer/devcontainer.json,line=$line::Missing image" + exit 1 + fi + if ! docker pull "$image" ; then + echo "::error file=.devcontainer/devcontainer.json,line=$line::Unable to pull image: $image" + exit 1 + fi diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index b6e7450a3131e..8cffff77d81f2 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -16,7 +16,7 @@ jobs: go-lint: timeout-minutes: 10 runs-on: ubuntu-20.04 - container: ghcr.io/linkerd/dev:v39-go + container: ghcr.io/linkerd/dev:v30-go steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just go-lint --verbose --timeout=10m @@ -24,7 +24,7 @@ jobs: go-format: timeout-minutes: 10 runs-on: ubuntu-20.04 - container: ghcr.io/linkerd/dev:v39-go + container: ghcr.io/linkerd/dev:v30-go steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just go-fmt @@ -32,7 +32,7 @@ jobs: go-test: timeout-minutes: 10 runs-on: ubuntu-20.04 - container: ghcr.io/linkerd/dev:v39-go + container: ghcr.io/linkerd/dev:v30-go steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just go-fetch diff --git a/.github/workflows/helm.yml b/.github/workflows/helm.yml index d59cb2a7c5a8e..ec5123448d5c4 100644 --- a/.github/workflows/helm.yml +++ b/.github/workflows/helm.yml @@ -15,8 +15,7 @@ jobs: helm-docs-diff: runs-on: ubuntu-20.04 timeout-minutes: 5 + container: ghcr.io/linkerd/dev:v30-tools steps: - - uses: linkerd/dev/actions/setup-tools@v39 - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - run: helm-docs - - run: git diff --exit-code -- charts/**/README.md + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - run: bin/helm-docs-diff diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index a4e1754fd1cde..19838ccf84c17 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -124,9 +124,9 @@ jobs: steps: - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.19' - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + go-version: '1.17' + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: name: image-archives path: image-archives @@ -264,9 +264,9 @@ jobs: steps: - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.19' - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + go-version: '1.17' + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: name: image-archives path: image-archives @@ -305,9 +305,9 @@ jobs: steps: - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.19' - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a + go-version: '1.17' + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: name: image-archives path: image-archives @@ -316,3 +316,4 @@ jobs: - run: bin/tests --images archive --cleanup-docker --name viz "$HOME/linkerd" env: LINKERD_DOCKER_REGISTRY: ${{ env.DOCKER_REGISTRY }} + diff --git a/.github/workflows/proto.yml b/.github/workflows/proto.yml index 3ac275a861536..e22b9479a01e3 100644 --- a/.github/workflows/proto.yml +++ b/.github/workflows/proto.yml @@ -15,9 +15,8 @@ jobs: proto-diff: timeout-minutes: 10 runs-on: ubuntu-20.04 - container: ghcr.io/linkerd/dev:v39-go + container: ghcr.io/linkerd/dev:v30-go steps: - - run: apt update && apt install -y unzip - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: bin/protoc-diff diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f41d487bae199..4d90456e5ee17 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -146,7 +146,7 @@ jobs: uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.19' + go-version: '1.18' - name: Download image archives uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: @@ -180,7 +180,7 @@ jobs: uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f with: - go-version: '1.19' + go-version: '1.18' - name: Set environment variables from scripts run: | TAG='${{ needs.tag.outputs.tag }}' @@ -204,8 +204,8 @@ jobs: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f with: - go-version: '1.19' - - uses: docker/setup-buildx-action@f03ac48505955848960e80bbb68046aa35c7b9e7 + go-version: '1.18' + - uses: docker/setup-buildx-action@94ab11c41e45d028884a99163086648e898eed25 - name: Pull linkerd binary run: | TAG='${{ needs.tag.outputs.tag }}' diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 1be077d8f025e..a64d1207e0f6f 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -42,7 +42,7 @@ jobs: fmt: timeout-minutes: 5 runs-on: ubuntu-latest - container: ghcr.io/linkerd/dev:v39-rust + container: ghcr.io/linkerd/dev:v30-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just rs-check-fmt @@ -50,7 +50,7 @@ jobs: clippy: timeout-minutes: 10 runs-on: ubuntu-latest - container: ghcr.io/linkerd/dev:v39-rust + container: ghcr.io/linkerd/dev:v30-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just rs-fetch @@ -60,7 +60,7 @@ jobs: check: timeout-minutes: 20 runs-on: ubuntu-latest - container: ghcr.io/linkerd/dev:v39-rust + container: ghcr.io/linkerd/dev:v30-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just rs-fetch @@ -70,7 +70,7 @@ jobs: name: test runs-on: ubuntu-latest timeout-minutes: 15 - container: ghcr.io/linkerd/dev:v39-rust + container: ghcr.io/linkerd/dev:v30-rust steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just rs-fetch diff --git a/.github/workflows/shell.yml b/.github/workflows/shell.yml index 970d1f4563b20..9e0c70d448ff7 100644 --- a/.github/workflows/shell.yml +++ b/.github/workflows/shell.yml @@ -15,8 +15,8 @@ jobs: shellcheck: timeout-minutes: 10 runs-on: ubuntu-20.04 + container: ghcr.io/linkerd/dev:v30-tools steps: - - uses: linkerd/dev/actions/setup-tools@v39 - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - run: just sh-lint diff --git a/Dockerfile-proxy b/Dockerfile-proxy index 5a9434e28ac89..2bf9e440c4334 100644 --- a/Dockerfile-proxy +++ b/Dockerfile-proxy @@ -2,7 +2,7 @@ ARG RUNTIME_IMAGE=gcr.io/distroless/cc ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/bin/fmt b/bin/fmt index 6428e8013c442..e2dbd04d39992 100755 --- a/bin/fmt +++ b/bin/fmt @@ -8,7 +8,7 @@ while IFS= read -r line; do dirs+=("$line"); done <<< "$(go list -f \{\{.Dir\}\} # results in certain files being reported multiple time. Therefore, we must # dedup them. We also ignore protobuf auto-generated code. files=() -while IFS= read -r line; do files+=("$line"); done <<< "$(bin/goimports -l "${dirs[@]}" | sort -u | grep -v pb.go | grep -v gogen.go | grep -v /controller/gen )" +while IFS= read -r line; do files+=("$line"); done <<< "$(bin/goimports -l "${dirs[@]}" | sort -u | grep -v pb.go | grep -v gogen.go )" if [[ ${files[*]} ]]; then for file in "${files[@]}"; do diff --git a/cli/Dockerfile b/cli/Dockerfile index 57141faf759b9..d1cec751ee707 100644 --- a/cli/Dockerfile +++ b/cli/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/cni-plugin/Dockerfile b/cni-plugin/Dockerfile index b2ca49b0d301b..0dad474429e50 100644 --- a/cni-plugin/Dockerfile +++ b/cni-plugin/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/controller/Dockerfile b/controller/Dockerfile index 488edeed33eda..8580208dcd9ba 100644 --- a/controller/Dockerfile +++ b/controller/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/controller/gen/common/net/net.pb.go b/controller/gen/common/net/net.pb.go index 25e2a0c5a7ad6..15847a979daa1 100644 --- a/controller/gen/common/net/net.pb.go +++ b/controller/gen/common/net/net.pb.go @@ -26,7 +26,6 @@ type IPAddress struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Ip: - // // *IPAddress_Ipv4 // *IPAddress_Ipv6 Ip isIPAddress_Ip `protobuf_oneof:"ip"` diff --git a/go.mod b/go.mod index 008c2f796325a..a4c68b4d341df 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/linkerd/linkerd2 -go 1.19 +go 1.18 require ( contrib.go.opencensus.io/exporter/ocagent v0.7.0 diff --git a/jaeger/injector/Dockerfile b/jaeger/injector/Dockerfile index 3de3f05478aa1..0bb471b383e20 100644 --- a/jaeger/injector/Dockerfile +++ b/jaeger/injector/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/justfile b/justfile index 8d7ece08347fd..7102a47d2aa67 100644 --- a/justfile +++ b/justfile @@ -461,7 +461,7 @@ action-lint: # Ensure all devcontainer versions are in sync action-dev-check: - just-dev check-action-images + action-dev-check ## ## Other tools... diff --git a/test/integration/deep/opaqueports/assertions.go b/test/integration/deep/opaqueports/assertions.go index 9eaf7093c419f..86e8b5efb9d56 100644 --- a/test/integration/deep/opaqueports/assertions.go +++ b/test/integration/deep/opaqueports/assertions.go @@ -29,15 +29,14 @@ func hasNoOutboundHTTPRequest(metrics, ns string) error { } // hasOutboundHTTPRequestWithTLS checks there is a series matching: -// -// request_total{ -// direction="outbound", -// target_addr=~"[0-9\.]+:[0-9]+", -// target_ip=~"[0-9.]+", -// tls="true", -// dst_namespace="default.${ns}.serviceaccount.identity.linkerd.cluster.local", -// dst_serviceaccount="default" -// } +// request_total{ +// direction="outbound", +// target_addr=~"[0-9\.]+:[0-9]+", +// target_ip=~"[0-9.]+", +// tls="true", +// dst_namespace="default.${ns}.serviceaccount.identity.linkerd.cluster.local", +// dst_serviceaccount="default" +// } func hasOutboundHTTPRequestWithTLS(metrics, ns string) error { m := prommatch.NewMatcher("request_total", prommatch.Labels{ @@ -60,16 +59,15 @@ func hasOutboundHTTPRequestWithTLS(metrics, ns string) error { } // hasOutboundHTTPRequestNoTLS checks there is a series matching: -// -// request_total{ -// direction="outbound", -// target_addr=~"[0-9\.]+:[0-9]+", -// target_ip=~"[0-9.]+", -// tls="no_identity", -// no_tls_reason="not_provided_by_service_discovery", -// dst_namespace="default.${ns}.serviceaccount.identity.linkerd.cluster.local", -// dst_serviceaccount="default" -// } +// request_total{ +// direction="outbound", +// target_addr=~"[0-9\.]+:[0-9]+", +// target_ip=~"[0-9.]+", +// tls="no_identity", +// no_tls_reason="not_provided_by_service_discovery", +// dst_namespace="default.${ns}.serviceaccount.identity.linkerd.cluster.local", +// dst_serviceaccount="default" +// } func hasOutboundHTTPRequestNoTLS(metrics, ns string) error { m := prommatch.NewMatcher("request_total", prommatch.Labels{ @@ -92,17 +90,16 @@ func hasOutboundHTTPRequestNoTLS(metrics, ns string) error { } // hasInboundTCPTrafficWithTLS checks there is a series matching: -// -// tcp_open_total{ -// direction="inbound", -// peer="src", -// tls="true", -// client_id="default.${ns}.serviceaccount.identity.linkerd.cluster.local", -// srv_kind="default", -// srv_name="all-unauthenticated", -// target_addr=~"[0-9\.]+:[0-9]+", -// target_ip=~"[0-9\.]+" -// } +// tcp_open_total{ +// direction="inbound", +// peer="src", +// tls="true", +// client_id="default.${ns}.serviceaccount.identity.linkerd.cluster.local", +// srv_kind="default", +// srv_name="all-unauthenticated", +// target_addr=~"[0-9\.]+:[0-9]+", +// target_ip=~"[0-9\.]+" +// } func hasInboundTCPTrafficWithTLS(metrics, ns string) error { m := prommatch.NewMatcher( "tcp_open_total", @@ -128,14 +125,13 @@ func hasInboundTCPTrafficWithTLS(metrics, ns string) error { } // hasOutboundTCPWithAuthorityAndNoTLS checks there is a series matching: -// -// tcp_open_total{ -// direction="outbound", -// peer="dst", -// tls="no_identity", -// no_tls_reason="not_provided_by_service_discovery", -// authority=~"[a-zA-Z\-]+\.[a-zA-Z\-]+\.svc\.cluster\.local:[0-9]+" -// } +// tcp_open_total{ +// direction="outbound", +// peer="dst", +// tls="no_identity", +// no_tls_reason="not_provided_by_service_discovery", +// authority=~"[a-zA-Z\-]+\.[a-zA-Z\-]+\.svc\.cluster\.local:[0-9]+" +// } func hasOutboundTCPWithAuthorityAndNoTLS(metrics, ns string) error { m := prommatch.NewMatcher("tcp_open_total", prommatch.Labels{ @@ -157,14 +153,13 @@ func hasOutboundTCPWithAuthorityAndNoTLS(metrics, ns string) error { } // hasOutboundTCPWithNoTLSAndNoAuthority checks there is a series matching: -// -// tcp_open_total{ -// direction="outbound", -// peer="dst", -// tls="no_identity", -// no_tls_reason="not_provided_by_service_discovery", -// authority="" -// } +// tcp_open_total{ +// direction="outbound", +// peer="dst", +// tls="no_identity", +// no_tls_reason="not_provided_by_service_discovery", +// authority="" +// } func hasOutboundTCPWithNoTLSAndNoAuthority(metrics, ns string) error { m := prommatch.NewMatcher("tcp_open_total", prommatch.Labels{ @@ -185,14 +180,13 @@ func hasOutboundTCPWithNoTLSAndNoAuthority(metrics, ns string) error { } // hasOutboundTCPWithTLSAndAuthority checks there is a series matching: -// -// tcp_open_total{ -// direction="outbound", -// peer="dst", -// tls="true", -// target_addr=~"[0-9\.]+:[0-9]+", -// authority=~"[a-zA-Z\-]+\.[a-zA-Z\-]+\.svc\.cluster\.local:[0-9]+" -// } +// tcp_open_total{ +// direction="outbound", +// peer="dst", +// tls="true", +// target_addr=~"[0-9\.]+:[0-9]+", +// authority=~"[a-zA-Z\-]+\.[a-zA-Z\-]+\.svc\.cluster\.local:[0-9]+" +// } func hasOutboundTCPWithTLSAndAuthority(metrics, ns string) error { m := prommatch.NewMatcher("tcp_open_total", prommatch.Labels{ @@ -214,14 +208,13 @@ func hasOutboundTCPWithTLSAndAuthority(metrics, ns string) error { } // hasOutboundTCPWithTLSAndNoAuthority checks there is a series matching: -// -// tcp_open_total{ -// direction="outbound", -// peer="dst", -// tls="true", -// target_addr=~"[0-9\.]+:[0-9]+", -// authority="" -// } +// tcp_open_total{ +// direction="outbound", +// peer="dst", +// tls="true", +// target_addr=~"[0-9\.]+:[0-9]+", +// authority="" +// } func hasOutboundTCPWithTLSAndNoAuthority(metrics, ns string) error { m := prommatch.NewMatcher("tcp_open_total", prommatch.Labels{ diff --git a/test/integration/upgrade-edge/upgrade_edge_test.go b/test/integration/upgrade-edge/upgrade_edge_test.go index 2f9f23e70504d..0c140e27c4333 100644 --- a/test/integration/upgrade-edge/upgrade_edge_test.go +++ b/test/integration/upgrade-edge/upgrade_edge_test.go @@ -21,6 +21,9 @@ import ( "github.com/linkerd/linkerd2/testutil" ) +////////////////////// +/// TEST SETUP /// +////////////////////// var ( TestHelper *testutil.TestHelper @@ -46,6 +49,9 @@ func TestMain(m *testing.M) { os.Exit(m.Run()) } +////////////////////// +/// TEST EXECUTION /// +////////////////////// func TestInstallResourcesPreUpgrade(t *testing.T) { versions, err := TestHelper.GetReleaseChannelVersions() if err != nil { diff --git a/test/integration/upgrade-stable/upgrade_stable_test.go b/test/integration/upgrade-stable/upgrade_stable_test.go index 296e8bd1e701a..076538a2e7547 100644 --- a/test/integration/upgrade-stable/upgrade_stable_test.go +++ b/test/integration/upgrade-stable/upgrade_stable_test.go @@ -21,6 +21,9 @@ import ( "github.com/linkerd/linkerd2/testutil" ) +////////////////////// +/// TEST SETUP /// +////////////////////// var ( TestHelper *testutil.TestHelper @@ -46,6 +49,9 @@ func TestMain(m *testing.M) { os.Exit(m.Run()) } +////////////////////// +/// TEST EXECUTION /// +////////////////////// func TestInstallResourcesPreUpgrade(t *testing.T) { versions, err := TestHelper.GetReleaseChannelVersions() if err != nil { diff --git a/testutil/doc.go b/testutil/doc.go index 7b4ca391d5521..cf63620331a2f 100644 --- a/testutil/doc.go +++ b/testutil/doc.go @@ -1,4 +1,5 @@ /* + Package testutil provides helpers for running the linkerd integration tests. All helpers are defined as functions on the TestHelper struct, which you should @@ -43,5 +44,6 @@ the tests aren't inadvertently executed when unit tests for the project are run. TestHelper embeds KubernetesHelper, so all functions defined on KubernetesHelper are also available to instances of TestHelper. See the individual function definitions for details on how to use each helper in tests. + */ package testutil diff --git a/tools.go b/tools.go index 1558379a17e55..5dc96771ec83f 100644 --- a/tools.go +++ b/tools.go @@ -1,4 +1,3 @@ -//go:build tools // +build tools package tools @@ -6,6 +5,6 @@ package tools import ( _ "github.com/shurcooL/vfsgen" _ "golang.org/x/tools/cmd/goimports" - _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc" _ "k8s.io/code-generator" + _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc" ) diff --git a/viz/metrics-api/Dockerfile b/viz/metrics-api/Dockerfile index 3f79cd86caea4..b094d1637f121 100644 --- a/viz/metrics-api/Dockerfile +++ b/viz/metrics-api/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/viz/metrics-api/gen/viz/viz.pb.go b/viz/metrics-api/gen/viz/viz.pb.go index 71a1c7de92923..835ba97848c15 100644 --- a/viz/metrics-api/gen/viz/viz.pb.go +++ b/viz/metrics-api/gen/viz/viz.pb.go @@ -628,7 +628,6 @@ type Pod struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` PodIP string `protobuf:"bytes,2,opt,name=podIP,proto3" json:"podIP,omitempty"` // Types that are assignable to Owner: - // // *Pod_Deployment // *Pod_ReplicaSet // *Pod_ReplicationController @@ -851,7 +850,6 @@ type HttpMethod struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: - // // *HttpMethod_Registered_ // *HttpMethod_Unregistered Type isHttpMethod_Type `protobuf_oneof:"type"` @@ -932,7 +930,6 @@ type Scheme struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Type: - // // *Scheme_Registered_ // *Scheme_Unregistered Type isScheme_Type `protobuf_oneof:"type"` @@ -1060,7 +1057,6 @@ type Eos struct { unknownFields protoimpl.UnknownFields // Types that are assignable to End: - // // *Eos_GrpcStatusCode // *Eos_ResetErrorCode End isEos_End `protobuf_oneof:"end"` @@ -1426,7 +1422,6 @@ type StatSummaryRequest struct { Selector *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` TimeWindow string `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"` // Types that are assignable to Outbound: - // // *StatSummaryRequest_None // *StatSummaryRequest_ToResource // *StatSummaryRequest_FromResource @@ -1551,7 +1546,6 @@ type StatSummaryResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: - // // *StatSummaryResponse_Ok_ // *StatSummaryResponse_Error Response isStatSummaryResponse_Response `protobuf_oneof:"response"` @@ -1687,7 +1681,6 @@ type AuthzResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: - // // *AuthzResponse_Ok_ // *AuthzResponse_Error Response isAuthzResponse_Response `protobuf_oneof:"response"` @@ -2071,7 +2064,6 @@ type StatTable struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Table: - // // *StatTable_PodGroup_ Table isStatTable_Table `protobuf_oneof:"table"` } @@ -2185,7 +2177,6 @@ type EdgesResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: - // // *EdgesResponse_Ok_ // *EdgesResponse_Error Response isEdgesResponse_Response `protobuf_oneof:"response"` @@ -2347,7 +2338,6 @@ type TopRoutesRequest struct { Selector *ResourceSelection `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` TimeWindow string `protobuf:"bytes,2,opt,name=time_window,json=timeWindow,proto3" json:"time_window,omitempty"` // Types that are assignable to Outbound: - // // *TopRoutesRequest_None // *TopRoutesRequest_ToResource Outbound isTopRoutesRequest_Outbound `protobuf_oneof:"outbound"` @@ -2442,7 +2432,6 @@ type TopRoutesResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: - // // *TopRoutesResponse_Error // *TopRoutesResponse_Ok_ Response isTopRoutesResponse_Response `protobuf_oneof:"response"` @@ -2691,7 +2680,6 @@ type GatewaysResponse struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: - // // *GatewaysResponse_Ok_ // *GatewaysResponse_Error Response isGatewaysResponse_Response `protobuf_oneof:"response"` @@ -2778,7 +2766,6 @@ type Headers_Header struct { // assumed and `value_bin` will be set. // // Types that are assignable to Value: - // // *Headers_Header_ValueStr // *Headers_Header_ValueBin Value isHeaders_Header_Value `protobuf_oneof:"value"` @@ -2866,7 +2853,6 @@ type PodErrors_PodError struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Error: - // // *PodErrors_PodError_Container Error isPodErrors_PodError_Error `protobuf_oneof:"error"` } diff --git a/viz/tap/Dockerfile b/viz/tap/Dockerfile index c21f99c97383d..1dab962c408fb 100644 --- a/viz/tap/Dockerfile +++ b/viz/tap/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ diff --git a/viz/tap/api/grpc_server.go b/viz/tap/api/grpc_server.go index 89d40771f080f..ba202048b20eb 100644 --- a/viz/tap/api/grpc_server.go +++ b/viz/tap/api/grpc_server.go @@ -54,7 +54,6 @@ var ( // Tap is deprecated, use TapByResource. // This API endpoint is marked as deprecated but it's still used. -// //nolint:staticcheck func (s *GRPCTapServer) Tap(req *tapPb.TapRequest, stream tapPb.Tap_TapServer) error { return status.Error(codes.Unimplemented, "Tap is deprecated, use TapByResource") diff --git a/viz/tap/gen/tap/viz_tap.pb.go b/viz/tap/gen/tap/viz_tap.pb.go index cf79eb252f78b..54995dae8bbb6 100644 --- a/viz/tap/gen/tap/viz_tap.pb.go +++ b/viz/tap/gen/tap/viz_tap.pb.go @@ -79,7 +79,6 @@ type TapRequest struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Target: - // // *TapRequest_Pod // *TapRequest_Deployment Target isTapRequest_Target `protobuf_oneof:"target"` @@ -319,7 +318,6 @@ type TapEvent struct { RouteMeta *TapEvent_RouteMeta `protobuf:"bytes,7,opt,name=route_meta,json=routeMeta,proto3" json:"route_meta,omitempty"` ProxyDirection TapEvent_ProxyDirection `protobuf:"varint,6,opt,name=proxy_direction,json=proxyDirection,proto3,enum=linkerd2.tap.TapEvent_ProxyDirection" json:"proxy_direction,omitempty"` // Types that are assignable to Event: - // // *TapEvent_Http_ Event isTapEvent_Event `protobuf_oneof:"event"` } @@ -428,7 +426,6 @@ type TapByResourceRequest_Match struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Match: - // // *TapByResourceRequest_Match_All // *TapByResourceRequest_Match_Any // *TapByResourceRequest_Match_Not @@ -556,7 +553,6 @@ type TapByResourceRequest_Extract struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Extract: - // // *TapByResourceRequest_Extract_Http_ Extract isTapByResourceRequest_Extract_Extract `protobuf_oneof:"extract"` } @@ -670,7 +666,6 @@ type TapByResourceRequest_Match_Http struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Match: - // // *TapByResourceRequest_Match_Http_Scheme // *TapByResourceRequest_Match_Http_Method // *TapByResourceRequest_Match_Http_Authority @@ -779,7 +774,6 @@ type TapByResourceRequest_Extract_Http struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Extract: - // // *TapByResourceRequest_Extract_Http_Headers_ Extract isTapByResourceRequest_Extract_Http_Extract `protobuf_oneof:"extract"` } @@ -978,7 +972,6 @@ type TapEvent_Http struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Event: - // // *TapEvent_Http_RequestInit_ // *TapEvent_Http_ResponseInit_ // *TapEvent_Http_ResponseEnd_ diff --git a/web/Dockerfile b/web/Dockerfile index 94f82d3524b6e..3c63c0dc394a8 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -1,7 +1,7 @@ ARG BUILDPLATFORM=linux/amd64 # Precompile key slow-to-build dependencies -FROM --platform=$BUILDPLATFORM golang:1.19-alpine as go-deps +FROM --platform=$BUILDPLATFORM golang:1.18-alpine as go-deps WORKDIR /linkerd-build COPY go.mod go.sum ./ COPY bin/install-deps bin/ From 66ddb86c961398c36f967d23e807a8a90e6573eb Mon Sep 17 00:00:00 2001 From: Alejandro Pedraza Date: Wed, 6 Sep 2023 15:46:08 -0500 Subject: [PATCH 5/9] Bump go to 1.19 in github workflows --- .github/workflows/integration.yml | 12 ++++++------ .github/workflows/release.yml | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 19838ccf84c17..94521e135830b 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -122,9 +122,9 @@ jobs: runs-on: ubuntu-20.04 timeout-minutes: 15 steps: - - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f + - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 with: - go-version: '1.17' + go-version: '1.19' - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: @@ -262,9 +262,9 @@ jobs: runs-on: ubuntu-20.04 timeout-minutes: 15 steps: - - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f + - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 with: - go-version: '1.17' + go-version: '1.19' - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: @@ -303,9 +303,9 @@ jobs: runs-on: ubuntu-20.04 timeout-minutes: 15 steps: - - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f + - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 with: - go-version: '1.17' + go-version: '1.19' - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4d90456e5ee17..076bbdab0e350 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -144,9 +144,9 @@ jobs: steps: - name: Checkout code uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f + - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 with: - go-version: '1.18' + go-version: '1.19' - name: Download image archives uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: @@ -178,9 +178,9 @@ jobs: steps: - name: Checkout code uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-go@268d8c0ca0432bb2cf416faae41297df9d262d7f + - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 with: - go-version: '1.18' + go-version: '1.19' - name: Set environment variables from scripts run: | TAG='${{ needs.tag.outputs.tag }}' @@ -202,9 +202,9 @@ jobs: timeout-minutes: 30 steps: - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: actions/setup-go@c4a742cab115ed795e34d4513e2cf7d472deb55f + - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 with: - go-version: '1.18' + go-version: '1.19' - uses: docker/setup-buildx-action@94ab11c41e45d028884a99163086648e898eed25 - name: Pull linkerd binary run: | From bf4e7abd2509c5aec422bbae41e73c8ecae0e32f Mon Sep 17 00:00:00 2001 From: ziollek Date: Wed, 19 Oct 2022 22:27:11 +0200 Subject: [PATCH 6/9] Fixes #9616 remove kubectl version check (#9623) * Fixes #9616 remove kubectl version check Signed-off-by: tomasz.ziolkowski Signed-off-by: Alejandro Pedraza --- pkg/healthcheck/healthcheck.go | 7 --- pkg/k8s/kubectl.go | 43 ------------------- pkg/k8s/kubectl_test.go | 34 --------------- .../install/smoke/testdata/check.proxy.golden | 1 - .../install/testdata/check.cni.proxy.golden | 1 - .../install/testdata/check.config.golden | 1 - .../testdata/check.multicluster.proxy.golden | 1 - .../install/testdata/check.pre.golden | 1 - .../install/testdata/check.proxy.golden | 1 - .../uninstall/testdata/check.pre.golden | 1 - .../testdata/check.upgrade.golden | 1 - .../testdata/check.upgrade.golden | 1 - 12 files changed, 93 deletions(-) delete mode 100644 pkg/k8s/kubectl.go delete mode 100644 pkg/k8s/kubectl_test.go diff --git a/pkg/healthcheck/healthcheck.go b/pkg/healthcheck/healthcheck.go index f345aa89ba72a..6eb9962c30cce 100644 --- a/pkg/healthcheck/healthcheck.go +++ b/pkg/healthcheck/healthcheck.go @@ -539,13 +539,6 @@ func (hc *HealthChecker) allCategories() []*Category { return hc.kubeAPI.CheckVersion(hc.kubeVersion) }, }, - { - description: "is running the minimum kubectl version", - hintAnchor: "kubectl-version", - check: func(context.Context) error { - return k8s.CheckKubectlVersion() - }, - }, }, false, ), diff --git a/pkg/k8s/kubectl.go b/pkg/k8s/kubectl.go deleted file mode 100644 index 5a335e7302f51..0000000000000 --- a/pkg/k8s/kubectl.go +++ /dev/null @@ -1,43 +0,0 @@ -package k8s - -import ( - "fmt" - "os/exec" - "regexp" -) - -// minKubectlVersion is effectively minAPIVersion. -// It's unlikely that the minimum supported kubectl version -// will be different from that of the k8s API. -var minKubectlVersion = minAPIVersion - -// CheckKubectlVersion validates whether the installed kubectl version is -// running a minimum kubectl version. -func CheckKubectlVersion() error { - cmd := exec.Command("kubectl", "version", "--client", "--short") - bytes, err := cmd.Output() - if err != nil { - return err - } - - clientVersion := fmt.Sprintf("%s\n", bytes) - kubectlVersion, err := parseKubectlShortVersion(clientVersion) - if err != nil { - return err - } - - if !isCompatibleVersion(minKubectlVersion, kubectlVersion) { - return fmt.Errorf("kubectl is on version [%d.%d.%d], but version [%d.%d.%d] or more recent is required", - kubectlVersion[0], kubectlVersion[1], kubectlVersion[2], - minKubectlVersion[0], minKubectlVersion[1], minKubectlVersion[2]) - } - - return nil -} - -var semVer = regexp.MustCompile("(v[0-9]+.[0-9]+.[0-9]+)") - -func parseKubectlShortVersion(version string) ([3]int, error) { - versionString := semVer.FindString(version) - return getK8sVersion(versionString) -} diff --git a/pkg/k8s/kubectl_test.go b/pkg/k8s/kubectl_test.go deleted file mode 100644 index 629a22efb449a..0000000000000 --- a/pkg/k8s/kubectl_test.go +++ /dev/null @@ -1,34 +0,0 @@ -package k8s - -import "testing" - -var versionTests = []struct { - v string // input - expected [3]int // expected -}{ - {"Client Version: v1.10.1", [3]int{1, 10, 1}}, - {"client Version: v1.10.1", [3]int{1, 10, 1}}, - {"Client Version - v1.10.1", [3]int{1, 10, 1}}, - {"v1.10.1", [3]int{1, 10, 1}}, - {"Client Version: v1.10.1 beta:2", [3]int{1, 10, 1}}, - {"Client Version: v2.1348.1", [3]int{2, 1348, 1}}, -} - -func TestParseKubectlShortVersion(t *testing.T) { - for _, tt := range versionTests { - actual, err := parseKubectlShortVersion(tt.v) - if err != nil { - t.Fatalf("Unexpected error while parsing kubectl short version: %v", err) - } - if actual != tt.expected { - t.Fatalf("Expected to get %v but got %v", tt.expected, actual) - } - } -} - -func TestParseKubectlShortVersionIncorrectVersion(t *testing.T) { - _, err := parseKubectlShortVersion("Not really a version") - if err == nil { - t.Fatalf("Expected to get an error") - } -} diff --git a/test/integration/install/smoke/testdata/check.proxy.golden b/test/integration/install/smoke/testdata/check.proxy.golden index 10f3b368651f6..2a53c475cdd37 100644 --- a/test/integration/install/smoke/testdata/check.proxy.golden +++ b/test/integration/install/smoke/testdata/check.proxy.golden @@ -9,7 +9,6 @@ kubernetes-api kubernetes-version ------------------ √ is running the minimum Kubernetes API version -√ is running the minimum kubectl version linkerd-existence ----------------- diff --git a/test/integration/install/testdata/check.cni.proxy.golden b/test/integration/install/testdata/check.cni.proxy.golden index 6c6332cf38598..c5facfde61e1b 100644 --- a/test/integration/install/testdata/check.cni.proxy.golden +++ b/test/integration/install/testdata/check.cni.proxy.golden @@ -9,7 +9,6 @@ kubernetes-api kubernetes-version ------------------ √ is running the minimum Kubernetes API version -√ is running the minimum kubectl version linkerd-existence ----------------- diff --git a/test/integration/install/testdata/check.config.golden b/test/integration/install/testdata/check.config.golden index 1895322e03848..7865bddecfbb8 100644 --- a/test/integration/install/testdata/check.config.golden +++ b/test/integration/install/testdata/check.config.golden @@ -9,7 +9,6 @@ kubernetes-api kubernetes-version ------------------ √ is running the minimum Kubernetes API version -√ is running the minimum kubectl version linkerd-config -------------- diff --git a/test/integration/install/testdata/check.multicluster.proxy.golden b/test/integration/install/testdata/check.multicluster.proxy.golden index 743d315625d15..ef592a454dfc5 100644 --- a/test/integration/install/testdata/check.multicluster.proxy.golden +++ b/test/integration/install/testdata/check.multicluster.proxy.golden @@ -9,7 +9,6 @@ kubernetes-api kubernetes-version ------------------ √ is running the minimum Kubernetes API version -√ is running the minimum kubectl version linkerd-existence ----------------- diff --git a/test/integration/install/testdata/check.pre.golden b/test/integration/install/testdata/check.pre.golden index 1f72a63c91ca1..419cd3b537dc5 100644 --- a/test/integration/install/testdata/check.pre.golden +++ b/test/integration/install/testdata/check.pre.golden @@ -9,7 +9,6 @@ kubernetes-api kubernetes-version ------------------ √ is running the minimum Kubernetes API version -√ is running the minimum kubectl version pre-kubernetes-setup -------------------- diff --git a/test/integration/install/testdata/check.proxy.golden b/test/integration/install/testdata/check.proxy.golden index 10f3b368651f6..2a53c475cdd37 100644 --- a/test/integration/install/testdata/check.proxy.golden +++ b/test/integration/install/testdata/check.proxy.golden @@ -9,7 +9,6 @@ kubernetes-api kubernetes-version ------------------ √ is running the minimum Kubernetes API version -√ is running the minimum kubectl version linkerd-existence ----------------- diff --git a/test/integration/install/uninstall/testdata/check.pre.golden b/test/integration/install/uninstall/testdata/check.pre.golden index 1f72a63c91ca1..419cd3b537dc5 100644 --- a/test/integration/install/uninstall/testdata/check.pre.golden +++ b/test/integration/install/uninstall/testdata/check.pre.golden @@ -9,7 +9,6 @@ kubernetes-api kubernetes-version ------------------ √ is running the minimum Kubernetes API version -√ is running the minimum kubectl version pre-kubernetes-setup -------------------- diff --git a/test/integration/upgrade-edge/testdata/check.upgrade.golden b/test/integration/upgrade-edge/testdata/check.upgrade.golden index fa9267960d7bf..325434390e459 100644 --- a/test/integration/upgrade-edge/testdata/check.upgrade.golden +++ b/test/integration/upgrade-edge/testdata/check.upgrade.golden @@ -9,7 +9,6 @@ kubernetes-api kubernetes-version ------------------ √ is running the minimum Kubernetes API version -√ is running the minimum kubectl version linkerd-existence ----------------- diff --git a/test/integration/upgrade-stable/testdata/check.upgrade.golden b/test/integration/upgrade-stable/testdata/check.upgrade.golden index fa9267960d7bf..325434390e459 100644 --- a/test/integration/upgrade-stable/testdata/check.upgrade.golden +++ b/test/integration/upgrade-stable/testdata/check.upgrade.golden @@ -9,7 +9,6 @@ kubernetes-api kubernetes-version ------------------ √ is running the minimum Kubernetes API version -√ is running the minimum kubectl version linkerd-existence ----------------- From f1a29cab9374b536e21db8ea043072df74536c8d Mon Sep 17 00:00:00 2001 From: Alejandro Pedraza Date: Wed, 6 Sep 2023 18:11:37 -0500 Subject: [PATCH 7/9] Temporary changes to trigger tests in k8s 1.21 --- .github/workflows/integration.yml | 2 ++ bin/_test-helpers.sh | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 94521e135830b..1b120bcaafbef 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -1,5 +1,7 @@ name: Integration tests +# this comment changes this file, so all tests are triggered + on: pull_request: paths: diff --git a/bin/_test-helpers.sh b/bin/_test-helpers.sh index 77d925a6e3d29..c946d14fde9c6 100644 --- a/bin/_test-helpers.sh +++ b/bin/_test-helpers.sh @@ -244,7 +244,7 @@ setup_cluster() { test_setup if [ -z "$skip_cluster_create" ]; then - "$bindir"/k3d cluster create "$@" + "$bindir"/k3d cluster create --image='+v1.21' "$@" image_load "$name" fi check_cluster @@ -386,13 +386,13 @@ latest_release_channel() { # Run the upgrade-edge test by upgrading the most-recent edge release to the # HEAD of this branch. run_upgrade-edge_test() { - run_test "$test_directory/upgrade-edge/..." + run_test "$test_directory/upgrade-edge/..." } # Run the upgrade-stable test by upgrading the most-recent stable release to the # HEAD of this branch. run_upgrade-stable_test() { - run_test "$test_directory/upgrade-stable/..." + run_test "$test_directory/upgrade-stable/..." } run_viz_test() { @@ -448,7 +448,7 @@ run_uninstall_test() { } run_multicluster_test() { - run_test "$test_directory/multicluster/..." + run_test "$test_directory/multicluster/..." } run_deep_test() { @@ -457,7 +457,7 @@ run_deep_test() { run_default-policy-deny_test() { export default_inbound_policy='deny' - run_test "$test_directory/install/install_test.go" + run_test "$test_directory/install/install_test.go" } run_cni-calico-deep_test() { @@ -473,7 +473,7 @@ run_external_test() { } run_cluster-domain_test() { - run_test "$test_directory/install/install_test.go" --cluster-domain='custom.domain' + run_test "$test_directory/install/install_test.go" --cluster-domain='custom.domain' } # exit_on_err should be called right after a command to check the result status From 8059d9673691a7848f858ef0ed1334bb19118b4d Mon Sep 17 00:00:00 2001 From: Alejandro Pedraza Date: Wed, 6 Sep 2023 18:41:14 -0500 Subject: [PATCH 8/9] Revert "Temporary changes to trigger tests in k8s 1.21" This reverts commit f1a29cab9374b536e21db8ea043072df74536c8d. --- .github/workflows/integration.yml | 2 -- bin/_test-helpers.sh | 12 ++++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 1b120bcaafbef..94521e135830b 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -1,7 +1,5 @@ name: Integration tests -# this comment changes this file, so all tests are triggered - on: pull_request: paths: diff --git a/bin/_test-helpers.sh b/bin/_test-helpers.sh index c946d14fde9c6..77d925a6e3d29 100644 --- a/bin/_test-helpers.sh +++ b/bin/_test-helpers.sh @@ -244,7 +244,7 @@ setup_cluster() { test_setup if [ -z "$skip_cluster_create" ]; then - "$bindir"/k3d cluster create --image='+v1.21' "$@" + "$bindir"/k3d cluster create "$@" image_load "$name" fi check_cluster @@ -386,13 +386,13 @@ latest_release_channel() { # Run the upgrade-edge test by upgrading the most-recent edge release to the # HEAD of this branch. run_upgrade-edge_test() { - run_test "$test_directory/upgrade-edge/..." + run_test "$test_directory/upgrade-edge/..." } # Run the upgrade-stable test by upgrading the most-recent stable release to the # HEAD of this branch. run_upgrade-stable_test() { - run_test "$test_directory/upgrade-stable/..." + run_test "$test_directory/upgrade-stable/..." } run_viz_test() { @@ -448,7 +448,7 @@ run_uninstall_test() { } run_multicluster_test() { - run_test "$test_directory/multicluster/..." + run_test "$test_directory/multicluster/..." } run_deep_test() { @@ -457,7 +457,7 @@ run_deep_test() { run_default-policy-deny_test() { export default_inbound_policy='deny' - run_test "$test_directory/install/install_test.go" + run_test "$test_directory/install/install_test.go" } run_cni-calico-deep_test() { @@ -473,7 +473,7 @@ run_external_test() { } run_cluster-domain_test() { - run_test "$test_directory/install/install_test.go" --cluster-domain='custom.domain' + run_test "$test_directory/install/install_test.go" --cluster-domain='custom.domain' } # exit_on_err should be called right after a command to check the result status From fd5c25859894dcf38117f7fb11a2df819b3dfaa7 Mon Sep 17 00:00:00 2001 From: Alejandro Pedraza Date: Thu, 7 Sep 2023 14:31:30 -0500 Subject: [PATCH 9/9] Bump go to 1.19 in go.mod --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index a4c68b4d341df..008c2f796325a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/linkerd/linkerd2 -go 1.18 +go 1.19 require ( contrib.go.opencensus.io/exporter/ocagent v0.7.0