From 049b3dd11d4fa443f2db776293c1fd4dffe8fec2 Mon Sep 17 00:00:00 2001 From: Jeff Date: Mon, 13 May 2019 21:26:54 +0800 Subject: [PATCH] update router workload --- pkg/models/routers/routers.go | 38 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/pkg/models/routers/routers.go b/pkg/models/routers/routers.go index 48479421f..f844799a6 100644 --- a/pkg/models/routers/routers.go +++ b/pkg/models/routers/routers.go @@ -207,7 +207,7 @@ func CreateRouter(namespace string, routerType corev1.ServiceType, annotations m } } - err := createRouterWorkload(namespace, routerType == corev1.ServiceTypeLoadBalancer, injectSidecar) + err := createOrUpdateRouterWorkload(namespace, routerType == corev1.ServiceTypeLoadBalancer, injectSidecar) if err != nil { glog.Error(err) return nil, err @@ -320,7 +320,7 @@ func deleteRouterService(namespace string) (*corev1.Service, error) { return service, nil } -func createRouterWorkload(namespace string, publishService bool, servicemeshEnabled bool) error { +func createOrUpdateRouterWorkload(namespace string, publishService bool, servicemeshEnabled bool) error { obj, ok := routerTemplates["DEPLOYMENT"] if !ok { glog.Error("Deployment template file not loaded") @@ -329,6 +329,7 @@ func createRouterWorkload(namespace string, publishService bool, servicemeshEnab k8sClient := k8s.Client() + createDeployment := true deployment := obj.(*extensionsv1beta1.Deployment) deployment.Name = constants.IngressControllerPrefix + namespace @@ -355,7 +356,18 @@ func createRouterWorkload(namespace string, publishService bool, servicemeshEnab deployment.Spec.Template.Spec.Containers[0].Args = append(deployment.Spec.Template.Spec.Containers[0].Args, "--report-node-internal-ip-address") } - deployment, err := k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Create(deployment) + _, err := k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Get(deployment.Name, meta_v1.GetOptions{}) + + if err == nil { + createDeployment = false + } + + if createDeployment { + deployment, err = k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Create(deployment) + } else { + deployment, err = k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Update(deployment) + } + if err != nil { glog.Error(err) return err @@ -411,22 +423,12 @@ func UpdateRouter(namespace string, routerType corev1.ServiceType, annotations m return router, err } - routerAnnotations := router.GetAnnotations() + enableServicemesh := annotations[SERVICEMESH_ENABLED] == "true" - if routerAnnotations[SERVICEMESH_ENABLED] != annotations[SERVICEMESH_ENABLED] || routerType != router.Spec.Type { - err = deleteRouterWorkload(namespace) - if err != nil { - glog.Error(err) - return router, err - } - - enableServicemesh := annotations[SERVICEMESH_ENABLED] == "true" - - err := createRouterWorkload(namespace, routerType == corev1.ServiceTypeLoadBalancer, enableServicemesh) - if err != nil { - glog.Error(err) - return router, err - } + err = createOrUpdateRouterWorkload(namespace, routerType == corev1.ServiceTypeLoadBalancer, enableServicemesh) + if err != nil { + glog.Error(err) + return router, err } newRouter, err := updateRouterService(namespace, routerType, annotations)