65 Commits

Author SHA1 Message Date
Aaron U'Ren
62b30e380b
doc: add table of contents to long markdown files 2026-03-15 13:44:32 -05:00
Aaron U'Ren
2cc9b129f2
doc: correct spelling and grammar mistakes 2026-03-15 13:44:32 -05:00
Aaron U'Ren
8dc0500098
doc: update and modernize documentation 2026-03-11 14:34:25 -05:00
Aaron U'Ren
fef6c4f377 doc(user-guide.md): use obvious kubernetes master port 2026-01-11 18:09:06 -06:00
Aaron U'Ren
ec5c41db13 feat(markdown): update linter from 0.39.0 -> 0.45.0 2025-09-20 16:30:54 -05:00
Aaron U'Ren
d8cac914ab feat(options): allow disabling GoBGP grpc port 2025-03-30 19:40:16 -05:00
Aaron U'Ren
de3e2186a1 feat(options): add flag for GoBGP grpc port 2025-03-30 19:40:16 -05:00
Billie Cleek
c0fd658d4c docs: fix annotation casing 2024-05-18 20:18:58 -05:00
Billie Cleek
9741733cca docs: improve scheduler docs
Fix a broken link and edit for active voice.

Document how to configure a service to use the maglev scheduler.
2024-05-18 20:18:58 -05:00
Aaron U'Ren
e40f46edbf fix(user-guide.md): update cleanup example 2024-04-26 14:16:09 -05:00
Aaron U'Ren
dda7ce6182 doc(cni): CNI requirements and install process 2024-01-31 14:40:45 -06:00
Aaron U'Ren
98eea791d1 doc(user-guide.md): add info about traffic policies 2024-01-24 09:05:24 -08:00
Aaron U'Ren
ced5102d99 feat(NSC): add IPVS service timeouts
This is a feature that has been requested a few times over the years and
would bring us closer to feature parity with other k8s network
implementations for service proxy.
2023-12-26 14:26:11 -06:00
Jason Piper
fcf0ad913d prometheus metrics: add option to specify listen address
In the situation that you have multiple interfaces/IP addresses,
we want to be able to specify which one we want to expose the
prometheus metrics on.
2023-11-05 18:49:13 -06:00
Aaron U'Ren
9d6b647457
doc(user-guide): remove bootkube, add k3s
Bootkube has been deprecated upstream, so its likely a lot less relevant
than it used to be when this doc was created.

Add that k3s uses our network policy implementation.
2023-10-21 18:15:43 -05:00
Aaron U'Ren
dad4991d85 doc: update and format all documentation 2023-10-19 18:22:35 -05:00
Aaron U'Ren
644268961a doc(user-guide.md): update formatting 2023-10-19 16:51:21 -05:00
Erik Larsson
afdf553fa8 add loadbalancer address allocator
This adds a simple controller that will watch for services of type LoadBalancer
and try to allocated addresses from the specified IPv4 and/or IPv6 ranges.
It's assumed that kube-router (or another network controller) will announce the addresses.

As the controller uses leases for leader election and updates the service status new
RBAC permissions are required.
2023-10-07 08:52:31 -05:00
Aaron U'Ren
ddf857de3a doc(tunnel): add information about tunnels
* Reflow existing documentation to fit markdown standards
* Adds caveats about Azure
* Gives information about tunnel types in kube-router
2023-10-07 08:52:31 -05:00
Aaron U'Ren
bac4ae6299 fix(FoU): add docs, sanity checking, and logic reduction 2023-10-07 08:52:31 -05:00
Kartik Raval
6ce37e6167 Support for FoU encapsulation for IPIP tunnel 2023-10-07 08:52:31 -05:00
Erik Larsson
76ffcbdb13 add generation of router id based on hash of primary IP
When enabled, generate the router id by hashing the primary IP.
With this no explicit router id has to be provided on IPv6-only clusters.

Signed-off-by: Erik Larsson <who+github@cnackers.org>
2023-10-07 08:52:31 -05:00
Aaron U'Ren
b3e0768281 fix(options): make clusterIP specification similar to other options 2023-10-07 08:52:31 -05:00
Thomas Ferrandiz
6fea9c2d19 Validate that ClusterIP service range type matches the configuration
and update documentation
2023-10-07 08:52:31 -05:00
Thomas Ferrandiz
5b7da83c25 disable ipv6 by default 2023-10-07 08:52:31 -05:00
Michal Rostecki
5d04a9fd97 netpol: Add dual-stack support
This change allows to define two cluster CIDRs for compatibility with
Kubernetes dual-stack, with an assumption that two CIDRs are usually
IPv4 and IPv6.

