From 6e6ea0189f4a94830fb47875da4df0df9dc5db74 Mon Sep 17 00:00:00 2001 From: Dario Tranchitella Date: Sat, 17 Dec 2022 15:40:03 +0100 Subject: [PATCH] refactor(k8s): upgrade to 1.26 --- api/v1alpha1/tenantcontrolplane_types.go | 22 ++++++++--- api/v1alpha1/zz_generated.deepcopy.go | 37 +++++++++++++++++-- internal/builders/controlplane/deployment.go | 9 +++-- .../konnectivity/deployment_resource.go | 3 +- 4 files changed, 58 insertions(+), 13 deletions(-) diff --git a/api/v1alpha1/tenantcontrolplane_types.go b/api/v1alpha1/tenantcontrolplane_types.go index 5b17a1f..40d1f05 100644 --- a/api/v1alpha1/tenantcontrolplane_types.go +++ b/api/v1alpha1/tenantcontrolplane_types.go @@ -76,10 +76,22 @@ type IngressSpec struct { Hostname string `json:"hostname,omitempty"` } +// ComponentResourceRequirements describes the compute resource requirements. +type ComponentResourceRequirements struct { + // Limits describes the maximum amount of compute resources allowed. + // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + Limits corev1.ResourceList `json:"limits,omitempty" protobuf:"bytes,1,rep,name=limits,casttype=ResourceList,castkey=ResourceName"` + // Requests describes the minimum amount of compute resources required. + // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + // otherwise to an implementation-defined value. + // More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + Requests corev1.ResourceList `json:"requests,omitempty" protobuf:"bytes,2,rep,name=requests,casttype=ResourceList,castkey=ResourceName"` +} + type ControlPlaneComponentsResources struct { - APIServer *corev1.ResourceRequirements `json:"apiServer,omitempty"` - ControllerManager *corev1.ResourceRequirements `json:"controllerManager,omitempty"` - Scheduler *corev1.ResourceRequirements `json:"scheduler,omitempty"` + APIServer *ComponentResourceRequirements `json:"apiServer,omitempty"` + ControllerManager *ComponentResourceRequirements `json:"controllerManager,omitempty"` + Scheduler *ComponentResourceRequirements `json:"scheduler,omitempty"` } type DeploymentSpec struct { @@ -157,8 +169,8 @@ type KonnectivityServerSpec struct { // +kubebuilder:default=registry.k8s.io/kas-network-proxy/proxy-server Image string `json:"image,omitempty"` // Resources define the amount of CPU and memory to allocate to the Konnectivity server. - Resources *corev1.ResourceRequirements `json:"resources,omitempty"` - ExtraArgs ExtraArgs `json:"extraArgs,omitempty"` + Resources *ComponentResourceRequirements `json:"resources,omitempty"` + ExtraArgs ExtraArgs `json:"extraArgs,omitempty"` } type KonnectivityAgentSpec struct { diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index f954383..8622990 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -254,6 +254,35 @@ func (in *ClientCertificate) DeepCopy() *ClientCertificate { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComponentResourceRequirements) DeepCopyInto(out *ComponentResourceRequirements) { + *out = *in + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = make(v1.ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = make(v1.ResourceList, len(*in)) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentResourceRequirements. +func (in *ComponentResourceRequirements) DeepCopy() *ComponentResourceRequirements { + if in == nil { + return nil + } + out := new(ComponentResourceRequirements) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ContentRef) DeepCopyInto(out *ContentRef) { *out = *in @@ -306,17 +335,17 @@ func (in *ControlPlaneComponentsResources) DeepCopyInto(out *ControlPlaneCompone *out = *in if in.APIServer != nil { in, out := &in.APIServer, &out.APIServer - *out = new(v1.ResourceRequirements) + *out = new(ComponentResourceRequirements) (*in).DeepCopyInto(*out) } if in.ControllerManager != nil { in, out := &in.ControllerManager, &out.ControllerManager - *out = new(v1.ResourceRequirements) + *out = new(ComponentResourceRequirements) (*in).DeepCopyInto(*out) } if in.Scheduler != nil { in, out := &in.Scheduler, &out.Scheduler - *out = new(v1.ResourceRequirements) + *out = new(ComponentResourceRequirements) (*in).DeepCopyInto(*out) } } @@ -728,7 +757,7 @@ func (in *KonnectivityServerSpec) DeepCopyInto(out *KonnectivityServerSpec) { *out = *in if in.Resources != nil { in, out := &in.Resources, &out.Resources - *out = new(v1.ResourceRequirements) + *out = new(ComponentResourceRequirements) (*in).DeepCopyInto(*out) } if in.ExtraArgs != nil { diff --git a/internal/builders/controlplane/deployment.go b/internal/builders/controlplane/deployment.go index f867302..d696997 100644 --- a/internal/builders/controlplane/deployment.go +++ b/internal/builders/controlplane/deployment.go @@ -312,7 +312,8 @@ func (d *Deployment) BuildScheduler(podSpec *corev1.PodSpec, tenantControlPlane if componentsResources := tenantControlPlane.Spec.ControlPlane.Deployment.Resources; componentsResources != nil { if resource := componentsResources.Scheduler; resource != nil { - podSpec.Containers[schedulerIndex].Resources = *resource + podSpec.Containers[schedulerIndex].Resources.Limits = resource.Limits + podSpec.Containers[schedulerIndex].Resources.Requests = resource.Requests } } } @@ -422,7 +423,8 @@ func (d *Deployment) buildControllerManager(podSpec *corev1.PodSpec, tenantContr if componentsResources := tenantControlPlane.Spec.ControlPlane.Deployment.Resources; componentsResources != nil { if resource := componentsResources.ControllerManager; resource != nil { - podSpec.Containers[controllerManagerIndex].Resources = *resource + podSpec.Containers[controllerManagerIndex].Resources.Limits = resource.Limits + podSpec.Containers[controllerManagerIndex].Resources.Requests = resource.Requests } } } @@ -517,7 +519,8 @@ func (d *Deployment) buildKubeAPIServer(podSpec *corev1.PodSpec, tenantControlPl if componentsResources := tenantControlPlane.Spec.ControlPlane.Deployment.Resources; componentsResources != nil { if resource := componentsResources.APIServer; resource != nil { - podSpec.Containers[apiServerIndex].Resources = *resource + podSpec.Containers[apiServerIndex].Resources.Limits = resource.Limits + podSpec.Containers[apiServerIndex].Resources.Requests = resource.Requests } } } diff --git a/internal/resources/konnectivity/deployment_resource.go b/internal/resources/konnectivity/deployment_resource.go index 4a4964d..6a9d236 100644 --- a/internal/resources/konnectivity/deployment_resource.go +++ b/internal/resources/konnectivity/deployment_resource.go @@ -205,7 +205,8 @@ func (r *KubernetesDeploymentResource) syncContainer(tenantControlPlane *kamajiv } if resources := tenantControlPlane.Spec.Addons.Konnectivity.KonnectivityServerSpec.Resources; resources != nil { - r.resource.Spec.Template.Spec.Containers[index].Resources = *resources + r.resource.Spec.Template.Spec.Containers[index].Resources.Limits = resources.Limits + r.resource.Spec.Template.Spec.Containers[index].Resources.Requests = resources.Requests } }