Removes dynamichelper from systemreserved

This commit is contained in:
Mikalai Radchuk 2023-02-14 15:04:34 +00:00 коммит произвёл Mikalai Radchuk
Родитель 782894071c
Коммит abfef9a5c4
3 изменённых файлов: 56 добавлений и 54 удалений

Просмотреть файл

@ -107,7 +107,7 @@ func operator(ctx context.Context, log *logrus.Entry) error {
}
if err = (workaround.NewReconciler(
log.WithField("controller", workaround.ControllerName),
client, dh)).SetupWithManager(mgr); err != nil {
client)).SetupWithManager(mgr); err != nil {
return fmt.Errorf("unable to create controller %s: %v", workaround.ControllerName, err)
}
if err = (routefix.NewReconciler(

Просмотреть файл

@ -14,10 +14,10 @@ import (
"k8s.io/apimachinery/pkg/types"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1"
"github.com/Azure/ARO-RP/pkg/operator/controllers/autosizednodes"
"github.com/Azure/ARO-RP/pkg/util/dynamichelper"
"github.com/Azure/ARO-RP/pkg/util/version"
)
@ -25,21 +25,19 @@ type systemreserved struct {
log *logrus.Entry
client client.Client
dh dynamichelper.Interface
versionFixed *version.Version
}
var _ Workaround = &systemreserved{}
func NewSystemReserved(log *logrus.Entry, client client.Client, dh dynamichelper.Interface) *systemreserved {
func NewSystemReserved(log *logrus.Entry, client client.Client) *systemreserved {
verFixed, err := version.ParseVersion("4.99.0") // TODO set this correctly when known.
utilruntime.Must(err)
return &systemreserved{
log: log,
client: client,
dh: dh,
versionFixed: verFixed,
}
}
@ -55,38 +53,6 @@ func (sr *systemreserved) IsRequired(clusterVersion *version.Version, cluster *a
return clusterVersion.Lt(sr.versionFixed)
}
func (sr *systemreserved) kubeletConfig() (*mcv1.KubeletConfig, error) {
b, err := json.Marshal(map[string]interface{}{
"systemReserved": map[string]interface{}{
"memory": memReserved,
},
"evictionHard": map[string]interface{}{
"memory.available": hardEviction,
"nodefs.available": nodeFsAvailable,
"nodefs.inodesFree": nodeFsInodes,
"imagefs.available": imageFs,
},
})
if err != nil {
return nil, err
}
return &mcv1.KubeletConfig{
ObjectMeta: metav1.ObjectMeta{
Name: kubeletConfigName,
Labels: map[string]string{labelName: labelValue},
},
Spec: mcv1.KubeletConfigSpec{
MachineConfigPoolSelector: &metav1.LabelSelector{
MatchLabels: map[string]string{labelName: labelValue},
},
KubeletConfig: &kruntime.RawExtension{
Raw: b,
},
},
}, nil
}
func (sr *systemreserved) Ensure(ctx context.Context) error {
sr.log.Debug("ensure systemreserved")
@ -111,12 +77,45 @@ func (sr *systemreserved) Ensure(ctx context.Context) error {
}
// Step 2. Create KubeletConfig CRD with appropriate limits.
kc, err := sr.kubeletConfig()
kc := &mcv1.KubeletConfig{
ObjectMeta: metav1.ObjectMeta{
Name: kubeletConfigName,
},
}
_, err = controllerutil.CreateOrUpdate(ctx, sr.client, kc, func() error {
if kc.Labels == nil {
kc.Labels = make(map[string]string)
}
kc.Labels[labelName] = labelValue
b, err := json.Marshal(map[string]interface{}{
"systemReserved": map[string]interface{}{
"memory": memReserved,
},
"evictionHard": map[string]interface{}{
"memory.available": hardEviction,
"nodefs.available": nodeFsAvailable,
"nodefs.inodesFree": nodeFsInodes,
"imagefs.available": imageFs,
},
})
if err != nil {
return err
}
return sr.dh.Ensure(ctx, kc)
kc.Spec = mcv1.KubeletConfigSpec{
MachineConfigPoolSelector: &metav1.LabelSelector{
MatchLabels: map[string]string{labelName: labelValue},
},
KubeletConfig: &kruntime.RawExtension{
Raw: b,
},
}
return nil
})
return err
}
func (sr *systemreserved) Remove(ctx context.Context) error {
@ -126,15 +125,20 @@ func (sr *systemreserved) Remove(ctx context.Context) error {
if err != nil {
return err
}
if _, ok := mcp.Labels[labelName]; !ok {
// don't update if we don't need to.
return nil
}
if _, ok := mcp.Labels[labelName]; ok {
delete(mcp.Labels, labelName)
err = sr.client.Update(ctx, mcp)
if err != nil {
return err
}
return sr.dh.EnsureDeleted(ctx, "KubeletConfig.machineconfiguration.openshift.io", "", kubeletConfigName)
}
kc := &mcv1.KubeletConfig{
ObjectMeta: metav1.ObjectMeta{
Name: kubeletConfigName,
},
}
return client.IgnoreNotFound(sr.client.Delete(ctx, kc))
}

Просмотреть файл

@ -15,7 +15,6 @@ import (
"sigs.k8s.io/controller-runtime/pkg/reconcile"
arov1alpha1 "github.com/Azure/ARO-RP/pkg/operator/apis/aro.openshift.io/v1alpha1"
"github.com/Azure/ARO-RP/pkg/util/dynamichelper"
"github.com/Azure/ARO-RP/pkg/util/version"
)
@ -35,11 +34,10 @@ type Reconciler struct {
client client.Client
}
// TODO: use client.Client instead of dynamichelper here.
func NewReconciler(log *logrus.Entry, client client.Client, dh dynamichelper.Interface) *Reconciler {
func NewReconciler(log *logrus.Entry, client client.Client) *Reconciler {
return &Reconciler{
log: log,
workarounds: []Workaround{NewSystemReserved(log, client, dh), NewIfReload(log, client)},
workarounds: []Workaround{NewSystemReserved(log, client), NewIfReload(log, client)},
client: client,
}
}