From 24cd7f6482e28f8aad6edf57567790815ee5fc95 Mon Sep 17 00:00:00 2001 From: Saylor Berman Date: Thu, 26 Apr 2018 14:17:09 -0600 Subject: [PATCH 1/2] Merge pull request #685 from sjberman/bug_fixes Fix node watching; update CCCL pointer --- cmd/k8s-bigip-ctlr/main.go | 40 +++++++++++++++----------------------- docs/RELEASE-NOTES.rst | 11 +++++++++++ requirements.txt | 2 +- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/cmd/k8s-bigip-ctlr/main.go b/cmd/k8s-bigip-ctlr/main.go index 413122562..a68471b62 100644 --- a/cmd/k8s-bigip-ctlr/main.go +++ b/cmd/k8s-bigip-ctlr/main.go @@ -375,12 +375,11 @@ func setupNodePolling( eventChan <-chan interface{}, kubeClient kubernetes.Interface, ) error { - if appMgr.IsNodePort() { - err := np.RegisterListener(appMgr.ProcessNodeUpdate) - if nil != err { - return fmt.Errorf("error registering node update listener for nodeport mode: %v", - err) - } + // Register appMgr to watch for node updates to keep track of watched nodes + err := np.RegisterListener(appMgr.ProcessNodeUpdate) + if nil != err { + return fmt.Errorf("error registering node update listener: %v", + err) } if 0 != len(vxlanMode) { @@ -408,12 +407,6 @@ func setupNodePolling( return fmt.Errorf("error registering node update listener for vxlan mode: %v", err) } - // Register appMgr to watch for node updates to keep track of watched nodes - err = np.RegisterListener(appMgr.ProcessNodeUpdate) - if nil != err { - return fmt.Errorf("error registering node update listener for appManager: %v", - err) - } if eventChan != nil { vxMgr.ProcessAppmanagerEvents(kubeClient) } @@ -599,7 +592,8 @@ func main() { log.Fatalf("error connecting to the client: %v", err) } if *manageRoutes { - rclient, err := routeclient.New(config) + var rclient *routeclient.Client + rclient, err = routeclient.New(config) appMgrParms.RouteClientV1 = rclient.RESTClient if nil != err { log.Fatalf("unable to create route client: err: %+v\n", err) @@ -608,19 +602,17 @@ func main() { appMgr := appmanager.NewManager(&appMgrParms) - if isNodePort || 0 != len(vxlanMode) { - intervalFactor := time.Duration(*nodePollInterval) - np := pollers.NewNodePoller(appMgrParms.KubeClient, intervalFactor*time.Second, *nodeLabelSelector) - err := setupNodePolling(appMgr, np, eventChan, appMgrParms.KubeClient) - if nil != err { - log.Fatalf("Required polling utility for node updates failed setup: %v", - err) - } - - np.Run() - defer np.Stop() + intervalFactor := time.Duration(*nodePollInterval) + np := pollers.NewNodePoller(appMgrParms.KubeClient, intervalFactor*time.Second, *nodeLabelSelector) + err = setupNodePolling(appMgr, np, eventChan, appMgrParms.KubeClient) + if nil != err { + log.Fatalf("Required polling utility for node updates failed setup: %v", + err) } + np.Run() + defer np.Stop() + setupWatchers(appMgr, 30*time.Second) // Expose Prometheus metrics http.Handle("/metrics", promhttp.Handler()) diff --git a/docs/RELEASE-NOTES.rst b/docs/RELEASE-NOTES.rst index 3ee762703..f0212fab3 100644 --- a/docs/RELEASE-NOTES.rst +++ b/docs/RELEASE-NOTES.rst @@ -1,6 +1,14 @@ Release Notes for BIG-IP Controller for Kubernetes ================================================== +v1.5.1 +------ + +Bug Fixes +````````` +* :issues:`683` - Controller upgrades properly with new metadata field. +* :issues:`686` - Controller in cluster mode does not rely on vxlan name to configure pool members. + v1.5.0 ------ @@ -34,6 +42,9 @@ Bug Fixes Limitations ``````````` * Cannot apply app-root and url-rewrite annotations to the same resource; see: :issues:`675` +* If an older controller created resources, upgrading to the new version could + result in a python exception when adding metadata to virtuals: :issues:`683` +* If running the controller in cluster mode without a vxlan name, pool members are not created: :issues:`686` v1.4.2 ------ diff --git a/requirements.txt b/requirements.txt index b94ab6bea..f98b866a4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1 @@ --e git+https://github.com/f5devcentral/f5-ctlr-agent.git@ffe7c22288502ca45f14bcf2b6d93295ca58a593#egg=f5-ctlr-agent +-e git+https://github.com/f5devcentral/f5-ctlr-agent.git@435f049bf1a36c56293e57686d88a0bcd03e4cf6#egg=f5-ctlr-agent From 458006fd3f455257ed17fbfdaab73bf17b28a0ee Mon Sep 17 00:00:00 2001 From: Saylor Berman Date: Thu, 26 Apr 2018 14:44:50 -0600 Subject: [PATCH 2/2] Docs links updates --- docs/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 035c0a75f..8e5acca38 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -105,12 +105,12 @@ Attributions .. |kctlr| replace:: :code:`k8s-bigip-ctlr` .. |kctlr-long| replace:: F5 BIG-IP Controller for Kubernetes -.. _F5 Resource: %(base_url)s/containers/latest/kubernetes/#f5-resource-properties +.. _F5 Resource: %(base_url)s/containers/latest/kubernetes/kctlr-f5-resource.html#f5-resource-properties .. _Kubernetes Ingress: https://kubernetes.io/docs/concepts/services-networking/ingress/ .. _Flannel VxLAN in Kubernetes: %(base_url)s/containers/latest/kubernetes/flannel-bigip-info.html .. _user documentation: %(base_url)s/containers/latest/kubernetes/index.html .. _Integration Overview: %(base_url)s/containers/latest/kubernetes/index.html -.. _Assign IP addresses to BIG-IP virtual servers using IPAM: %(base_url)s/containers/latest/kubernetes/kctlr-manage-bigip-objects.html#assign-ip-addresses-to-big-ip-virtual-servers-using-ipam +.. _Assign IP addresses to BIG-IP virtual servers using IPAM: %(base_url)s/containers/latest/kubernetes/kctlr-manage-bigip-objects.html#attach-pools-to-a-virtual-server-using-ipam .. _pools without virtual servers: %(base_url)s/containers/latest/kubernetes/kctlr-manage-bigip-objects.html#pools-without-virtual-servers .. _Expose Services to External Traffic using Ingresses: %(base_url)s/containers/latest/kubernetes/kctlr-ingress.html .. _f5 schema versions: %(base_url)s/containers/latest/releases_and_versioning.html#f5-schema