@@ -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
3335func (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