Skip to content

Commit

Permalink
Merge pull request #6028 from inteon/fix_scheme_errors
Browse files Browse the repository at this point in the history
Stop using global runtime.Scheme variables
  • Loading branch information
jetstack-bot committed Nov 6, 2023
2 parents 7373e1f + 4c94f3e commit d2f6bbe
Show file tree
Hide file tree
Showing 39 changed files with 155 additions and 131 deletions.
4 changes: 1 addition & 3 deletions cmd/acmesolver/LICENSES
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,12 @@ golang.org/x/text,https://cs.opensource.google/go/x/text/+/v0.13.0:LICENSE,BSD-3
google.golang.org/protobuf,https://github.com/protocolbuffers/protobuf-go/blob/v1.31.0/LICENSE,BSD-3-Clause
gopkg.in/inf.v0,https://github.com/go-inf/inf/blob/v0.9.1/LICENSE,BSD-3-Clause
gopkg.in/yaml.v2,https://github.com/go-yaml/yaml/blob/v2.4.0/LICENSE,Apache-2.0
k8s.io/api,https://github.com/kubernetes/api/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/api/core/v1,https://github.com/kubernetes/api/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions,https://github.com/kubernetes/apiextensions-apiserver/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/apimachinery/pkg,https://github.com/kubernetes/apimachinery/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/apimachinery/third_party/forked/golang/reflect,https://github.com/kubernetes/apimachinery/blob/v0.28.1/third_party/forked/golang/LICENSE,BSD-3-Clause
k8s.io/client-go/kubernetes/scheme,https://github.com/kubernetes/client-go/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/component-base,https://github.com/kubernetes/component-base/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/klog/v2,https://github.com/kubernetes/klog/blob/v2.100.1/LICENSE,Apache-2.0
k8s.io/kube-aggregator/pkg/apis/apiregistration,https://github.com/kubernetes/kube-aggregator/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/utils,https://github.com/kubernetes/utils/blob/3b25d923346b/LICENSE,Apache-2.0
k8s.io/utils/internal/third_party/forked/golang/net,https://github.com/kubernetes/utils/blob/3b25d923346b/internal/third_party/forked/golang/LICENSE,BSD-3-Clause
sigs.k8s.io/gateway-api/apis/v1beta1,https://github.com/kubernetes-sigs/gateway-api/blob/v0.8.0/LICENSE,Apache-2.0
Expand Down
2 changes: 0 additions & 2 deletions cmd/acmesolver/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,7 @@ require (
k8s.io/api v0.28.1 // indirect
k8s.io/apiextensions-apiserver v0.28.1 // indirect
k8s.io/apimachinery v0.28.1 // indirect
k8s.io/client-go v0.28.1 // indirect
k8s.io/klog/v2 v2.100.1 // indirect
k8s.io/kube-aggregator v0.28.1 // indirect
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
sigs.k8s.io/gateway-api v0.8.0 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
Expand Down
4 changes: 0 additions & 4 deletions cmd/acmesolver/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -155,14 +155,10 @@ k8s.io/apiextensions-apiserver v0.28.1 h1:l2ThkBRjrWpw4f24uq0Da2HaEgqJZ7pcgiEUTK
k8s.io/apiextensions-apiserver v0.28.1/go.mod h1:sVvrI+P4vxh2YBBcm8n2ThjNyzU4BQGilCQ/JAY5kGs=
k8s.io/apimachinery v0.28.1 h1:EJD40og3GizBSV3mkIoXQBsws32okPOy+MkRyzh6nPY=
k8s.io/apimachinery v0.28.1/go.mod h1:X0xh/chESs2hP9koe+SdIAcXWcQ+RM5hy0ZynB+yEvw=
k8s.io/client-go v0.28.1 h1:pRhMzB8HyLfVwpngWKE8hDcXRqifh1ga2Z/PU9SXVK8=
k8s.io/client-go v0.28.1/go.mod h1:pEZA3FqOsVkCc07pFVzK076R+P/eXqsgx5zuuRWukNE=
k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kube-aggregator v0.28.1 h1:rvG4llYnQKHjj6YjjoBPEJxfD1uH0DJwkrJTNKGAaCs=
k8s.io/kube-aggregator v0.28.1/go.mod h1:JaLizMe+AECSpO2OmrWVsvnG0V3dX1RpW+Wq/QHbu18=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/gateway-api v0.8.0 h1:isQQ3Jx2qFP7vaA3ls0846F0Amp9Eq14P08xbSwVbQg=
Expand Down
13 changes: 11 additions & 2 deletions cmd/cainjector/app/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,20 @@ import (

apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/wait"
kscheme "k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/leaderelection/resourcelock"
apireg "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/cache"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/manager"
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"

config "github.com/cert-manager/cert-manager/internal/apis/config/cainjector"
"github.com/cert-manager/cert-manager/pkg/api"
cmscheme "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/scheme"
"github.com/cert-manager/cert-manager/pkg/controller/cainjector"
logf "github.com/cert-manager/cert-manager/pkg/logs"
"github.com/cert-manager/cert-manager/pkg/util"
Expand All @@ -54,10 +57,16 @@ func Run(opts *config.CAInjectorConfiguration, ctx context.Context) error {
}
}

scheme := runtime.NewScheme()
kscheme.AddToScheme(scheme)
cmscheme.AddToScheme(scheme)
apiext.AddToScheme(scheme)
apireg.AddToScheme(scheme)

mgr, err := ctrl.NewManager(
util.RestConfigWithUserAgent(ctrl.GetConfigOrDie(), "cainjector"),
ctrl.Options{
Scheme: api.Scheme,
Scheme: scheme,
Cache: cache.Options{
ReaderFailOnMissingInformer: true,
DefaultNamespaces: defaultNamespaces,
Expand Down
2 changes: 1 addition & 1 deletion cmd/cainjector/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ require (
k8s.io/apimachinery v0.28.1
k8s.io/client-go v0.28.1
k8s.io/component-base v0.28.1
k8s.io/kube-aggregator v0.28.1
sigs.k8s.io/controller-runtime v0.16.2
)

Expand Down Expand Up @@ -70,7 +71,6 @@ require (
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.28.1 // indirect
k8s.io/klog/v2 v2.100.1 // indirect
k8s.io/kube-aggregator v0.28.1 // indirect
k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f // indirect
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
sigs.k8s.io/gateway-api v0.8.0 // indirect
Expand Down
1 change: 0 additions & 1 deletion cmd/controller/LICENSES
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@ k8s.io/apiserver/pkg,https://github.com/kubernetes/apiserver/blob/v0.28.1/LICENS
k8s.io/client-go,https://github.com/kubernetes/client-go/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/component-base,https://github.com/kubernetes/component-base/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/klog/v2,https://github.com/kubernetes/klog/blob/v2.100.1/LICENSE,Apache-2.0
k8s.io/kube-aggregator/pkg/apis/apiregistration,https://github.com/kubernetes/kube-aggregator/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/kube-openapi/pkg,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/LICENSE,Apache-2.0
k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/internal/third_party/go-json-experiment/json/LICENSE,BSD-3-Clause
k8s.io/kube-openapi/pkg/validation/spec,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/validation/spec/LICENSE,Apache-2.0
Expand Down
1 change: 0 additions & 1 deletion cmd/controller/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@ require (
k8s.io/apiextensions-apiserver v0.28.1 // indirect
k8s.io/apiserver v0.28.1 // indirect
k8s.io/klog/v2 v2.100.1 // indirect
k8s.io/kube-aggregator v0.28.1 // indirect
k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.4 // indirect
sigs.k8s.io/gateway-api v0.8.0 // indirect
Expand Down
2 changes: 0 additions & 2 deletions cmd/controller/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -578,8 +578,6 @@ k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kube-aggregator v0.28.1 h1:rvG4llYnQKHjj6YjjoBPEJxfD1uH0DJwkrJTNKGAaCs=
k8s.io/kube-aggregator v0.28.1/go.mod h1:JaLizMe+AECSpO2OmrWVsvnG0V3dX1RpW+Wq/QHbu18=
k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk=
k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
Expand Down
1 change: 0 additions & 1 deletion cmd/ctl/LICENSES
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,6 @@ k8s.io/client-go,https://github.com/kubernetes/client-go/blob/v0.28.1/LICENSE,Ap
k8s.io/client-go/third_party/forked/golang/template,https://github.com/kubernetes/client-go/blob/v0.28.1/third_party/forked/golang/LICENSE,BSD-3-Clause
k8s.io/component-base,https://github.com/kubernetes/component-base/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/klog/v2,https://github.com/kubernetes/klog/blob/v2.100.1/LICENSE,Apache-2.0
k8s.io/kube-aggregator/pkg/apis/apiregistration,https://github.com/kubernetes/kube-aggregator/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/kube-openapi/pkg,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/LICENSE,Apache-2.0
k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/internal/third_party/go-json-experiment/json/LICENSE,BSD-3-Clause
k8s.io/kube-openapi/pkg/validation/spec,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/validation/spec/LICENSE,Apache-2.0
Expand Down
11 changes: 6 additions & 5 deletions cmd/ctl/pkg/check/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ import (
"time"

"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/cli-runtime/pkg/genericclioptions"
cmdutil "k8s.io/kubectl/pkg/cmd/util"
"k8s.io/kubectl/pkg/scheme"
"k8s.io/kubectl/pkg/util/i18n"
"k8s.io/kubectl/pkg/util/templates"

Expand Down Expand Up @@ -70,10 +70,11 @@ func NewOptions(ioStreams genericclioptions.IOStreams) *Options {
func (o *Options) Complete() error {
var err error

// We pass the scheme that is used in the RESTConfig's NegotiatedSerializer,
// this makes sure that the cmapi is also added to NegotiatedSerializer's scheme
// see: https://github.com/cert-manager/cert-manager/pull/4205#discussion_r668660271
o.APIChecker, err = cmapichecker.New(o.RESTConfig, scheme.Scheme, o.Namespace)
o.APIChecker, err = cmapichecker.New(
o.RESTConfig,
runtime.NewScheme(),
o.Namespace,
)
if err != nil {
return err
}
Expand Down
7 changes: 5 additions & 2 deletions cmd/ctl/pkg/version/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ import (
"fmt"

"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/cli-runtime/pkg/genericclioptions"
cmdutil "k8s.io/kubectl/pkg/cmd/util"
"k8s.io/kubectl/pkg/scheme"
"sigs.k8s.io/yaml"

"github.com/cert-manager/cert-manager/cmd/ctl/pkg/build"
Expand Down Expand Up @@ -131,7 +131,10 @@ func (o *Options) Complete() error {
return nil
}

versionChecker, err := versionchecker.New(o.RESTConfig, scheme.Scheme)
versionChecker, err := versionchecker.New(
o.RESTConfig,
runtime.NewScheme(),
)
if err != nil {
return err
}
Expand Down
1 change: 0 additions & 1 deletion cmd/webhook/LICENSES
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ k8s.io/apiserver,https://github.com/kubernetes/apiserver/blob/v0.28.1/LICENSE,Ap
k8s.io/client-go,https://github.com/kubernetes/client-go/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/component-base,https://github.com/kubernetes/component-base/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/klog/v2,https://github.com/kubernetes/klog/blob/v2.100.1/LICENSE,Apache-2.0
k8s.io/kube-aggregator/pkg/apis/apiregistration,https://github.com/kubernetes/kube-aggregator/blob/v0.28.1/LICENSE,Apache-2.0
k8s.io/kube-openapi/pkg,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/LICENSE,Apache-2.0
k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/internal/third_party/go-json-experiment/json/LICENSE,BSD-3-Clause
k8s.io/kube-openapi/pkg/validation/spec,https://github.com/kubernetes/kube-openapi/blob/d090da108d2f/pkg/validation/spec/LICENSE,Apache-2.0
Expand Down
1 change: 0 additions & 1 deletion cmd/webhook/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ require (
k8s.io/apiserver v0.28.1 // indirect
k8s.io/client-go v0.28.1 // indirect
k8s.io/klog/v2 v2.100.1 // indirect
k8s.io/kube-aggregator v0.28.1 // indirect
k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f // indirect
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.4 // indirect
Expand Down
2 changes: 0 additions & 2 deletions cmd/webhook/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -287,8 +287,6 @@ k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
k8s.io/kube-aggregator v0.28.1 h1:rvG4llYnQKHjj6YjjoBPEJxfD1uH0DJwkrJTNKGAaCs=
k8s.io/kube-aggregator v0.28.1/go.mod h1:JaLizMe+AECSpO2OmrWVsvnG0V3dX1RpW+Wq/QHbu18=
k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f h1:eeEUOoGYWhOz7EyXqhlR2zHKNw2mNJ9vzJmub6YN6kk=
k8s.io/kube-openapi v0.0.0-20230905202853-d090da108d2f/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA=
k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI=
Expand Down
11 changes: 0 additions & 11 deletions internal/controller/certificates/policies/gatherer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,10 @@ import (
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
kscheme "k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/cache"
"k8s.io/klog/v2"
fakeclock "k8s.io/utils/clock/testing"

cmscheme "github.com/cert-manager/cert-manager/pkg/api"
cmapi "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
testpkg "github.com/cert-manager/cert-manager/pkg/controller/test"
logf "github.com/cert-manager/cert-manager/pkg/logs"
Expand Down Expand Up @@ -146,15 +144,6 @@ func TestDataForCertificate(t *testing.T) {
test.builder.T = t
test.builder.Clock = fakeclock.NewFakeClock(fakeClockStart)

// In this test, we do not use Register(controller.Context).
// The Register(controller.Context) usually takes care of
// triggering the init() func in ./pkg/api/scheme.go. If we
// forget to have the init() func called, the apiVersion and
// kind fields on cert-manager objects are not automatically
// filled, which breaks the lister cache (i.e., the "indexer").
_ = cmscheme.Scheme
_ = kscheme.Scheme

test.builder.Init()

// One weird behavior in client-go is that listers won't return
Expand Down
6 changes: 0 additions & 6 deletions pkg/api/scheme.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,11 @@ limitations under the License.
package api

import (
apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
kscheme "k8s.io/client-go/kubernetes/scheme"
apireg "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"

cmacmev1alpha2 "github.com/cert-manager/cert-manager/internal/apis/acme/v1alpha2"
cmacmev1alpha3 "github.com/cert-manager/cert-manager/internal/apis/acme/v1alpha3"
Expand Down Expand Up @@ -61,9 +58,6 @@ var localSchemeBuilder = runtime.SchemeBuilder{
cmacmev1.AddToScheme,
cmmeta.AddToScheme,
whapi.AddToScheme,
kscheme.AddToScheme,
apireg.AddToScheme,
apiext.AddToScheme,
}

// AddToScheme adds all types of this clientset into the given scheme. This allows composition
Expand Down
35 changes: 26 additions & 9 deletions pkg/controller/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,11 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/selection"
"k8s.io/client-go/discovery"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
kscheme "k8s.io/client-go/kubernetes/scheme"
clientv1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/metadata"
"k8s.io/client-go/metadata/metadatainformer"
Expand Down Expand Up @@ -83,6 +84,9 @@ type Context struct {
FieldManager string
// RESTConfig is the loaded Kubernetes apiserver rest client configuration
RESTConfig *rest.Config
// Scheme is the Kubernetes scheme that should be used when serialising and
// deserialising API objects
Scheme *runtime.Scheme
// Client is a Kubernetes clientset
Client kubernetes.Interface
// CMClient is a cert-manager clientset
Expand Down Expand Up @@ -322,6 +326,11 @@ func NewContextFactory(ctx context.Context, opts ContextOptions) (*ContextFactor
func (c *ContextFactory) Build(component ...string) (*Context, error) {
restConfig := util.RestConfigWithUserAgent(c.baseRestConfig, component...)

scheme := runtime.NewScheme()
kscheme.AddToScheme(scheme)
cmscheme.AddToScheme(scheme)
gwscheme.AddToScheme(scheme)

clients, err := buildClients(restConfig)
if err != nil {
return nil, err
Expand All @@ -330,17 +339,17 @@ func (c *ContextFactory) Build(component ...string) (*Context, error) {
// Create event broadcaster.
// Add cert-manager types to the default Kubernetes Scheme so Events can be
// logged properly.
cmscheme.AddToScheme(scheme.Scheme)
gwscheme.AddToScheme(scheme.Scheme)

c.log.V(logf.DebugLevel).Info("creating event broadcaster")
eventBroadcaster := record.NewBroadcaster()
eventBroadcaster.StartLogging(logf.WithInfof(c.log.V(logf.DebugLevel)).Infof)
eventBroadcaster.StartRecordingToSink(&clientv1.EventSinkImpl{Interface: clients.kubeClient.CoreV1().Events("")})
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: util.PrefixFromUserAgent(restConfig.UserAgent)})
recorder := eventBroadcaster.NewRecorder(scheme, corev1.EventSource{Component: util.PrefixFromUserAgent(restConfig.UserAgent)})

ctx := *c.ctx
ctx.FieldManager = util.PrefixFromUserAgent(restConfig.UserAgent)
ctx.RESTConfig = restConfig
ctx.Scheme = scheme
ctx.Client = clients.kubeClient
ctx.CMClient = clients.cmClient
ctx.GWClient = clients.gwClient
Expand All @@ -363,20 +372,28 @@ type contextClients struct {
// buildClients builds all required clients for the context using the given
// REST config.
func buildClients(restConfig *rest.Config) (contextClients, error) {
httpClient, err := rest.HTTPClientFor(restConfig)
if err != nil {
return contextClients{}, fmt.Errorf("error creating HTTP client: %w", err)
}

// Create a cert-manager api client
cmClient, err := clientset.NewForConfig(restConfig)
cmClient, err := clientset.NewForConfigAndClient(restConfig, httpClient)
if err != nil {
return contextClients{}, fmt.Errorf("error creating internal group client: %w", err)
return contextClients{}, fmt.Errorf("error creating cert-manager client: %w", err)
}

// Create a Kubernetes api client
kubeClient, err := kubernetes.NewForConfig(restConfig)
kubeClient, err := kubernetes.NewForConfigAndClient(restConfig, httpClient)
if err != nil {
return contextClients{}, fmt.Errorf("error creating kubernetes client: %w", err)
}

// create a metadata-only client
metadataOnlyClient := metadata.NewForConfigOrDie(restConfig)
metadataOnlyClient, err := metadata.NewForConfigAndClient(restConfig, httpClient)
if err != nil {
return contextClients{}, fmt.Errorf("error creating metadata-only client: %w", err)
}

var gatewayAvailable bool
// Check if the Gateway API feature gate was enabled
Expand All @@ -400,7 +417,7 @@ func buildClients(restConfig *rest.Config) (contextClients, error) {
}

// Create a GatewayAPI client.
gwClient, err := gwclient.NewForConfig(restConfig)
gwClient, err := gwclient.NewForConfigAndClient(restConfig, httpClient)
if err != nil {
return contextClients{}, fmt.Errorf("error creating kubernetes client: %w", err)
}
Expand Down

0 comments on commit d2f6bbe

Please sign in to comment.