diff --git a/pkg/apis/upgrade.cattle.io/v1/types.go b/pkg/apis/upgrade.cattle.io/v1/types.go
index cc170eafda7dd79bb914ae96542ea45d015e4576..63fc5240ba1d4a67aee102621f8016db3ec7cf35 100644
--- a/pkg/apis/upgrade.cattle.io/v1/types.go
+++ b/pkg/apis/upgrade.cattle.io/v1/types.go
@@ -46,10 +46,11 @@ type PlanSpec struct {
 
 	Exclusive bool `json:"exclusive,omitempty"`
 
-	Prepare *ContainerSpec `json:"prepare,omitempty"`
-	Cordon  bool           `json:"cordon,omitempty"`
-	Drain   *DrainSpec     `json:"drain,omitempty"`
-	Upgrade *ContainerSpec `json:"upgrade,omitempty" wrangler:"required"`
+	Prepare          *ContainerSpec                `json:"prepare,omitempty"`
+	Cordon           bool                          `json:"cordon,omitempty"`
+	Drain            *DrainSpec                    `json:"drain,omitempty"`
+	Upgrade          *ContainerSpec                `json:"upgrade,omitempty" wrangler:"required"`
+	ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
 }
 
 // PlanStatus represents the resulting state from processing Plan events.
diff --git a/pkg/upgrade/job/job.go b/pkg/upgrade/job/job.go
index 1e729cc0efcd3beae1c304e8b51353f676beb538..d8a6cfdb00bae3688fe22d16198572598e98743e 100644
--- a/pkg/upgrade/job/job.go
+++ b/pkg/upgrade/job/job.go
@@ -215,6 +215,7 @@ func New(plan *upgradeapiv1.Plan, node *corev1.Node, controllerName string) *bat
 							},
 						},
 					}},
+					ImagePullSecrets: plan.Spec.ImagePullSecrets,
 				},
 			},
 			Completions: new(int32),