| 
														
															@@ -74,15 +74,17 @@ func (r *BlueGreenReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	// Create or Update BlueDeployment 
														 | 
														
														 | 
														
															 	// Create or Update BlueDeployment 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	for _, bg := range []v1.BlueOrGreen{v1.Blue, v1.Green} { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		spec := bluegreen.Spec.BlueSpec 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		if bg == v1.Green { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			spec = bluegreen.Spec.GreenSpec 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		if spec == nil { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	for _, tgt := range []struct { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		Phase v1.BlueOrGreen 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		Spec  *corev1.PodSpec 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	}{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		{Phase: v1.Blue, Spec: bluegreen.Spec.BlueSpec}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		{Phase: v1.Green, Spec: bluegreen.Spec.GreenSpec}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		if tgt.Spec == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			continue 
														 | 
														
														 | 
														
															 			continue 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		deploy := &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Namespace: req.Namespace, Name: deploymentName(req.Name, bg)}} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		deploy := &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Namespace: req.Namespace, Name: deploymentName(req.Name, tgt.Phase)}} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		if _, err := ctrl.CreateOrUpdate(ctx, r.Client, deploy, func() error { 
														 | 
														
														 | 
														
															 		if _, err := ctrl.CreateOrUpdate(ctx, r.Client, deploy, func() error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			if err := ctrl.SetControllerReference(bluegreen, deploy, r.Scheme); err != nil { 
														 | 
														
														 | 
														
															 			if err := ctrl.SetControllerReference(bluegreen, deploy, r.Scheme); err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				return err 
														 | 
														
														 | 
														
															 				return err 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -90,12 +92,12 @@ func (r *BlueGreenReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			label := map[string]string{ 
														 | 
														
														 | 
														
															 			label := map[string]string{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				"app.kubernetes.io/managed-by": "app.demo.kakao.com", 
														 | 
														
														 | 
														
															 				"app.kubernetes.io/managed-by": "app.demo.kakao.com", 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				"app.kubernetes.io/name":       req.Name, 
														 | 
														
														 | 
														
															 				"app.kubernetes.io/name":       req.Name, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				"app.kubernetes.io/phase":      string(bg), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				"app.kubernetes.io/phase":      string(tgt.Phase), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			deploy.Spec.Selector = &metav1.LabelSelector{MatchLabels: label} 
														 | 
														
														 | 
														
															 			deploy.Spec.Selector = &metav1.LabelSelector{MatchLabels: label} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			deploy.Spec.Template = corev1.PodTemplateSpec{ 
														 | 
														
														 | 
														
															 			deploy.Spec.Template = corev1.PodTemplateSpec{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				ObjectMeta: metav1.ObjectMeta{Labels: label}, 
														 | 
														
														 | 
														
															 				ObjectMeta: metav1.ObjectMeta{Labels: label}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				Spec:       *spec, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				Spec:       *tgt.Spec, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			return nil 
														 | 
														
														 | 
														
															 			return nil 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		}); err != nil { 
														 | 
														
														 | 
														
															 		}); err != nil { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -116,6 +118,6 @@ func (r *BlueGreenReconciler) SetupWithManager(mgr ctrl.Manager) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		Complete(r) 
														 | 
														
														 | 
														
															 		Complete(r) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-func deploymentName(name string, bg v1.BlueOrGreen) string { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	return fmt.Sprintf("%s-%s", name, strings.ToLower(string(bg))) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func deploymentName(name string, phase v1.BlueOrGreen) string { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return fmt.Sprintf("%s-%s", name, strings.ToLower(string(phase))) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 |