Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Fix error of missing client in Actuator after (nil pointer exception) #269

Merged
merged 4 commits into from
Jul 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,22 @@ EXTENSION_CONFIGMAP_NAMESPACE := ""
COMMIT:=`git rev-parse HEAD`
DIRTY:=`git diff --quiet || echo '-dirty'`
VERSION:=`git tag | sort -V | tail -1`
build:

_go_generate:
rm -rf ./pkg/consts/charts
go generate ./...

_build:
echo "Building ${VERSION}-${COMMIT}${DIRTY}"
CGO_ENABLED=0 go build -ldflags="-X github.com/intel/gardener-extension-cri-resmgr/pkg/consts.Commit=${COMMIT}${DIRTY} -X github.com/intel/gardener-extension-cri-resmgr/pkg/consts.Version=${VERSION}" -v ./cmd/gardener-extension-cri-resmgr

_build_tests:
go test -c -v ./test/e2e/cri-resmgr-extension/. -o gardener-extension-cri-resmgr.e2e-tests
go test -c -v ./pkg/controller/lifecycle -o ./gardener-extension-cri-resmgr.actuator.test
go test -c -v ./pkg/configs -o ./gardener-extension-cri-resmgr.configs.test

build: _go_generate _build _build_tests

test:
go generate ./...
# Those tests (renders charts, uses env to read files) change CWD during execution (required because rely on charts and fixtures).
Expand Down
6 changes: 4 additions & 2 deletions cmd/gardener-extension-cri-resmgr/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,10 @@ func NewExtensionControllerCommand(ctx context.Context) *cobra.Command {
if err := options.OptionAggregator.Complete(); err != nil {
return fmt.Errorf("error completing options: %s", err)
}

mgr, err := manager.New(options.RestOptions.Completed().Config, options.MgrOpts.Completed().Options())
mgroptions := options.MgrOpts.Completed().Options()
// For debugging purposes, do not recover from panics from Reconciller
//mgroptions.Controller = controllerconfig.Controller{RecoverPanic: ptr.To(false)}
mgr, err := manager.New(options.RestOptions.Completed().Config, mgroptions)
if err != nil {
return fmt.Errorf("could not instantiate controller-manager: %s", err)
}
Expand Down
2 changes: 1 addition & 1 deletion examples/ctrldeploy-ctrlreg.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ metadata:
name: cri-resmgr-extension
type: helm
providerConfig:
chart: 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
chart: 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

values:
### For development purposes - set it to 0 (if you want to register extension but use local process with "make start").
Expand Down
23 changes: 12 additions & 11 deletions examples/shoot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ metadata:
name: local
namespace: garden-local
annotations:
shoot.gardener.cloud/infrastructure-cleanup-wait-period-seconds: "0"
shoot.gardener.cloud/cloud-config-execution-max-delay-seconds: "0"
authentication.gardener.cloud/issuer: "managed"
spec:
seedName: local
cloudProfileName: local
secretBindingName: local
secretBindingName: local # dummy, doesn't contain any credentials
region: local
## In this shoot, local extension is disabled by default and uses configuration from ControllerDeployment.
## To enable mark it as disable=false or use globallyEnabled: true
Expand All @@ -31,12 +31,7 @@ spec:
disabled: true
networking:
type: calico
providerConfig:
apiVersion: calico.networking.extensions.gardener.cloud/v1alpha1
kind: NetworkConfig
backend: none
typha:
enabled: false
nodes: 10.10.0.0/16
provider:
type: local
workers:
Expand All @@ -46,8 +41,14 @@ spec:
cri:
name: containerd
minimum: 1
maximum: 1 # currently, only single-node clusters are supported
maximum: 2
maxSurge: 1
maxUnavailable: 0
kubernetes:
version: 1.27.1 # please keep that in sync with test/e2e/cri-resmgr-extension/common_test.go "kubernetesVersion" 1
kubelet:
seccompDefault: true
serializeImagePulls: false
registryPullQPS: 10
registryBurst: 20
protectKernelDefaults: true
streamingConnectionIdleTimeout: 5m
39 changes: 20 additions & 19 deletions examples/shoot2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ metadata:
name: local2
namespace: garden-local
annotations:
shoot.gardener.cloud/infrastructure-cleanup-wait-period-seconds: "0"
shoot.gardener.cloud/cloud-config-execution-max-delay-seconds: "0"
authentication.gardener.cloud/issuer: "managed"
spec:
seedName: local
cloudProfileName: local
secretBindingName: local
secretBindingName: local # dummy, doesn't contain any credentials
region: local
### In shoot local2 extension is required and not disabled with own config to test override.
extensions:
Expand Down Expand Up @@ -76,23 +76,24 @@ spec:

networking:
type: calico
providerConfig:
apiVersion: calico.networking.extensions.gardener.cloud/v1alpha1
kind: NetworkConfig
backend: none
typha:
enabled: false
nodes: 10.10.0.0/16
provider:
type: local
workers:
- name: local
machine:
type: local
cri:
name: containerd
minimum: 1
maximum: 1
maxSurge: 1
maxUnavailable: 0
- name: local
machine:
type: local
cri:
name: containerd
minimum: 1
maximum: 2
maxSurge: 1
maxUnavailable: 0
kubernetes:
version: 1.27.1 # please keep that in sync with test/e2e/cri-resmgr-extension/common_test.go "kubernetesVersion" 1
kubelet:
seccompDefault: true
serializeImagePulls: false
registryPullQPS: 10
registryBurst: 20
protectKernelDefaults: true
streamingConnectionIdleTimeout: 5m
38 changes: 12 additions & 26 deletions pkg/controller/lifecycle/actuator.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ import (
"github.com/intel/gardener-extension-cri-resmgr/pkg/imagevector"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/client-go/rest"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/log"
)
Expand Down Expand Up @@ -81,28 +79,30 @@ func GetProviderConfig(logger logr.Logger, extensions []v1beta1.Extension) (bool
// ---------------------------------------------------------------------------------------

// NewActuator return new Actuator.
func NewActuator(name string) extension.Actuator {
func NewActuator(c client.Client, name string) extension.Actuator {
return &Actuator{
client: c,
ChartRendererFactory: extensionscontroller.ChartRendererFactoryFunc(util.NewChartRendererForShoot),
logger: log.Log.WithName(name),
}
}

// NewActuatorWithSuffix return new Actuator with suffix.
func NewActuatorWithSuffix(nameSuffix string) extension.Actuator {
func NewActuatorWithSuffix(c client.Client, nameSuffix string) extension.Actuator {
return &Actuator{
client: c,
ChartRendererFactory: extensionscontroller.ChartRendererFactoryFunc(util.NewChartRendererForShoot),
logger: log.Log.WithName(consts.ActuatorName + nameSuffix),
}
}

// Actuator type.
type Actuator struct {
client client.Client
config *rest.Config
client client.Client
//config *rest.Config
ChartRendererFactory extensionscontroller.ChartRendererFactory
decoder runtime.Decoder
logger logr.Logger
//decoder runtime.Decoder
logger logr.Logger
}

// GenerateSecretData return byte map which is k8s secret with data.
Expand Down Expand Up @@ -169,6 +169,10 @@ func (a *Actuator) GenerateSecretDataToMonitoringManagedResource(namespace strin
func (a *Actuator) Reconcile(ctx context.Context, logger logr.Logger, ex *extensionsv1alpha1.Extension) error {
namespace := ex.GetNamespace()

if a.client == nil {
panic("a.client is nil!")
}

// Find what shoot cluster we dealing with.
// to find k8s version for chart renderer
// and get providerConfig for configurations for CRI-resource-manager configmaps
Expand Down Expand Up @@ -264,21 +268,3 @@ func (a *Actuator) Restore(ctx context.Context, logger logr.Logger, ex *extensio
func (a *Actuator) Migrate(ctx context.Context, logger logr.Logger, ex *extensionsv1alpha1.Extension) error {
return a.Delete(ctx, logger, ex)
}

// InjectConfig the Extension resource.
func (a *Actuator) InjectConfig(config *rest.Config) error {
a.config = config
return nil
}

// InjectClient the Extension resource.
func (a *Actuator) InjectClient(client client.Client) error {
a.client = client
return nil
}

// InjectScheme the Extension resource.
func (a *Actuator) InjectScheme(scheme *runtime.Scheme) error {
a.decoder = serializer.NewCodecFactory(scheme, serializer.EnableStrict).UniversalDecoder()
return nil
}
4 changes: 2 additions & 2 deletions pkg/controller/lifecycle/actuator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ var _ = Describe("cri-resource-manager extension actuator tests", func() {
// TODO: consider using mock instead of real rendered - not enough logic inside golang code yet!
// unused but useful for future
// "github.com/golang/mock/gomock"
a := actuator.NewActuator("mock").(*actuator.Actuator)
a := actuator.NewActuator(nil, "mock").(*actuator.Actuator)

It("generate properly with expected bodies inside", func() {
secret, err := a.GenerateSecretData(log, consts.Charts, consts.ChartPath, "foo_namespace", "v1.0.0", configTypes, nodeSelector)
Expand All @@ -129,7 +129,7 @@ var _ = Describe("cri-resource-manager extension actuator tests", func() {

Describe("rendering monitoring chart with GenerateSecretDataToMonitoringManagedResource", func() {
It("generate correct config with replaced namespace", func() {
a := actuator.NewActuator("mock").(*actuator.Actuator)
a := actuator.NewActuator(nil, "mock").(*actuator.Actuator)

output := a.GenerateSecretDataToMonitoringManagedResource("test")

Expand Down
6 changes: 3 additions & 3 deletions pkg/controller/lifecycle/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func ConfigMapToAllExtensionMapper(ctx context.Context, log logr.Logger, reader
func AddToManager(ctx context.Context, mgr manager.Manager, options *options.Options, ignoreOperationAnnotation bool) error {

return extension.Add(ctx, mgr, extension.AddArgs{
Actuator: NewActuator(consts.ActuatorName),
Actuator: NewActuator(mgr.GetClient(), consts.ActuatorName),
ControllerOptions: options.ControllerOptions.Completed().Options(),
Name: consts.ControllerName,
FinalizerSuffix: consts.ExtensionType,
Expand All @@ -107,12 +107,12 @@ func AddConfigMapWatchingControllerToManager(ctx context.Context, mgr manager.Ma
// Create another instance of options - this time for "configMap2Extensions reconciler"
controllerOptions := options.ControllerOptions.Completed().Options()
configReconcilerArgs := extension.AddArgs{
Actuator: NewActuator(consts.ActuatorName + consts.ConfigsSuffix),
Actuator: NewActuator(mgr.GetClient(), consts.ActuatorName+consts.ConfigsSuffix),
Resync: 60 * time.Minute,
FinalizerSuffix: consts.ExtensionType, // We're using the same finalizer as the original controller on purpose to "delete" only once without a need to wait for another "configs" controller
}
controllerOptions.Reconciler = extension.NewReconciler(mgr, configReconcilerArgs)
recoverPanic := true
recoverPanic := true // TODO: make it configurable for debugging purposes !!?!?
controllerOptions.RecoverPanic = &recoverPanic

controllerName := consts.ControllerName + consts.ConfigsSuffix
Expand Down
Loading