Skip to content

Commit 5814b13

Browse files
author
Vadim Rutkovsky
committed
[OKD only] pkg/asset: disable mitigations for FCOS installs
1 parent ee51985 commit 5814b13

4 files changed

Lines changed: 44 additions & 0 deletions

File tree

pkg/asset/ignition/ignition_v2.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,12 @@ func ForHyperthreadingDisabled(role string) *mcfgv1.MachineConfig {
191191
}
192192
}
193193

194+
// ForMitigationsDisabled creates the MachineConfig to disable mitigatations.
195+
// RHCOS doesn't need mitigations disabled, so this function is noop
196+
func ForMitigationsDisabled(role string) *mcfgv1.MachineConfig {
197+
return &mcfgv1.MachineConfig{}
198+
}
199+
194200
// InjectInstallInfo adds information about the installer and its invoker as a
195201
// ConfigMap to the provided bootstrap Ignition config.
196202
func InjectInstallInfo(bootstrap []byte) (string, error) {

pkg/asset/ignition/ignition_v3.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,37 @@ func ForHyperthreadingDisabled(role string) *mcfgv1.MachineConfig {
192192
}
193193
}
194194

195+
// ForMitigationsDisabled creates the MachineConfig to disable mitigatations.
196+
// FCOS uses `/etc/pivot/kernel-args` to override the kernel arguments for hosts during pivot.
197+
func ForMitigationsDisabled(role string) *mcfgv1.MachineConfig {
198+
return &mcfgv1.MachineConfig{
199+
TypeMeta: metav1.TypeMeta{
200+
APIVersion: "machineconfiguration.openshift.io/v1",
201+
Kind: "MachineConfig",
202+
},
203+
ObjectMeta: metav1.ObjectMeta{
204+
Name: fmt.Sprintf("99-%s-disable-mitigations", role),
205+
Labels: map[string]string{
206+
"machineconfiguration.openshift.io/role": role,
207+
},
208+
},
209+
Spec: mcfgv1.MachineConfigSpec{
210+
Config: runtime.RawExtension{
211+
Raw: MarshalOrDie(&igntypes3.Config{
212+
Ignition: igntypes3.Ignition{
213+
Version: igntypes3.MaxVersion.String(),
214+
},
215+
Storage: igntypes3.Storage{
216+
Files: []igntypes3.File{
217+
FileFromString("/etc/pivot/kernel-args", "root", 0600, "DELETE mitigations=auto,nosmt"),
218+
},
219+
},
220+
}),
221+
},
222+
},
223+
}
224+
}
225+
195226
// InjectInstallInfo adds information about the installer and its invoker as a
196227
// ConfigMap to the provided bootstrap Ignition config.
197228
func InjectInstallInfo(bootstrap []byte) (string, error) {

pkg/asset/machines/master.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,10 @@ func (m *Master) Generate(dependencies asset.Parents) error {
372372
machineConfigs = append(machineConfigs, ignition.ForFIPSEnabled("master"))
373373
}
374374

375+
if ic.IsOKD() {
376+
machineConfigs = append(machineConfigs, ignition.ForMitigationsDisabled("master"))
377+
}
378+
375379
m.MachineConfigFiles, err = machineconfig.Manifests(machineConfigs, "master", directory)
376380
if err != nil {
377381
return errors.Wrap(err, "failed to create MachineConfig manifests for master machines")

pkg/asset/machines/worker.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,9 @@ func (w *Worker) Generate(dependencies asset.Parents) error {
198198
if ic.FIPS {
199199
machineConfigs = append(machineConfigs, ignition.ForFIPSEnabled("worker"))
200200
}
201+
if ic.IsOKD() {
202+
machineConfigs = append(machineConfigs, ignition.ForMitigationsDisabled("worker"))
203+
}
201204
switch ic.Platform.Name() {
202205
case awstypes.Name:
203206
subnets := map[string]string{}

0 commit comments

Comments
 (0)