Skip to content

Commit ec01193

Browse files
committed
fix(images): make importers work in tainted cluster
- Add toleration to run importers on nodes belong to NodeGroup/system. Signed-off-by: Ivan Mikheykin <ivan.mikheykin@flant.com>
1 parent 38af70a commit ec01193

File tree

23 files changed

+90
-30
lines changed

23 files changed

+90
-30
lines changed

images/virtualization-artifact/pkg/common/provisioner/node_placement.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,25 @@ func KeepNodePlacementTolerations(nodePlacement *NodePlacement, obj client.Objec
8585

8686
return nil
8787
}
88+
89+
var systemNodeToleration = corev1.Toleration{
90+
Key: "dedicated.deckhouse.io",
91+
Operator: corev1.TolerationOpEqual,
92+
Value: "system",
93+
}
94+
95+
func AddTolerationForSystemNodes(placement *NodePlacement) {
96+
if placement == nil {
97+
return
98+
}
99+
hasSystem := false
100+
for _, toleration := range placement.Tolerations {
101+
if toleration.Key == systemNodeToleration.Key && toleration.Value == systemNodeToleration.Value {
102+
hasSystem = true
103+
break
104+
}
105+
}
106+
if !hasSystem {
107+
placement.Tolerations = append(placement.Tolerations, systemNodeToleration)
108+
}
109+
}

images/virtualization-artifact/pkg/controller/cvi/internal/source/http.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func (ds HTTPDataSource) Sync(ctx context.Context, cvi *v1alpha2.ClusterVirtualI
121121
cvi.Status.Progress = ds.statService.GetProgress(cvi.GetUID(), pod, cvi.Status.Progress)
122122

123123
envSettings := ds.getEnvSettings(cvi, supgen)
124-
err = ds.importerService.Start(ctx, envSettings, cvi, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource))
124+
err = ds.importerService.Start(ctx, envSettings, cvi, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), service.WithSystemNodeToleration())
125125
switch {
126126
case err == nil:
127127
// OK.

images/virtualization-artifact/pkg/controller/cvi/internal/source/interfaces.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import (
3737

3838
type Importer interface {
3939
Start(ctx context.Context, settings *importer.Settings, obj client.Object, sup supplements.Generator, caBundle *datasource.CABundle, opts ...service.Option) error
40-
StartWithPodSetting(ctx context.Context, settings *importer.Settings, sup supplements.Generator, caBundle *datasource.CABundle, podSettings *importer.PodSettings) error
40+
StartWithPodSetting(ctx context.Context, settings *importer.Settings, sup supplements.Generator, caBundle *datasource.CABundle, podSettings *importer.PodSettings, opts ...service.Option) error
4141
CleanUp(ctx context.Context, sup supplements.Generator) (bool, error)
4242
CleanUpSupplements(ctx context.Context, sup supplements.Generator) (bool, error)
4343
GetPod(ctx context.Context, sup supplements.Generator) (*corev1.Pod, error)

images/virtualization-artifact/pkg/controller/cvi/internal/source/mock.go

Lines changed: 10 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

images/virtualization-artifact/pkg/controller/cvi/internal/source/object_ref.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ func (ds ObjectRefDataSource) Sync(ctx context.Context, cvi *v1alpha2.ClusterVir
189189
return reconcile.Result{}, err
190190
}
191191

192-
err = ds.importerService.Start(ctx, envSettings, cvi, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource))
192+
err = ds.importerService.Start(ctx, envSettings, cvi, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), service.WithSystemNodeToleration())
193193
switch {
194194
case err == nil:
195195
// OK.

images/virtualization-artifact/pkg/controller/cvi/internal/source/object_ref_vd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func (ds ObjectRefVirtualDisk) Sync(ctx context.Context, cvi *v1alpha2.ClusterVi
115115

116116
ownerRef := metav1.NewControllerRef(cvi, cvi.GroupVersionKind())
117117
podSettings := ds.importerService.GetPodSettingsWithPVC(ownerRef, supgen, vdRef.Status.Target.PersistentVolumeClaim, vdRef.Namespace)
118-
err = ds.importerService.StartWithPodSetting(ctx, envSettings, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), podSettings)
118+
err = ds.importerService.StartWithPodSetting(ctx, envSettings, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), podSettings, service.WithSystemNodeToleration())
119119
switch {
120120
case err == nil:
121121
// OK.

images/virtualization-artifact/pkg/controller/cvi/internal/source/object_ref_vdsnapshot.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ func (ds ObjectRefVirtualDiskSnapshot) Sync(ctx context.Context, cvi *v1alpha2.C
211211

212212
ownerRef := metav1.NewControllerRef(cvi, cvi.GroupVersionKind())
213213
podSettings := ds.importerService.GetPodSettingsWithPVC(ownerRef, supgen, pvc.Name, pvc.Namespace)
214-
err = ds.importerService.StartWithPodSetting(ctx, envSettings, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), podSettings)
214+
err = ds.importerService.StartWithPodSetting(ctx, envSettings, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), podSettings, service.WithSystemNodeToleration())
215215
switch {
216216
case err == nil:
217217
// OK.

images/virtualization-artifact/pkg/controller/cvi/internal/source/object_ref_vi_on_pvc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func (ds ObjectRefVirtualImageOnPvc) Sync(ctx context.Context, cvi *v1alpha2.Clu
109109

110110
ownerRef := metav1.NewControllerRef(cvi, cvi.GroupVersionKind())
111111
podSettings := ds.importerService.GetPodSettingsWithPVC(ownerRef, supgen, viRef.Status.Target.PersistentVolumeClaim, viRef.Namespace)
112-
err = ds.importerService.StartWithPodSetting(ctx, envSettings, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), podSettings)
112+
err = ds.importerService.StartWithPodSetting(ctx, envSettings, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), podSettings, service.WithSystemNodeToleration())
113113
switch {
114114
case err == nil:
115115
// OK.

images/virtualization-artifact/pkg/controller/cvi/internal/source/registry.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func (ds RegistryDataSource) Sync(ctx context.Context, cvi *v1alpha2.ClusterVirt
126126
cvi.Status.Progress = "0%"
127127

128128
envSettings := ds.getEnvSettings(cvi, supgen)
129-
err = ds.importerService.Start(ctx, envSettings, cvi, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource))
129+
err = ds.importerService.Start(ctx, envSettings, cvi, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), service.WithSystemNodeToleration())
130130
switch {
131131
case err == nil:
132132
// OK.

images/virtualization-artifact/pkg/controller/cvi/internal/source/upload.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func (ds UploadDataSource) Sync(ctx context.Context, cvi *v1alpha2.ClusterVirtua
121121
log.Info("Cleaning up...")
122122
case pod == nil || svc == nil || ing == nil:
123123
envSettings := ds.getEnvSettings(cvi, supgen)
124-
err = ds.uploaderService.Start(ctx, envSettings, cvi, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource))
124+
err = ds.uploaderService.Start(ctx, envSettings, cvi, supgen, datasource.NewCABundleForCVMI(cvi.Spec.DataSource), service.WithSystemNodeToleration())
125125
switch {
126126
case err == nil:
127127
// OK.

0 commit comments

Comments
 (0)