@@ -141,6 +141,13 @@ def update_image(spec, image):
141141 container ["image" ] = image
142142
143143
144+ def update_image_pull_secrets (spec , image_pull_secrets ):
145+ template_secrets = spec .get ("imagePullSecrets" , [])
146+ spec ["imagePullSecrets" ] = template_secrets + [
147+ {"name" : x } for x in image_pull_secrets
148+ ]
149+
150+
144151def update_env (spec , env ):
145152 containers = spec .get ("containers" )
146153 for container in containers :
@@ -178,6 +185,7 @@ def update_nodes(
178185 image ,
179186 instascale ,
180187 env ,
188+ image_pull_secrets ,
181189):
182190 if "generictemplate" in item .keys ():
183191 head = item .get ("generictemplate" ).get ("spec" ).get ("headGroupSpec" )
@@ -193,6 +201,7 @@ def update_nodes(
193201 for comp in [head , worker ]:
194202 spec = comp .get ("template" ).get ("spec" )
195203 update_affinity (spec , appwrapper_name , instascale )
204+ update_image_pull_secrets (spec , image_pull_secrets )
196205 update_image (spec , image )
197206 update_env (spec , env )
198207 if comp == head :
@@ -295,6 +304,7 @@ def generate_appwrapper(
295304 instance_types : list ,
296305 env ,
297306 local_interactive : bool ,
307+ image_pull_secrets : list ,
298308):
299309 user_yaml = read_template (template )
300310 appwrapper_name , cluster_name = gen_names (name )
@@ -318,6 +328,7 @@ def generate_appwrapper(
318328 image ,
319329 instascale ,
320330 env ,
331+ image_pull_secrets ,
321332 )
322333 update_dashboard_route (route_item , cluster_name , namespace )
323334 if local_interactive :
@@ -409,6 +420,12 @@ def main(): # pragma: no cover
409420 default = False ,
410421 help = "Enable local interactive mode" ,
411422 )
423+ parser .add_argument (
424+ "--image-pull-secrets" ,
425+ required = False ,
426+ default = [],
427+ help = "Set image pull secrets for private registries" ,
428+ )
412429
413430 args = parser .parse_args ()
414431 name = args .name
@@ -425,6 +442,7 @@ def main(): # pragma: no cover
425442 namespace = args .namespace
426443 local_interactive = args .local_interactive
427444 env = {}
445+ image_pull_secrets = args .image_pull_secrets
428446
429447 outfile = generate_appwrapper (
430448 name ,
@@ -441,6 +459,7 @@ def main(): # pragma: no cover
441459 instance_types ,
442460 local_interactive ,
443461 env ,
462+ image_pull_secrets ,
444463 )
445464 return outfile
446465
0 commit comments