|
@@ -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,
|