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