Signed-off-by: Michal Rostecki <vadorovsky@gmail.com>
2023-10-07 08:52:31 -05:00
Aaron U'Ren
24f87340ff doc(user-guide.md): add info for netfilter tooling
Add warning about userspace netfilter tooling not staying in sync
between daemonset and the host's userspace.
2022-10-20 08:35:40 -05:00
Aaron U'Ren
4fd7bc4d19 fix(sync_routes): add deletion / immediate syncing
Added the following items to the original logic:
* Added map route entry deletion on withdrawl so that the system doesn't
  incorrectly sync it back to the kernel's routing table
* Added an immediate route sync upon BGP path receive
* Added a mutex to ensure that deleted routes aren't accidentally synced
  back to the system
* Added stopCh and wg (wait group) handling
* Increase default sync time from 15 seconds to 1 minute since this
  scenario is unlikely and netlink calls could potentially be burdensome
  in large clusters.
2022-03-18 15:02:02 -05:00
RusoX89
23ac78cf94 Routes Synchronization Routine 2022-03-18 15:02:02 -05:00
Aaron U'Ren
c5af115703 docs: clarify auto-mtu flag purpose 2022-02-11 17:34:10 -06:00
Aaron U'Ren
c3f90c54b3
Fix Misc DSR Issues (#1174)
* fact(NSC): consolidate constants to top

* fix(NSC): increase IPVS add service logging

* fix(NSC): improve logging for FWMark IPVS entries

* fix(NSC): add missing parameter to logging

* feat(NSC): generate unique FW marks

Because we trim the 32-bit FNV-1a hash to 16 bits there is the potential
for FW marks to collide with each other even for unique inputs of IP,
protocol, and port. This reduces that chance up to the 16-bit max by
keeping track of which FW marks we've already allocated and what IP,
protocol, port combo they've been allocated for.

Fixes #1045

* fact(NSC): move utility funcs to utils

* fix(NSC): reduce IPVS service shell outs

This also aligns it more with the almost identical function used for
non-FWmarked services ipvsAddService() which is also called from
setupExternalIPServices and passes in this same list of ipvsServices.

* fix(NSC): fix & consolidate DSR cleanup code

A lot of this is refactor work, but its important to know why the DSR
mangle tables were not being cleaned up in the first place. When we
transitioned to iptables-save to look over the mangle rules, we didn't
realize that iptables-save changes the format of the marks from integer
values (which is what the CLI works with) to hexadecimal.

This made it so that we were never actually matching on a mangle rule,
which left them all behind. When these mangle rules were left, it meant
that IPs that used to be part of a DSR service were essentially
black-holed on the system and were no longer route-able.

Fixes #1167

* doc(dsr): expand DSR documentation

fixes #1055

* ensure active service map is updated for non DSR services

Co-authored-by: Murali Reddy <muralimmreddy@gmail.com>
2021-10-14 16:14:05 +05:30
Aaron U'Ren
85f28411dc feat(.golangci.yml): enable long lines linter and remediate 2021-09-11 16:20:07 -05:00
Mikhail Sakhnov
0ad00df0ea Mention k0sproject in getting started guide
Signed-off-by: Mikhail Sakhnov <mikhail@skhnv.me>
2021-04-28 16:39:17 -05:00
Aaron U'Ren
d74f5c8ade doc(user-guide.md): clarify externalips hairpin option 2021-04-11 17:31:05 -05:00
Aurélien Dunand
5fc39db6a0 Add hairpin support for externalIps
Add an extra annotation for service in order to generate haipin related
iptables rules for externalsIps of the service.
2021-04-11 17:27:03 -05:00
ep4eg
ca2008e576
feat: simple CRI implementation in addition to Docker, required for DSR functionality. CRI compliant runtimes support (e.g. containerd, cri-o, etc.) (#1027)
* feat: simple CRI implementation in addition to Docker, required for DSR functionality. CRI compliant runtimes support (e.g. containerd, cri-o, etc.)

* upd: dependencies

* cleanup

* feat: cleanup gRPC connections after we did the job

* upd: go.sum
2021-02-08 20:04:13 +05:30
Murali Reddy
92b914e7fd review comments 2020-10-01 23:00:36 -05:00
Murali Reddy
7904b7c950 addressing review comments 2020-10-01 23:00:36 -05:00
Aaron U'Ren
824614d162
Add Support for Reading Peer Passwords via a File (#986)
* Add support for reading peer passwords via a file

Syntax of the file is the same as for --peer-router-passwords, that is,
a comma separated list of base64 encoded passwords.

Passwords specified with --peer-router-passwords have precedence over
passwords read from peer-router-passwords-file.

* fix(options): peer password file linting and doc

Co-authored-by: Jean Raby <jean@raby.sh>
2020-09-08 16:16:21 -05:00
Murali Reddy
3c734fb96a
merge gobgp-update into master (#982)
* merge gobgp-update into master

* update travis.yaml go version:

* go get github.com/osrg/gobgp to build gobgp

* install git as go get needs it
2020-09-07 10:27:58 +05:30
Aaron U'Ren
827ce5510a
Permit ExternalIP on input (#970)
* fact(network_policy): validate ClusterIP CIDR

Ensure that --service-cluster-ip-range is a valid CIDR while controller
is starting up.

* fix(network_policy): parse/validate NodePort

Validate the NodePort range that is passed and allow for it to be
specified with hyphens which is what the previous example used to show
and is more cohesive with the way NodePort ranges are specified when
passed to the kube-apiserver.

* test(network_policy): add tests for input validation

* feat(network_policy): permit ExternalIP on input

fixes #934

* fix(network_policy): ensure pos with index offset

Because iptables list function now appears to be returning -N and -P
items in the chain results, we need to account for them when taking into
consideration the rule position.

* fix(network_policy): add uuid to comments on ensure

iptables list is now no longer keeping the position of parameters which
means that we can't compare string to string. In absence of a better way
to handle this, this adds a UUID to the comment string which can then be
looked for when determining what position a rule occupies.
2020-08-25 21:27:35 +05:30
Aaron U'Ren
5ef989c4f9 fix(options): remove deprecated cluster-cidr option 2020-07-31 10:22:10 -05:00
CloudNativer
1c184624d1
The bgp-holdtime function parameter of setting holdtime is added to adjust the holdtime of BGP negotiation with the connected network devices. (#921)
The bgp-holdtime function parameter of setting holdtime is added to adjust the holdtime of BGP negotiation with the connected network devices.
2020-07-13 09:10:31 -05:00
Aaron U'Ren
b07f53f4b8 fix(graceful_restart): gofmt and doc fixes so unit tests pass 2020-07-10 16:26:54 -05:00
Aaron U'Ren
b7aad2e086
doc(user-guild.md): add info about proxy and SNAT (#935)
fixes #744
2020-06-26 10:57:13 +05:30
Murali Reddy
4d6b0b818f
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
2020-06-09 16:36:31 +05:30
Arthur Outhenin-Chalandre
97c682e6f2
Ignore deletion of unknown IPVS rules (#830)
* add a --excluded-cidrs
* ignore deletion of ipvs rules with address in excluded cidrs

Signed-off-by: Arthur Outhenin-Chalandre <arthur@cri.epita.fr>
2020-02-17 01:39:28 +05:30
Murali Reddy
53e0571c8c
fix broken CI (#823)
* fix broken CI

* fix .travis.yml

* skip gomoqs

* fix multi arch image building
2020-01-22 06:38:53 +05:30
Oleg
52e338d859 Add PriorityClass and docs update (#816)
Signed-off-by: Oleg Selin <oleg.selin@renhealth.com>
2019-12-05 23:26:03 +05:30
Aaron Layfield
05d03e7686 #797 Conditionally disable "Allow All" input/chain on IPVS KUBE-ROUTER-SERVICES (#809)
* Added flag and condition for open input on iptables #797

* Adding flag to docs.

* Updated to remove INPUT/CHAIN entirely. Name changed to IpvsDenyAll.

* Updated README.

* Updated docstring on ipvs-deny-all

* ipvsDenyAll -> ipvsPermitAll

* Updating user guide.

* Descriptions updates per review
2019-12-05 16:13:38 +05:30