Fix manager crashloopback for ARC deployments without scaleset-related controllers (#2293)
This commit is contained in:
		
							parent
							
								
									274d0c874e
								
							
						
					
					
						commit
						a44fe04bef
					
				
							
								
								
									
										126
									
								
								main.go
								
								
								
								
							
							
						
						
									
										126
									
								
								main.go
								
								
								
								
							|  | @ -317,71 +317,81 @@ func main() { | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// We use this environment avariable to turn on the ScaleSet related controllers.
 | ||||||
|  | 	// Otherwise ARC's legacy chart is unable to deploy a working ARC controller-manager pod,
 | ||||||
|  | 	// due to that the chart does not contain new actions.* CRDs while ARC requires those CRDs.
 | ||||||
|  | 	//
 | ||||||
|  | 	// We might have used a more explicitly named environment variable for this,
 | ||||||
|  | 	// e.g. "CONTROLLER_MANAGER_ENABLE_SCALE_SET" to explicitly enable the new controllers,
 | ||||||
|  | 	// or "CONTROLLER_MANAGER_DISABLE_SCALE_SET" to explicitly disable the new controllers.
 | ||||||
|  | 	// However, doing so would affect either private ARC testers or current ARC users
 | ||||||
|  | 	// who run ARC without those variabls.
 | ||||||
| 	mgrPodName := os.Getenv("CONTROLLER_MANAGER_POD_NAME") | 	mgrPodName := os.Getenv("CONTROLLER_MANAGER_POD_NAME") | ||||||
| 	mgrPodNamespace := os.Getenv("CONTROLLER_MANAGER_POD_NAMESPACE") | 	if mgrPodName != "" { | ||||||
| 	var mgrPod corev1.Pod | 		mgrPodNamespace := os.Getenv("CONTROLLER_MANAGER_POD_NAMESPACE") | ||||||
| 	err = mgr.GetAPIReader().Get(context.Background(), types.NamespacedName{Namespace: mgrPodNamespace, Name: mgrPodName}, &mgrPod) | 		var mgrPod corev1.Pod | ||||||
| 	if err != nil { | 		err = mgr.GetAPIReader().Get(context.Background(), types.NamespacedName{Namespace: mgrPodNamespace, Name: mgrPodName}, &mgrPod) | ||||||
| 		log.Error(err, fmt.Sprintf("unable to obtain manager pod: %s (%s)", mgrPodName, mgrPodNamespace)) | 		if err != nil { | ||||||
| 		os.Exit(1) | 			log.Error(err, fmt.Sprintf("unable to obtain manager pod: %s (%s)", mgrPodName, mgrPodNamespace)) | ||||||
| 	} | 			os.Exit(1) | ||||||
| 
 |  | ||||||
| 	var mgrContainer *corev1.Container |  | ||||||
| 	for _, container := range mgrPod.Spec.Containers { |  | ||||||
| 		if container.Name == "manager" { |  | ||||||
| 			mgrContainer = &container |  | ||||||
| 			break |  | ||||||
| 		} | 		} | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	if mgrContainer != nil { | 		var mgrContainer *corev1.Container | ||||||
| 		log.Info("Detected manager container", "image", mgrContainer.Image) | 		for _, container := range mgrPod.Spec.Containers { | ||||||
| 	} else { | 			if container.Name == "manager" { | ||||||
| 		log.Error(err, "unable to obtain manager container image") | 				mgrContainer = &container | ||||||
| 		os.Exit(1) | 				break | ||||||
| 	} | 			} | ||||||
|  | 		} | ||||||
| 
 | 
 | ||||||
| 	if err = (&actionsgithubcom.AutoscalingRunnerSetReconciler{ | 		if mgrContainer != nil { | ||||||
| 		Client:                             mgr.GetClient(), | 			log.Info("Detected manager container", "image", mgrContainer.Image) | ||||||
| 		Log:                                log.WithName("AutoscalingRunnerSet"), | 		} else { | ||||||
| 		Scheme:                             mgr.GetScheme(), | 			log.Error(err, "unable to obtain manager container image") | ||||||
| 		ControllerNamespace:                mgrPodNamespace, | 			os.Exit(1) | ||||||
| 		DefaultRunnerScaleSetListenerImage: mgrContainer.Image, | 		} | ||||||
| 		ActionsClient:                      actionsMultiClient, | 		if err = (&actionsgithubcom.AutoscalingRunnerSetReconciler{ | ||||||
| 		DefaultRunnerScaleSetListenerImagePullSecrets: autoScalerImagePullSecrets, | 			Client:                             mgr.GetClient(), | ||||||
| 	}).SetupWithManager(mgr); err != nil { | 			Log:                                log.WithName("AutoscalingRunnerSet"), | ||||||
| 		log.Error(err, "unable to create controller", "controller", "AutoscalingRunnerSet") | 			Scheme:                             mgr.GetScheme(), | ||||||
| 		os.Exit(1) | 			ControllerNamespace:                mgrPodNamespace, | ||||||
| 	} | 			DefaultRunnerScaleSetListenerImage: mgrContainer.Image, | ||||||
|  | 			ActionsClient:                      actionsMultiClient, | ||||||
|  | 			DefaultRunnerScaleSetListenerImagePullSecrets: autoScalerImagePullSecrets, | ||||||
|  | 		}).SetupWithManager(mgr); err != nil { | ||||||
|  | 			log.Error(err, "unable to create controller", "controller", "AutoscalingRunnerSet") | ||||||
|  | 			os.Exit(1) | ||||||
|  | 		} | ||||||
| 
 | 
 | ||||||
| 	if err = (&actionsgithubcom.EphemeralRunnerReconciler{ | 		if err = (&actionsgithubcom.EphemeralRunnerReconciler{ | ||||||
| 		Client:        mgr.GetClient(), | 			Client:        mgr.GetClient(), | ||||||
| 		Log:           log.WithName("EphemeralRunner"), | 			Log:           log.WithName("EphemeralRunner"), | ||||||
| 		Scheme:        mgr.GetScheme(), | 			Scheme:        mgr.GetScheme(), | ||||||
| 		ActionsClient: actionsMultiClient, | 			ActionsClient: actionsMultiClient, | ||||||
| 	}).SetupWithManager(mgr); err != nil { | 		}).SetupWithManager(mgr); err != nil { | ||||||
| 		log.Error(err, "unable to create controller", "controller", "EphemeralRunner") | 			log.Error(err, "unable to create controller", "controller", "EphemeralRunner") | ||||||
| 		os.Exit(1) | 			os.Exit(1) | ||||||
| 	} | 		} | ||||||
| 
 | 
 | ||||||
| 	if err = (&actionsgithubcom.EphemeralRunnerSetReconciler{ | 		if err = (&actionsgithubcom.EphemeralRunnerSetReconciler{ | ||||||
| 		Client:        mgr.GetClient(), | 			Client:        mgr.GetClient(), | ||||||
| 		Log:           log.WithName("EphemeralRunnerSet"), | 			Log:           log.WithName("EphemeralRunnerSet"), | ||||||
| 		Scheme:        mgr.GetScheme(), | 			Scheme:        mgr.GetScheme(), | ||||||
| 		ActionsClient: actionsMultiClient, | 			ActionsClient: actionsMultiClient, | ||||||
| 	}).SetupWithManager(mgr); err != nil { | 		}).SetupWithManager(mgr); err != nil { | ||||||
| 		log.Error(err, "unable to create controller", "controller", "EphemeralRunnerSet") | 			log.Error(err, "unable to create controller", "controller", "EphemeralRunnerSet") | ||||||
| 		os.Exit(1) | 			os.Exit(1) | ||||||
|  | 		} | ||||||
|  | 		if err = (&actionsgithubcom.AutoscalingListenerReconciler{ | ||||||
|  | 			Client: mgr.GetClient(), | ||||||
|  | 			Log:    log.WithName("AutoscalingListener"), | ||||||
|  | 			Scheme: mgr.GetScheme(), | ||||||
|  | 		}).SetupWithManager(mgr); err != nil { | ||||||
|  | 			log.Error(err, "unable to create controller", "controller", "AutoscalingListener") | ||||||
|  | 			os.Exit(1) | ||||||
|  | 		} | ||||||
|  | 		// +kubebuilder:scaffold:builder
 | ||||||
| 	} | 	} | ||||||
| 	if err = (&actionsgithubcom.AutoscalingListenerReconciler{ |  | ||||||
| 		Client: mgr.GetClient(), |  | ||||||
| 		Log:    log.WithName("AutoscalingListener"), |  | ||||||
| 		Scheme: mgr.GetScheme(), |  | ||||||
| 	}).SetupWithManager(mgr); err != nil { |  | ||||||
| 		log.Error(err, "unable to create controller", "controller", "AutoscalingListener") |  | ||||||
| 		os.Exit(1) |  | ||||||
| 	} |  | ||||||
| 	// +kubebuilder:scaffold:builder
 |  | ||||||
| 
 | 
 | ||||||
| 	if !disableAdmissionWebhook && !autoScalingRunnerSetOnly { | 	if !disableAdmissionWebhook && !autoScalingRunnerSetOnly { | ||||||
| 		injector := &actionssummerwindnet.PodRunnerTokenInjector{ | 		injector := &actionssummerwindnet.PodRunnerTokenInjector{ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue