iwanhae 2 年 前
コミット
4017725eef
1 ファイル変更23 行追加17 行削除
  1. 23 17
      controllers/bluegreen_controller.go

+ 23 - 17
controllers/bluegreen_controller.go

@@ -70,23 +70,7 @@ func (r *BlueGreenReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
 		if tgt.Spec == nil {
 			continue
 		}
-		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.SetControllerReference(bluegreen, deploy, r.Scheme); err != nil {
-				return err
-			}
-			label := map[string]string{
-				"app.kubernetes.io/managed-by": "app.demo.kakao.com",
-				"app.kubernetes.io/name":       req.Name,
-				"app.kubernetes.io/phase":      string(tgt.Phase),
-			}
-			deploy.Spec.Selector = &metav1.LabelSelector{MatchLabels: label}
-			deploy.Spec.Template = corev1.PodTemplateSpec{
-				ObjectMeta: metav1.ObjectMeta{Labels: label},
-				Spec:       *tgt.Spec,
-			}
-			return nil
-		}); err != nil {
+		if err := r.CreateOrUpdateDeployment(ctx, bluegreen, tgt.Phase, *tgt.Spec); err != nil {
 			return ctrl.Result{}, err
 		}
 	}
@@ -104,6 +88,28 @@ func (r *BlueGreenReconciler) SetupWithManager(mgr ctrl.Manager) error {
 		Complete(r)
 }
 
+func (r *BlueGreenReconciler) CreateOrUpdateDeployment(ctx context.Context, owner *v1.BlueGreen, phase v1.BlueOrGreen, podSpec corev1.PodSpec) error {
+	deploy := &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Namespace: owner.Namespace, Name: deploymentName(owner.Name, phase)}}
+	if _, err := ctrl.CreateOrUpdate(ctx, r.Client, deploy, func() error {
+		if err := ctrl.SetControllerReference(owner, deploy, r.Scheme); err != nil {
+			return err
+		}
+		label := map[string]string{
+			"app.kubernetes.io/managed-by": "app.demo.kakao.com",
+			"app.kubernetes.io/name":       owner.Name,
+			"app.kubernetes.io/phase":      string(phase),
+		}
+		deploy.Spec.Selector = &metav1.LabelSelector{MatchLabels: label}
+		deploy.Spec.Template = corev1.PodTemplateSpec{
+			ObjectMeta: metav1.ObjectMeta{Labels: label},
+			Spec:       podSpec,
+		}
+		return nil
+	}); err != nil {
+		return err
+	}
+	return nil
+}
 func (r *BlueGreenReconciler) CreateOrUpdateService(ctx context.Context, owner *v1.BlueGreen) error {
 	svc := &corev1.Service{ObjectMeta: metav1.ObjectMeta{Namespace: owner.Namespace, Name: owner.Name}}
 	if _, err := ctrl.CreateOrUpdate(ctx, r.Client, svc,