From 4feb561614d014392d90fd3f84a25ebd9242b91f Mon Sep 17 00:00:00 2001 From: Joshua Schmid Date: Wed, 17 Jan 2024 14:10:17 +0100 Subject: [PATCH] feat(conf): enable `reuseport` on all listeners Signed-off-by: Joshua Schmid --- changelog/unreleased/kong/feat-reuseport-on-listeners.yml | 3 +++ kong.conf.default | 6 +++--- kong/templates/kong_defaults.lua | 4 ++-- spec/01-unit/03-conf_loader_spec.lua | 7 ++++--- 4 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 changelog/unreleased/kong/feat-reuseport-on-listeners.yml diff --git a/changelog/unreleased/kong/feat-reuseport-on-listeners.yml b/changelog/unreleased/kong/feat-reuseport-on-listeners.yml new file mode 100644 index 000000000000..585e76a7527a --- /dev/null +++ b/changelog/unreleased/kong/feat-reuseport-on-listeners.yml @@ -0,0 +1,3 @@ +message: add `reuseport` option to listeners +type: feature +scope: Configuration diff --git a/kong.conf.default b/kong.conf.default index 18c578403b49..6c84c1d6bd04 100644 --- a/kong.conf.default +++ b/kong.conf.default @@ -427,7 +427,7 @@ # HYBRID MODE CONTROL PLANE #------------------------------------------------------------------------------ -#cluster_listen = 0.0.0.0:8005 +#cluster_listen = 0.0.0.0:8005 reuseport # Comma-separated list of addresses and ports on # which the cluster control plane server should listen # for data plane connections. @@ -731,7 +731,7 @@ #mem_cache_size = 128m # Size of each of the two shared memory caches # for traditional mode database entities - # and runtime data, `kong_core_cache` and + # and runtime data, `kong_core_cache` and # `kong_cache`. # # The accepted units are `k` and `m`, with a minimum @@ -1910,7 +1910,7 @@ # The Admin GUI for Kong Gateway. -#admin_gui_listen = 0.0.0.0:8002, 0.0.0.0:8445 ssl +#admin_gui_listen = 0.0.0.0:8002 reuseport, 0.0.0.0:8445 ssl reuseport # Kong Manager Listeners # # Comma-separated list of addresses and ports on which diff --git a/kong/templates/kong_defaults.lua b/kong/templates/kong_defaults.lua index 2c0802bc72af..58d87110c38f 100644 --- a/kong/templates/kong_defaults.lua +++ b/kong/templates/kong_defaults.lua @@ -27,9 +27,9 @@ node_id = NONE proxy_listen = 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuseport backlog=16384 stream_listen = off admin_listen = 127.0.0.1:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384 -admin_gui_listen = 0.0.0.0:8002, 0.0.0.0:8445 ssl +admin_gui_listen = 0.0.0.0:8002 reuseport, 0.0.0.0:8445 ssl reuseport status_listen = 127.0.0.1:8007 reuseport backlog=16384 -cluster_listen = 0.0.0.0:8005 +cluster_listen = 0.0.0.0:8005 reuseport cluster_control_plane = 127.0.0.1:8005 cluster_cert = NONE cluster_cert_key = NONE diff --git a/spec/01-unit/03-conf_loader_spec.lua b/spec/01-unit/03-conf_loader_spec.lua index c51b9b46a618..e28f71d3e1fa 100644 --- a/spec/01-unit/03-conf_loader_spec.lua +++ b/spec/01-unit/03-conf_loader_spec.lua @@ -58,7 +58,8 @@ describe("Configuration loader", function() assert.equal("eventual", conf.worker_consistency) assert.same({"127.0.0.1:8001 reuseport backlog=16384", "127.0.0.1:8444 http2 ssl reuseport backlog=16384"}, conf.admin_listen) assert.same({"0.0.0.0:8000 reuseport backlog=16384", "0.0.0.0:8443 http2 ssl reuseport backlog=16384"}, conf.proxy_listen) - assert.same({"0.0.0.0:8002", "0.0.0.0:8445 ssl"}, conf.admin_gui_listen) + assert.same({"0.0.0.0:8002 reuseport", "0.0.0.0:8445 ssl reuseport"}, conf.admin_gui_listen) + assert.same({"0.0.0.0:8005 reuseport"}, conf.cluster_listen) assert.equal("/", conf.admin_gui_path) assert.equal("logs/admin_gui_access.log", conf.admin_gui_access_log) assert.equal("logs/admin_gui_error.log", conf.admin_gui_error_log) @@ -175,13 +176,13 @@ describe("Configuration loader", function() assert.equal(8002, conf.admin_gui_listeners[1].port) assert.equal(false, conf.admin_gui_listeners[1].ssl) assert.equal(false, conf.admin_gui_listeners[1].http2) - assert.equal("0.0.0.0:8002", conf.admin_gui_listeners[1].listener) + assert.equal("0.0.0.0:8002 reuseport", conf.admin_gui_listeners[1].listener) assert.equal("0.0.0.0", conf.admin_gui_listeners[2].ip) assert.equal(8445, conf.admin_gui_listeners[2].port) assert.equal(true, conf.admin_gui_listeners[2].ssl) assert.equal(false, conf.admin_gui_listeners[2].http2) - assert.equal("0.0.0.0:8445 ssl", conf.admin_gui_listeners[2].listener) + assert.equal("0.0.0.0:8445 ssl reuseport", conf.admin_gui_listeners[2].listener) assert.equal("0.0.0.0", conf.proxy_listeners[1].ip) assert.equal(8000, conf.proxy_listeners[1].port)