|
@@ -74,15 +74,17 @@ func (r *BlueGreenReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
|
|
|
}
|
|
|
|
|
|
// 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
|
|
|
}
|
|
|
- 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.SetControllerReference(bluegreen, deploy, r.Scheme); err != nil {
|
|
|
return err
|
|
@@ -90,12 +92,12 @@ func (r *BlueGreenReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
|
|
|
label := map[string]string{
|
|
|
"app.kubernetes.io/managed-by": "app.demo.kakao.com",
|
|
|
"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.Template = corev1.PodTemplateSpec{
|
|
|
ObjectMeta: metav1.ObjectMeta{Labels: label},
|
|
|
- Spec: *spec,
|
|
|
+ Spec: *tgt.Spec,
|
|
|
}
|
|
|
return nil
|
|
|
}); err != nil {
|
|
@@ -116,6 +118,6 @@ func (r *BlueGreenReconciler) SetupWithManager(mgr ctrl.Manager) error {
|
|
|
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)))
|
|
|
}
|