From 9f5d8027080fb6ce78a0da58841ec4cfd6212be7 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Mon, 9 Aug 2021 16:47:09 -0700 Subject: [PATCH 01/11] Cleanup schema change reporting --- pkg/accesscontrol/access_store.go | 8 +++++++- pkg/resources/schemas/template.go | 17 +++++++++++++++-- pkg/stores/proxy/watch_refresh.go | 2 +- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pkg/accesscontrol/access_store.go b/pkg/accesscontrol/access_store.go index c14ee6e..9c9968b 100644 --- a/pkg/accesscontrol/access_store.go +++ b/pkg/accesscontrol/access_store.go @@ -64,6 +64,10 @@ func (l *AccessStore) AccessFor(user user.Info) *AccessSet { } func (l *AccessStore) CacheKey(user user.Info) string { + cacheKey, ok := l.cache.Get(user.GetName()) + if ok { + return cacheKey.(string) + } d := sha256.New() l.users.addRolesToHash(d, user.GetName()) @@ -77,5 +81,7 @@ func (l *AccessStore) CacheKey(user user.Info) string { l.groups.addRolesToHash(d, group) } - return hex.EncodeToString(d.Sum(nil)) + cacheKey = hex.EncodeToString(d.Sum(nil)) + l.cache.Add(user.GetName(), cacheKey, 2*time.Second) + return cacheKey.(string) } diff --git a/pkg/resources/schemas/template.go b/pkg/resources/schemas/template.go index b683aad..50b7bb8 100644 --- a/pkg/resources/schemas/template.go +++ b/pkg/resources/schemas/template.go @@ -6,6 +6,7 @@ import ( "time" "github.com/rancher/apiserver/pkg/builtin" + "k8s.io/apimachinery/pkg/api/equality" schemastore "github.com/rancher/apiserver/pkg/store/schema" "github.com/rancher/apiserver/pkg/types" @@ -96,12 +97,24 @@ func (s *Store) sendSchemas(result chan types.APIEvent, apiOp *types.APIRequest, inNewSchemas := map[string]bool{} for _, apiObject := range schemastore.FilterSchemas(apiOp, schemas.Schemas).Objects { + inNewSchemas[apiObject.ID] = true + eventName := types.ChangeAPIEvent + if oldSchema := oldSchemas.LookupSchema(apiObject.ID); oldSchema == nil { + eventName = types.CreateAPIEvent + } else { + newSchemaCopy := apiObject.Object.(*types.APISchema).Schema.DeepCopy() + oldSchemaCopy := oldSchema.Schema.DeepCopy() + newSchemaCopy.Mapper = nil + oldSchemaCopy.Mapper = nil + if equality.Semantic.DeepEqual(newSchemaCopy, oldSchemaCopy) { + continue + } + } result <- types.APIEvent{ - Name: types.ChangeAPIEvent, + Name: eventName, ResourceType: "schema", Object: apiObject, } - inNewSchemas[apiObject.ID] = true } for _, oldSchema := range schemastore.FilterSchemas(apiOp, oldSchemas.Schemas).Objects { diff --git a/pkg/stores/proxy/watch_refresh.go b/pkg/stores/proxy/watch_refresh.go index 87ecda0..7674a16 100644 --- a/pkg/stores/proxy/watch_refresh.go +++ b/pkg/stores/proxy/watch_refresh.go @@ -29,7 +29,7 @@ func (w *WatchRefresh) Watch(apiOp *types.APIRequest, schema *types.APISchema, w select { case <-ctx.Done(): return - case <-time.After(30 * time.Second): + case <-time.After(2 * time.Second): } newAs := w.asl.AccessFor(user) From 0414d4acf5cdea4d3cf40f52498cab358c7c3921 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 10 Aug 2021 10:43:34 -0700 Subject: [PATCH 02/11] If the user doesn't specify a resourceVersion default to "" not latest --- pkg/stores/proxy/proxy_store.go | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/pkg/stores/proxy/proxy_store.go b/pkg/stores/proxy/proxy_store.go index 8be0bb3..80e8aa5 100644 --- a/pkg/stores/proxy/proxy_store.go +++ b/pkg/stores/proxy/proxy_store.go @@ -282,21 +282,8 @@ func returnErr(err error, c chan types.APIEvent) { func (s *Store) listAndWatch(apiOp *types.APIRequest, k8sClient dynamic.ResourceInterface, schema *types.APISchema, w types.WatchRequest, result chan types.APIEvent) { rev := w.Revision - if rev == "-1" { + if rev == "-1" || rev == "0" { rev = "" - } else { - // ensure the revision is valid or get the latest one - list, err := k8sClient.List(apiOp.Context(), metav1.ListOptions{ - Limit: 1, - ResourceVersion: rev, - }) - if err != nil { - returnErr(errors.Wrapf(err, "failed to list %s", schema.ID), result) - return - } - if rev == "" { - rev = list.GetResourceVersion() - } } timeout := int64(60 * 30) From 426330efa2ba41dedfdf828ff3f76e1e066ca250 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 10 Aug 2021 11:03:59 -0700 Subject: [PATCH 03/11] Ensure that watches use the latest schemas --- pkg/resources/schema.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/resources/schema.go b/pkg/resources/schema.go index 40fbdf4..61a08ce 100644 --- a/pkg/resources/schema.go +++ b/pkg/resources/schema.go @@ -19,13 +19,23 @@ import ( steveschema "github.com/rancher/steve/pkg/schema" "github.com/rancher/steve/pkg/stores/proxy" "github.com/rancher/steve/pkg/summarycache" + "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/client-go/discovery" ) func DefaultSchemas(ctx context.Context, baseSchema *types.APISchemas, ccache clustercache.ClusterCache, cg proxy.ClientGetter, schemaFactory steveschema.Factory) error { counts.Register(baseSchema, ccache) - subscribe.Register(baseSchema) + subscribe.Register(baseSchema, func(apiOp *types.APIRequest) *types.APISchemas { + user, ok := request.UserFrom(apiOp.Context()) + if ok { + schemas, err := schemaFactory.Schemas(user) + if err == nil { + return schemas + } + } + return apiOp.Schemas + }) apiroot.Register(baseSchema, []string{"v1"}, "proxy:/apis") cluster.Register(ctx, baseSchema, cg, schemaFactory) userpreferences.Register(baseSchema) From a2354a9ed94cba00c8677d8eeb35d4c52bfdcd77 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 10 Aug 2021 11:04:45 -0700 Subject: [PATCH 04/11] Update vendor --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index fd08805..7d8a7dd 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/imdario/mergo v0.3.8 // indirect github.com/pborman/uuid v1.2.0 github.com/pkg/errors v0.9.1 - github.com/rancher/apiserver v0.0.0-20210727155917-6a723678dd3d + github.com/rancher/apiserver v0.0.0-20210810180325-a404b458556c github.com/rancher/dynamiclistener v0.2.1-0.20200714201033-9c1939da3af9 github.com/rancher/kubernetes-provider-detector v0.1.2 github.com/rancher/norman v0.0.0-20210423002317-8e6ffc77a819 diff --git a/go.sum b/go.sum index c18e0eb..be1f16d 100644 --- a/go.sum +++ b/go.sum @@ -444,8 +444,8 @@ github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULU github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= -github.com/rancher/apiserver v0.0.0-20210727155917-6a723678dd3d h1:mRiUiDgpF+b6QCI9rJpanYNCnZ5VJgPnD5HNtj/bX+Y= -github.com/rancher/apiserver v0.0.0-20210727155917-6a723678dd3d/go.mod h1:8W0EwaR9dH5NDFw6mpAX437D0q+EZqKWbZyX71+z2WI= +github.com/rancher/apiserver v0.0.0-20210810180325-a404b458556c h1:nW2PfHaxLxk7o1ic2YwsEX/jnc8Vra52zsEZXxIzznk= +github.com/rancher/apiserver v0.0.0-20210810180325-a404b458556c/go.mod h1:8W0EwaR9dH5NDFw6mpAX437D0q+EZqKWbZyX71+z2WI= github.com/rancher/client-go v1.20.0-rancher.1 h1:B85UDTIx+0XgOyv0obL9HJSNdY3mNBi1+wm26TOQZ8o= github.com/rancher/client-go v1.20.0-rancher.1/go.mod h1:UTdyXFcu9VZV4qQRKGXCa0KdMX4HTCXClRs4s7yFdDQ= github.com/rancher/dynamiclistener v0.2.1-0.20200714201033-9c1939da3af9 h1:Mo5mPXi7k/TgzMcUIuDpbNxiX2bYh68+yEpaur5Nx80= From b219ba5d7cd8397b29882624eda1b66ee47975fd Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 10 Aug 2021 14:02:22 -0700 Subject: [PATCH 05/11] Don't cache the user's schema cache key --- pkg/accesscontrol/access_store.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkg/accesscontrol/access_store.go b/pkg/accesscontrol/access_store.go index 9c9968b..c14ee6e 100644 --- a/pkg/accesscontrol/access_store.go +++ b/pkg/accesscontrol/access_store.go @@ -64,10 +64,6 @@ func (l *AccessStore) AccessFor(user user.Info) *AccessSet { } func (l *AccessStore) CacheKey(user user.Info) string { - cacheKey, ok := l.cache.Get(user.GetName()) - if ok { - return cacheKey.(string) - } d := sha256.New() l.users.addRolesToHash(d, user.GetName()) @@ -81,7 +77,5 @@ func (l *AccessStore) CacheKey(user user.Info) string { l.groups.addRolesToHash(d, group) } - cacheKey = hex.EncodeToString(d.Sum(nil)) - l.cache.Add(user.GetName(), cacheKey, 2*time.Second) - return cacheKey.(string) + return hex.EncodeToString(d.Sum(nil)) } From 4a34cec9143abe83dbce1b0399913b048d96bf0f Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 10 Aug 2021 16:09:19 -0700 Subject: [PATCH 06/11] Add server version to websocket pings --- pkg/resources/schema.go | 4 ++-- pkg/server/server.go | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/resources/schema.go b/pkg/resources/schema.go index 61a08ce..ff3fee1 100644 --- a/pkg/resources/schema.go +++ b/pkg/resources/schema.go @@ -24,7 +24,7 @@ import ( ) func DefaultSchemas(ctx context.Context, baseSchema *types.APISchemas, ccache clustercache.ClusterCache, - cg proxy.ClientGetter, schemaFactory steveschema.Factory) error { + cg proxy.ClientGetter, schemaFactory steveschema.Factory, serverVersion string) error { counts.Register(baseSchema, ccache) subscribe.Register(baseSchema, func(apiOp *types.APIRequest) *types.APISchemas { user, ok := request.UserFrom(apiOp.Context()) @@ -35,7 +35,7 @@ func DefaultSchemas(ctx context.Context, baseSchema *types.APISchemas, ccache cl } } return apiOp.Schemas - }) + }, serverVersion) apiroot.Register(baseSchema, []string{"v1"}, "proxy:/apis") cluster.Register(ctx, baseSchema, cg, schemaFactory) userpreferences.Register(baseSchema) diff --git a/pkg/server/server.go b/pkg/server/server.go index e8615d8..1a54a9f 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -37,6 +37,7 @@ type Server struct { AccessSetLookup accesscontrol.AccessSetLookup APIServer *apiserver.Server ClusterRegistry string + Version string authMiddleware auth.Middleware controllers *Controllers @@ -59,6 +60,7 @@ type Options struct { AggregationSecretNamespace string AggregationSecretName string ClusterRegistry string + ServerVersion string } func New(ctx context.Context, restConfig *rest.Config, opts *Options) (*Server, error) { @@ -77,6 +79,7 @@ func New(ctx context.Context, restConfig *rest.Config, opts *Options) (*Server, aggregationSecretNamespace: opts.AggregationSecretNamespace, aggregationSecretName: opts.AggregationSecretName, ClusterRegistry: opts.ClusterRegistry, + Version: opts.ServerVersion, } if err := setup(ctx, server); err != nil { @@ -135,7 +138,7 @@ func setup(ctx context.Context, server *Server) error { server.ClusterCache = ccache sf := schema.NewCollection(ctx, server.BaseSchemas, asl) - if err = resources.DefaultSchemas(ctx, server.BaseSchemas, ccache, server.ClientFactory, sf); err != nil { + if err = resources.DefaultSchemas(ctx, server.BaseSchemas, ccache, server.ClientFactory, sf, server.Version); err != nil { return err } From e9222c6ccffaac0a0d5709de987cc70e05198ee8 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 10 Aug 2021 16:09:39 -0700 Subject: [PATCH 07/11] Update vendor --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 7d8a7dd..711a4b4 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/imdario/mergo v0.3.8 // indirect github.com/pborman/uuid v1.2.0 github.com/pkg/errors v0.9.1 - github.com/rancher/apiserver v0.0.0-20210810180325-a404b458556c + github.com/rancher/apiserver v0.0.0-20210810230850-96c000dcb0b4 github.com/rancher/dynamiclistener v0.2.1-0.20200714201033-9c1939da3af9 github.com/rancher/kubernetes-provider-detector v0.1.2 github.com/rancher/norman v0.0.0-20210423002317-8e6ffc77a819 diff --git a/go.sum b/go.sum index be1f16d..ebd41cc 100644 --- a/go.sum +++ b/go.sum @@ -444,8 +444,8 @@ github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULU github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= -github.com/rancher/apiserver v0.0.0-20210810180325-a404b458556c h1:nW2PfHaxLxk7o1ic2YwsEX/jnc8Vra52zsEZXxIzznk= -github.com/rancher/apiserver v0.0.0-20210810180325-a404b458556c/go.mod h1:8W0EwaR9dH5NDFw6mpAX437D0q+EZqKWbZyX71+z2WI= +github.com/rancher/apiserver v0.0.0-20210810230850-96c000dcb0b4 h1:5Eu7t/AyLh2LdxmIRT6QP3uzetJyJAmKdqyFggW0B60= +github.com/rancher/apiserver v0.0.0-20210810230850-96c000dcb0b4/go.mod h1:8W0EwaR9dH5NDFw6mpAX437D0q+EZqKWbZyX71+z2WI= github.com/rancher/client-go v1.20.0-rancher.1 h1:B85UDTIx+0XgOyv0obL9HJSNdY3mNBi1+wm26TOQZ8o= github.com/rancher/client-go v1.20.0-rancher.1/go.mod h1:UTdyXFcu9VZV4qQRKGXCa0KdMX4HTCXClRs4s7yFdDQ= github.com/rancher/dynamiclistener v0.2.1-0.20200714201033-9c1939da3af9 h1:Mo5mPXi7k/TgzMcUIuDpbNxiX2bYh68+yEpaur5Nx80= From d9512c366d0f35744ec7198d41802c2506ce1630 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Fri, 13 Aug 2021 11:02:38 -0700 Subject: [PATCH 08/11] Add ability to disallow methods per a schema attribute --- pkg/attributes/attributes.go | 19 +++++++++++++++++++ pkg/schema/factory.go | 19 +++++++++++++------ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/pkg/attributes/attributes.go b/pkg/attributes/attributes.go index f07034b..81be0b3 100644 --- a/pkg/attributes/attributes.go +++ b/pkg/attributes/attributes.go @@ -127,6 +127,25 @@ func Access(s *types.APISchema) interface{} { return s.Attributes["access"] } +func AddDisallowMethods(s *types.APISchema, methods ...string) { + data, ok := s.Attributes["disallowMethods"].(map[string]bool) + if !ok { + data = map[string]bool{} + s.Attributes["disallowMethods"] = data + } + for _, method := range methods { + data[method] = true + } +} + +func DisallowMethods(s *types.APISchema) map[string]bool { + data, ok := s.Attributes["disallowMethods"].(map[string]bool) + if !ok { + return nil + } + return data +} + func SetAPIResource(s *types.APISchema, resource v1.APIResource) { SetResource(s, resource.Name) SetVerbs(s, resource.Verbs) diff --git a/pkg/schema/factory.go b/pkg/schema/factory.go index 3b9f150..b16af18 100644 --- a/pkg/schema/factory.go +++ b/pkg/schema/factory.go @@ -99,21 +99,28 @@ func (c *Collection) schemasForSubject(access *accesscontrol.AccessSet) (*types. } } + allowed := func(method string) string { + if attributes.DisallowMethods(s)[method] { + return "blocked-" + method + } + return method + } + s = s.DeepCopy() attributes.SetAccess(s, verbAccess) if verbAccess.AnyVerb("list", "get") { - s.ResourceMethods = append(s.ResourceMethods, http.MethodGet) - s.CollectionMethods = append(s.CollectionMethods, http.MethodGet) + s.ResourceMethods = append(s.ResourceMethods, allowed(http.MethodGet)) + s.CollectionMethods = append(s.CollectionMethods, allowed(http.MethodGet)) } if verbAccess.AnyVerb("delete") { - s.ResourceMethods = append(s.ResourceMethods, http.MethodDelete) + s.ResourceMethods = append(s.ResourceMethods, allowed(http.MethodDelete)) } if verbAccess.AnyVerb("update") { - s.ResourceMethods = append(s.ResourceMethods, http.MethodPut) - s.ResourceMethods = append(s.ResourceMethods, http.MethodPatch) + s.ResourceMethods = append(s.ResourceMethods, allowed(http.MethodPut)) + s.ResourceMethods = append(s.ResourceMethods, allowed(http.MethodPatch)) } if verbAccess.AnyVerb("create") { - s.CollectionMethods = append(s.CollectionMethods, http.MethodPost) + s.CollectionMethods = append(s.CollectionMethods, allowed(http.MethodPost)) } if len(s.CollectionMethods) == 0 && len(s.ResourceMethods) == 0 { From bcbcef36b3f10b14f06b3c5b525310447dcdb64a Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Mon, 16 Aug 2021 15:41:36 -0700 Subject: [PATCH 09/11] Add blocked links for update and remove if method is disallowed --- pkg/resources/common/formatter.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/resources/common/formatter.go b/pkg/resources/common/formatter.go index 1ffdc32..7ea90b2 100644 --- a/pkg/resources/common/formatter.go +++ b/pkg/resources/common/formatter.go @@ -73,6 +73,14 @@ func formatter(summarycache *summarycache.SummaryCache) types.Formatter { resource.Links["update"] = u } + if _, ok := resource.Links["update"]; !ok && slice.ContainsString(resource.Schema.ResourceMethods, "blocked-PUT") { + resource.Links["update"] = "blocked" + } + + if _, ok := resource.Links["remove"]; !ok && slice.ContainsString(resource.Schema.ResourceMethods, "blocked-DELETE") { + resource.Links["remove"] = "blocked" + } + if unstr, ok := resource.APIObject.Object.(*unstructured.Unstructured); ok { s, rel := summarycache.SummaryAndRelationship(unstr) data.PutValue(unstr.Object, map[string]interface{}{ From e70fca2a4266e138a6eced29cf4713fd98231c52 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Mon, 16 Aug 2021 22:05:50 -0700 Subject: [PATCH 10/11] Fix restart of steve aggregation --- pkg/aggregation/server.go | 14 +++++++++++++- pkg/aggregation/watch.go | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pkg/aggregation/server.go b/pkg/aggregation/server.go index 9d39c3d..b0b3a74 100644 --- a/pkg/aggregation/server.go +++ b/pkg/aggregation/server.go @@ -60,12 +60,24 @@ func ListenAndServe(ctx context.Context, url string, caCert []byte, token string func serve(ctx context.Context, dialer websocket.Dialer, url string, headers http.Header, handler http.Handler) error { url = strings.Replace(url, "http://", "ws://", 1) url = strings.Replace(url, "https://", "wss://", 1) - conn, _, err := dialer.DialContext(ctx, url, headers) + + // ensure we clean up everything on exit + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + dialCtx, dialCancel := context.WithTimeout(ctx, 5*time.Second) + defer dialCancel() + conn, _, err := dialer.DialContext(dialCtx, url, headers) if err != nil { return err } defer conn.Close() + go func() { + <-ctx.Done() + conn.Close() + }() + listener := NewListener("steve") server := http.Server{ Handler: handler, diff --git a/pkg/aggregation/watch.go b/pkg/aggregation/watch.go index 5f42400..263b65d 100644 --- a/pkg/aggregation/watch.go +++ b/pkg/aggregation/watch.go @@ -85,7 +85,7 @@ func (h *handler) shouldRestart(secret *corev1.Secret) (string, []byte, string, if h.url != url || h.token != token || - bytes.Equal(h.caCert, caCert) { + !bytes.Equal(h.caCert, caCert) { return url, caCert, token, true, nil } From 8ecda307ee49e06de9a3fb8f0355a987438cd3a8 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Wed, 18 Aug 2021 17:17:52 -0700 Subject: [PATCH 11/11] Update vendor --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 711a4b4..f1b1c57 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/imdario/mergo v0.3.8 // indirect github.com/pborman/uuid v1.2.0 github.com/pkg/errors v0.9.1 - github.com/rancher/apiserver v0.0.0-20210810230850-96c000dcb0b4 + github.com/rancher/apiserver v0.0.0-20210818221223-fb33444dfae8 github.com/rancher/dynamiclistener v0.2.1-0.20200714201033-9c1939da3af9 github.com/rancher/kubernetes-provider-detector v0.1.2 github.com/rancher/norman v0.0.0-20210423002317-8e6ffc77a819 diff --git a/go.sum b/go.sum index ebd41cc..9974d78 100644 --- a/go.sum +++ b/go.sum @@ -444,8 +444,8 @@ github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULU github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d/go.mod h1:7DPO4domFU579Ga6E61sB9VFNaniPVwJP5C4bBCu3wA= -github.com/rancher/apiserver v0.0.0-20210810230850-96c000dcb0b4 h1:5Eu7t/AyLh2LdxmIRT6QP3uzetJyJAmKdqyFggW0B60= -github.com/rancher/apiserver v0.0.0-20210810230850-96c000dcb0b4/go.mod h1:8W0EwaR9dH5NDFw6mpAX437D0q+EZqKWbZyX71+z2WI= +github.com/rancher/apiserver v0.0.0-20210818221223-fb33444dfae8 h1:Lg2urAlvMUO+sH8tFQMZzsgn+wP5hVjkVghVQtobqow= +github.com/rancher/apiserver v0.0.0-20210818221223-fb33444dfae8/go.mod h1:8W0EwaR9dH5NDFw6mpAX437D0q+EZqKWbZyX71+z2WI= github.com/rancher/client-go v1.20.0-rancher.1 h1:B85UDTIx+0XgOyv0obL9HJSNdY3mNBi1+wm26TOQZ8o= github.com/rancher/client-go v1.20.0-rancher.1/go.mod h1:UTdyXFcu9VZV4qQRKGXCa0KdMX4HTCXClRs4s7yFdDQ= github.com/rancher/dynamiclistener v0.2.1-0.20200714201033-9c1939da3af9 h1:Mo5mPXi7k/TgzMcUIuDpbNxiX2bYh68+yEpaur5Nx80=