- 18 Jun, 2020 1 commit
-
-
Murali Reddy authored
controller has already shutdown fixes panic seen in #937
-
- 16 Jun, 2020 1 commit
-
-
Aaron U'Ren authored
avoide listing a chain if the rule already exists
-
- 15 Jun, 2020 1 commit
-
-
Murali Reddy authored
-
- 14 Jun, 2020 2 commits
-
-
Aaron U'Ren authored
fix unintentional Sprint of two-argument generateFwmark() call
-
eta authored
-
- 12 Jun, 2020 1 commit
-
-
Aaron U'Ren authored
fix false negative errors in creating BGP defined sets
-
- 11 Jun, 2020 1 commit
-
-
Murali Reddy authored
-
- 09 Jun, 2020 2 commits
-
-
Murali Reddy authored
all the applicable network policies for a flow
-
Murali Reddy authored
whitelist traffic to cluster IP and node ports in INPUT chain to bypass netwrok policy enforcement (#914) * whitelist traffic to cluster IP and node ports in INPUT chain to bypass netwrok policy enforcement Fixes #905 * fix unit test failure * ensure netpol firewall rules are configured after service proxy firewall rules
-
- 08 Jun, 2020 1 commit
-
-
Murali Reddy authored
built in chain used in fitler table - adds one level of indirection INPUT -> KUBE-ROUTER-INPUT FORWARD -> KUBE-ROUTER-FORWARD OUTPUT -> KUBE-ROUTER-OUTPUT - easy to troubleshoot with namesake custom chains Fixes #185
-
- 04 Jun, 2020 1 commit
-
-
刘旭 authored
-
- 03 Jun, 2020 1 commit
-
-
Manuel Rüger authored
* Makefile: Add lint using golangci-lint * build/travis-test.sh: Run lint step * metrics_controller: Lint pkg/metrics/metrics_controller.go:150:2: `mu` is unused (structcheck) mu sync.Mutex ^ pkg/metrics/metrics_controller.go:151:2: `nodeIP` is unused (structcheck) nodeIP net.IP ^ * network_service_graceful: Lint pkg/controllers/proxy/network_service_graceful.go:21:6: `gracefulQueueItem` is unused (deadcode) type gracefulQueueItem struct { ^ pkg/controllers/proxy/network_service_graceful.go:22:2: `added` is unused (structcheck) added time.Time ^ pkg/controllers/proxy/network_service_graceful.go:23:2: `service` is unused (structcheck) service *ipvs.Service ^ * network_services_controller_test: Lint pkg/controllers/proxy/network_services_controller_test.go:80:6: func `logf` is unused (unused) * ecmp_vip: Lint pkg/controllers/routing/ecmp_vip.go:208:4: S1023: redundant `return` statement (gosimple) return ^ * bgp_peers: Lint pkg/controllers/routing/bgp_peers.go:331:4: S1023: redundant `return` statement (gosimple) return ^ * bgp_policies: Lint pkg/controllers/routing/bgp_policies.go:80:3: S1011: should replace loop with `externalBgpPeers = append(externalBgpPeers, nrc.nodePeerRouters...)` (gosimple) for _, peer := range nrc.nodePeerRouters { ^ pkg/controllers/routing/bgp_policies.go:23:20: ineffectual assignment to `err` (ineffassign) podCidrPrefixSet, err := table.NewPrefixSet(config.PrefixSet{ ^ pkg/controllers/routing/bgp_policies.go:42:22: ineffectual assignment to `err` (ineffassign) clusterIPPrefixSet, err := table.NewPrefixSet(config.PrefixSet{ ^ pkg/controllers/routing/bgp_policies.go:33:30: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck) nrc.bgpServer.AddDefinedSet(podCidrPrefixSet) ^ pkg/controllers/routing/bgp_policies.go:48:30: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck) nrc.bgpServer.AddDefinedSet(clusterIPPrefixSet) ^ pkg/controllers/routing/bgp_policies.go:69:31: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck) nrc.bgpServer.AddDefinedSet(iBGPPeerNS) ^ pkg/controllers/routing/bgp_policies.go:108:31: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck) nrc.bgpServer.AddDefinedSet(ns) ^ pkg/controllers/routing/bgp_policies.go:120:30: Error return value of `nrc.bgpServer.AddDefinedSet` is not checked (errcheck) nrc.bgpServer.AddDefinedSet(ns) ^ ^ * network_policy_controller: Lint pkg/controllers/netpol/network_policy_controller.go:35:2: `networkPolicyAnnotation` is unused (deadcode) networkPolicyAnnotation = "net.beta.kubernetes.io/network-policy" ^ pkg/controllers/netpol/network_policy_controller.go:1047:4: SA9003: empty branch (staticcheck) if err != nil { ^ pkg/controllers/netpol/network_policy_controller.go:969:10: SA4006: this value of `err` is never used (staticcheck) chains, err := iptablesCmdHandler.ListChains("filter") ^ pkg/controllers/netpol/network_policy_controller.go:1568:4: SA4006: this value of `err` is never used (staticcheck) err = iptablesCmdHandler.Delete("filter", "FORWARD", strconv.Itoa(i-realRuleNo)) ^ pkg/controllers/netpol/network_policy_controller.go:1584:4: SA4006: this value of `err` is never used (staticcheck) err = iptablesCmdHandler.Delete("filter", "OUTPUT", strconv.Itoa(i-realRuleNo)) ^ * network_services_controller: Lint pkg/controllers/proxy/network_services_controller.go:66:2: `h` is unused (deadcode) h *ipvs.Handle ^ pkg/controllers/proxy/network_services_controller.go:879:23: SA1019: client.NewEnvClient is deprecated: use NewClientWithOpts(FromEnv) (staticcheck) dockerClient, err := client.NewEnvClient() ^ pkg/controllers/proxy/network_services_controller.go:944:5: unreachable: unreachable code (govet) glog.V(3).Infof("Waiting for tunnel interface %s to come up in the pod, retrying", KUBE_TUNNEL_IF) ^ pkg/controllers/proxy/network_services_controller.go:1289:5: S1002: should omit comparison to bool constant, can be simplified to `!hasHairpinChain` (gosimple) if hasHairpinChain != true { ^ pkg/controllers/proxy/network_services_controller.go:1237:43: S1019: should use make(map[string][]string) instead (gosimple) rulesNeeded := make(map[string][]string, 0) ^ pkg/controllers/proxy/network_services_controller.go:1111:4: S1023: redundant break statement (gosimple) break ^ pkg/controllers/proxy/network_services_controller.go:1114:4: S1023: redundant break statement (gosimple) break ^ pkg/controllers/proxy/network_services_controller.go:1117:4: S1023: redundant break statement (gosimple) break ^ pkg/controllers/proxy/network_services_controller.go:445:21: Error return value of `nsc.publishMetrics` is not checked (errcheck) nsc.publishMetrics(nsc.serviceMap) ^ pkg/controllers/proxy/network_services_controller.go:1609:9: Error return value of `h.Write` is not checked (errcheck) h.Write([]byte(ip + "-" + protocol + "-" + port)) ^ pkg/controllers/proxy/network_services_controller.go:912:13: Error return value of `netns.Set` is not checked (errcheck) netns.Set(hostNetworkNamespaceHandle) ^ pkg/controllers/proxy/network_services_controller.go:926:13: Error return value of `netns.Set` is not checked (errcheck) netns.Set(hostNetworkNamespaceHandle) ^ pkg/controllers/proxy/network_services_controller.go:950:13: Error return value of `netns.Set` is not checked (errcheck) netns.Set(hostNetworkNamespaceHandle) ^ pkg/controllers/proxy/network_services_controller.go:641:9: SA4006: this value of `err` is never used (staticcheck) addrs, err := getAllLocalIPs() ^ * network_routes_controller: Lint pkg/controllers/routing/network_routes_controller.go:340:2: S1000: should use for range instead of for { select {} } (gosimple) for { ^ pkg/controllers/routing/network_routes_controller.go:757:22: Error return value of `nrc.bgpServer.Stop` is not checked (errcheck) nrc.bgpServer.Stop() ^ pkg/controllers/routing/network_routes_controller.go:770:22: Error return value of `nrc.bgpServer.Stop` is not checked (errcheck) nrc.bgpServer.Stop() ^ pkg/controllers/routing/network_routes_controller.go:782:23: Error return value of `nrc.bgpServer.Stop` is not checked (errcheck) nrc.bgpServer.Stop() ^ pkg/controllers/routing/network_routes_controller.go:717:12: Error return value of `g.Serve` is not checked (errcheck) go g.Serve() * ipset: Lint pkg/utils/ipset.go:243:23: Error return value of `entry.Set.Parent.Save` is not checked (errcheck) entry.Set.Parent.Save() ^ * pkg/cmd/kube-router: Lint pkg/cmd/kube-router.go:214:26: SA1006: printf-style function with dynamic format string and no further arguments should use print-style function instead (staticcheck) fmt.Fprintf(os.Stderr, output) ^ pkg/cmd/kube-router.go:184:15: SA1017: the channel used with signal.Notify should be buffered (staticcheck) signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) ^ pkg/cmd/kube-router.go:94:17: Error return value of `hc.RunServer` is not checked (errcheck) go hc.RunServer(stopCh, &wg) ^ pkg/cmd/kube-router.go:112:16: Error return value of `hc.RunCheck` is not checked (errcheck) go hc.RunCheck(healthChan, stopCh, &wg) ^ pkg/cmd/kube-router.go:121:12: Error return value of `mc.Run` is not checked (errcheck) go mc.Run(healthChan, stopCh, &wg) ^ * cmd/kube-router/kube-router: Lint cmd/kube-router/kube-router.go:31:24: Error return value of `flag.CommandLine.Parse` is not checked (errcheck) flag.CommandLine.Parse([]string{}) ^ cmd/kube-router/kube-router.go:33:10: Error return value of `flag.Set` is not checked (errcheck) flag.Set("logtostderr", "true") ^ cmd/kube-router/kube-router.go:34:10: Error return value of `flag.Set` is not checked (errcheck) flag.Set("v", config.VLevel) ^ cmd/kube-router/kube-router.go:62:27: SA1006: printf-style function with dynamic format string and no further arguments should use print-style function instead (staticcheck) fmt.Fprintf(os.Stdout, http.ListenAndServe("0.0.0.0:6060", nil).Error()) ^ * kube-router_test: Lint cmd/kube-router/kube-router_test.go:21:10: Error return value of `io.Copy` is not checked (errcheck) io.Copy(stderrBuf, stderrR) ^ cmd/kube-router/kube-router_test.go:40:17: Error return value of `docBuf.ReadFrom` is not checked (errcheck) docBuf.ReadFrom(docF) ^ * service_endpoints_sync: Lint pkg/controllers/proxy/service_endpoints_sync.go:460:2: ineffectual assignment to `ipvsSvcs` (ineffassign) ipvsSvcs, err := nsc.ln.ipvsGetServices() ^ pkg/controllers/proxy/service_endpoints_sync.go:311:5: SA4006: this value of `err` is never used (staticcheck) err = nsc.ln.ipAddrDel(dummyVipInterface, externalIP) ^ * node: Lint pkg/utils/node.go:19:16: SA1019: clientset.Core is deprecated: please explicitly pick a version if possible. (staticcheck) node, err := clientset.Core().Nodes().Get(nodeName, metav1.GetOptions{}) ^ pkg/utils/node.go:27:15: SA1019: clientset.Core is deprecated: please explicitly pick a version if possible. (staticcheck) node, err := clientset.Core().Nodes().Get(hostName, metav1.GetOptions{}) ^ pkg/utils/node.go:34:15: SA1019: clientset.Core is deprecated: please explicitly pick a version if possible. (staticcheck) node, err = clientset.Core().Nodes().Get(hostnameOverride, metav1.GetOptions{}) ^ * aws: Lint pkg/controllers/routing/aws.go:31:8: SA4006: this value of `err` is never used (staticcheck) URL, err := url.Parse(providerID) ^ * health_controller: Lint pkg/healthcheck/health_controller.go:54:10: Error return value of `w.Write` is not checked (errcheck) w.Write([]byte("OK\n")) ^ pkg/healthcheck/health_controller.go:68:10: Error return value of `w.Write` is not checked (errcheck) w.Write([]byte("Unhealthy")) ^ pkg/healthcheck/health_controller.go:159:2: S1000: should use a simple channel send/receive instead of `select` with a single case (gosimple) select { ^ * network_routes_controller_test: Lint pkg/controllers/routing/network_routes_controller_test.go:1113:37: Error return value of `testcase.nrc.bgpServer.Stop` is not checked (errcheck) defer testcase.nrc.bgpServer.Stop() ^ pkg/controllers/routing/network_routes_controller_test.go:1314:37: Error return value of `testcase.nrc.bgpServer.Stop` is not checked (errcheck) defer testcase.nrc.bgpServer.Stop() ^ pkg/controllers/routing/network_routes_controller_test.go:2327:37: Error return value of `testcase.nrc.bgpServer.Stop` is not checked (errcheck) defer testcase.nrc.bgpServer.Stop() ^ * .golangci.yml: Increase timeout Default is 1m, increase to 5m otherwise travis might fail * Makefile: Update golangci-lint to 1.27.0 * kube-router_test.go: defer waitgroup Co-authored-by:
Aaron U'Ren <aauren@users.noreply.github.com> * network_routes_controller: Incorporate review * bgp_policies: Incorporate review * network_routes_controller: Incorporate review * bgp_policies: Log error instead * network_services_controller: Incorporate review Co-authored-by:
Aaron U'Ren <aauren@users.noreply.github.com>
-
- 01 Jun, 2020 1 commit
-
-
Daniel Sutton authored
Signed-off-by:
Daniel Sutton <daniel@ducksecops.uk>
-
- 25 May, 2020 1 commit
-
-
Aaron U'Ren authored
Before we used to raise an error when a node was missing an IP, but it turns out that this is not a required attribute of a node. And while it is rare that a node would be missing an IP address, a node doesn't require an IP address or a name or really much of anything in order to exist. This brings us to stronger conformance with the Kubernetes API and makes it so that kube-router logs errors rather than changing it's health status and potentially causing cascading failures across the fleet if a user adds a node like this.
-
- 24 May, 2020 1 commit
-
-
Aaron U'Ren authored
While rare that NodeName is missing it is not guaranteed to exist by the Kubernetes API (see link below). This retains checking via NodeName first if it exists, but if it's nil rather than segfaulting it evaluates the via IP address. Fixes #781 https://github.com/cloudnativelabs/kube-router/blob/master/vendor/k8s.io/api/core/v1/types.go#L3487
-
- 20 May, 2020 1 commit
-
-
Aaron U'Ren authored
* feat(gitignore): don't track intellij files * fact(network_policy): networkPoliciesInfo -> stack Take networkPoliciesInfo off of the npc struct and convert it to a stack variable that is easy to cleanup. * fix(network_policy): k8s obj memory accumulation Kubernetes informers will block on handler execution and will then begin to accumulate cached Kubernetes object information into the heap. This change moves the full sync logic into it's own goroutine where full syncs are triggered and gated via writing to a single item channel. This ensures that: - Syncs will only happen one at a time (as they are full syncs and we can't process multiple at once) - Sync requests are only ever delayed and never lost as they will be added to the request channel - After we make a sync request we return fast to ensure that the handler execution returns fast and that we don't block the Kubernetes informers * fact(network_policy): rework readyForUpdates Now that we are better managing requests for full syncs we no longer need to manage readyForUpdates on the npc controller. We already enforce not blocking the handlers and a single sync execution chain, whether it comes from the controller in the form of a periodic sync or whether it comes from a Kubernetes informer, either way the result is a non-blocking, single thread of execution, full sync. * fix(network_policy): address PR feedback
-
- 12 May, 2020 4 commits
-
-
Aaron U'Ren authored
Fix Network Policy Cleanup Code
-
Aaron U'Ren authored
Cleanup all primary chains, and not just FORWARD and INPUT. fixes #896
-
Aaron U'Ren authored
-
Christian Frantsen authored
-
- 07 May, 2020 1 commit
-
-
Manuel Rüger authored
* .goreleaser.yml: Multiarch build * Makefile: Record phony targets
-
- 04 May, 2020 3 commits
-
-
Aaron U'Ren authored
service proxy: ensure hearbeats are sent during sync
-
Murali Reddy authored
Fixes #879
-
Murali Reddy authored
(pod's traffic that is destined to node's local ip). with out this fix even with network policy to drop all egress traffic, pod can reach host IP's. Pod's can access any service hosted in host network as well
-
- 03 May, 2020 1 commit
-
-
Ryan Belgrave authored
* push multi-arch images to the dev registry * cleam things up with a array of arches * missed setting a GOARCH * put quotes and {} everywhere * one of these isn't a variable
-
- 02 May, 2020 1 commit
-
-
Murali Reddy authored
* nflog the packet that will be dropped by network policy enforcement that can be further by read by ulogd Fixes #505 * addressing review comments
-
- 26 Apr, 2020 4 commits
-
-
Aaron U'Ren authored
Fix for same issue as #750, but for network_routes_controller
-
Лач authored
-
Manuel Rüger authored
* Add multi-arch support for container images Currently we have a arch-specific binary that gets installed on an amd64 container. This change ensures that the container image matches the arch-specific binary. Using alpine archictecture-specific images as mentioned under https://hub.docker.com/_/alpine To support architectures different from host architecture, this uses qemu-static. * Lint Dockerfile Use COPY instead of ADD https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#add-or-copy
-
- 25 Apr, 2020 1 commit
-
-
Aaron U'Ren authored
Enabling --bgp-graceful-restart by default when the router component is deployed via daemonset
-
- 24 Apr, 2020 1 commit
-
-
Murali Reddy authored
used by iptables command when run by kube-router Fixes #506
-
- 23 Apr, 2020 4 commits
-
-
Vilmos Nebehaj authored
The behavior of iproute2 changed in 5.0 as described in #750: now if a table has not been created, `ip route list table <table>` will produce a non-zero exit code. It's not really needed to check tables via `list` anyway, since they will be created by iproute2 when needed on first use. So relax error handling for `ip route list table`, and remove it completely when a table might be missing. This fixes #750
-
bumyongchoi authored
* honor the ClientIP session affinity timeout * update moq file * Fix unit test failure due to adding a new arg to ipvsAddService Co-authored-by:
Bumyong Choi <bchoi@digitalocean.com>
-
Murali Reddy authored
-
Murali Reddy authored
withdraw external IP from advertisement only if the deleted service is the last service using external IP (#850) * withdraw external IP from advertisement only if the deleted service is the last service using external IP Fixes #828 * addressing review comment
-
- 21 Apr, 2020 1 commit
-
-
Filinto Duran authored
-------------------------------------------- Copyright: Sony Interactive Entertainment Inc. Co-authored-by:
Author Name <Filinto.Duran@sony.com>
-
- 15 Apr, 2020 1 commit
-
-
Murali Reddy authored
intercept pod egress traffic going through the OUTPUT chain of filter table and run through the (#875) network policies. Fixes #609
-
- 13 Apr, 2020 2 commits
-
-
Murali Reddy authored
* in DeleteFunc handlers across the controllers handle the case where received object can be of type DeletedFinalStateUnknown fixes one of the symptoms (panic on receiving DeletedFinalStateUnknown objects) reported in #712 * address review comments
-
Aaron U'Ren authored
While --set is still ambiguous it can clash with other module options, so it is better to be more specific and use the --match-set option. This also more closely aligns with all other areas of the code that already use --match-set. From iptables-extensions man page: The option --match-set can be replaced by --set if that does not clash with an option of other extensions.
-