Skip to content

Commit bb41d6f

Browse files
committed
Add nodeAffinity spec to deployment
1 parent d2be116 commit bb41d6f

File tree

2 files changed

+56
-6
lines changed

2 files changed

+56
-6
lines changed

pkg/controller/velero/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
4949
return err
5050
}
5151

52-
// Watch for changes to primary resource Velero
52+
// Watch for changes to primary resource, Velero
5353
err = c.Watch(&source.Kind{Type: &veleroCR.Velero{}}, &handler.EnqueueRequestForObject{})
5454
if err != nil {
5555
return err

pkg/controller/velero/velero.go

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
2121
"k8s.io/apimachinery/pkg/api/errors"
2222
"k8s.io/apimachinery/pkg/types"
23+
"k8s.io/apimachinery/pkg/util/intstr"
2324
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
2425
"sigs.k8s.io/controller-runtime/pkg/reconcile"
2526
)
@@ -28,6 +29,7 @@ const (
2829
awsCredsSecretIDKey = "aws_access_key_id" // #nosec G101
2930
awsCredsSecretAccessKey = "aws_secret_access_key" // #nosec G101
3031
credentialsRequestName = "velero-iam-credentials"
32+
veleroImage = "gcr.io/heptio-images/velero:v1.0.0"
3133
)
3234

3335
func (r *ReconcileVelero) provisionVelero(reqLogger logr.Logger, namespace string, platformStatus *configv1.PlatformStatus, instance *veleroCR.Velero) (reconcile.Result, error) {
@@ -139,11 +141,7 @@ func (r *ReconcileVelero) provisionVelero(reqLogger logr.Logger, namespace strin
139141

140142
// Install Deployment
141143
foundDeployment := &appsv1beta1.Deployment{}
142-
deployment := veleroInstall.Deployment(namespace, veleroInstall.WithoutCredentialsVolume(),
143-
veleroInstall.WithEnvFromSecretKey(strings.ToUpper(awsCredsSecretIDKey), credentialsRequestName, awsCredsSecretIDKey),
144-
veleroInstall.WithEnvFromSecretKey(strings.ToUpper(awsCredsSecretAccessKey), credentialsRequestName, awsCredsSecretAccessKey),
145-
veleroInstall.WithImage("gcr.io/heptio-images/velero:v1.0.0"),
146-
)
144+
deployment := veleroDeployment(namespace)
147145
if err = r.client.Get(context.TODO(), types.NamespacedName{Namespace: namespace, Name: "velero"}, foundDeployment); err != nil {
148146
if errors.IsNotFound(err) {
149147
// Didn't find Deployment
@@ -231,3 +229,55 @@ func credentialsRequest(namespace, name, bucketName string) *minterv1.Credential
231229
},
232230
}
233231
}
232+
233+
func veleroDeployment(namespace string) *appsv1beta1.Deployment {
234+
deployment := veleroInstall.Deployment(namespace, veleroInstall.WithoutCredentialsVolume(),
235+
veleroInstall.WithEnvFromSecretKey(strings.ToUpper(awsCredsSecretIDKey), credentialsRequestName, awsCredsSecretIDKey),
236+
veleroInstall.WithEnvFromSecretKey(strings.ToUpper(awsCredsSecretAccessKey), credentialsRequestName, awsCredsSecretAccessKey),
237+
veleroInstall.WithImage(veleroImage),
238+
)
239+
240+
replicas := int32(1)
241+
terminationGracePeriodSeconds := int64(30)
242+
revisionHistoryLimit := int32(2)
243+
progressDeadlineSeconds := int32(600)
244+
maxUnavailable := intstr.FromString("25%")
245+
maxSurge := intstr.FromString("25%")
246+
deployment.Spec.Replicas = &replicas
247+
deployment.Spec.RevisionHistoryLimit = &revisionHistoryLimit
248+
deployment.Spec.ProgressDeadlineSeconds = &progressDeadlineSeconds
249+
deployment.Spec.Template.Spec.Containers[0].Ports[0].Protocol = "TCP"
250+
deployment.Spec.Template.Spec.Containers[0].TerminationMessagePath = "/dev/termination-log"
251+
deployment.Spec.Template.Spec.Containers[0].TerminationMessagePolicy = "File"
252+
deployment.Spec.Template.Spec.DeprecatedServiceAccount = "velero"
253+
deployment.Spec.Template.Spec.DNSPolicy = "ClusterFirst"
254+
deployment.Spec.Template.Spec.SchedulerName = "default-scheduler"
255+
deployment.Spec.Template.Spec.SecurityContext = &corev1.PodSecurityContext{}
256+
deployment.Spec.Template.Spec.TerminationGracePeriodSeconds = &terminationGracePeriodSeconds
257+
deployment.Spec.Strategy = appsv1beta1.DeploymentStrategy{
258+
Type: appsv1beta1.RollingUpdateDeploymentStrategyType,
259+
RollingUpdate: &appsv1beta1.RollingUpdateDeployment{
260+
MaxUnavailable: &maxUnavailable,
261+
MaxSurge: &maxSurge,
262+
},
263+
}
264+
deployment.Spec.Template.Spec.Affinity = &corev1.Affinity{
265+
NodeAffinity: &corev1.NodeAffinity{
266+
RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
267+
NodeSelectorTerms: []corev1.NodeSelectorTerm{
268+
{
269+
MatchExpressions: []corev1.NodeSelectorRequirement{
270+
{
271+
Key: "beta.kubernetes.io/arch",
272+
Operator: corev1.NodeSelectorOpIn,
273+
Values: []string{"amd64"},
274+
},
275+
},
276+
},
277+
},
278+
},
279+
},
280+
}
281+
282+
return deployment
283+
}

0 commit comments

Comments
 (0)