зеркало из https://github.com/Azure/ARO-RP.git
Removes dynamichelper from systemreserved
This commit is contained in:
Родитель
782894071c
Коммит
abfef9a5c4
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче