diff --git a/lib/kubeclient.rb b/lib/kubeclient.rb index a9edb2fc..0fe4149c 100644 --- a/lib/kubeclient.rb +++ b/lib/kubeclient.rb @@ -53,6 +53,7 @@ class Client DEFAULT_HTTP_PROXY_URI = nil DEFAULT_HTTP_MAX_REDIRECTS = 10 + DEFAULT_KEEP_ALIVE_TIMEOUT = 60 SEARCH_ARGUMENTS = { 'labelSelector' => :label_selector, @@ -73,6 +74,7 @@ class Client attr_reader :auth_options attr_reader :http_proxy_uri attr_reader :http_max_redirects + attr_reader :keep_alive_timeout attr_reader :headers attr_reader :discovered @@ -102,6 +104,7 @@ def initialize_client( timeouts: DEFAULT_TIMEOUTS, http_proxy_uri: DEFAULT_HTTP_PROXY_URI, http_max_redirects: DEFAULT_HTTP_MAX_REDIRECTS, + keep_alive_timeout: DEFAULT_KEEP_ALIVE_TIMEOUT, as: :ros ) validate_auth_options(auth_options) @@ -119,6 +122,7 @@ def initialize_client( @timeouts = DEFAULT_TIMEOUTS.merge(timeouts) @http_proxy_uri = http_proxy_uri ? http_proxy_uri.to_s : nil @http_max_redirects = http_max_redirects + @keep_alive_timeout = keep_alive_timeout @as = as if auth_options[:bearer_token] @@ -283,6 +287,7 @@ def define_entity_methods # This method used to take resource_version as a param, so # this conversion is to keep backwards compatibility options = { resource_version: options } unless options.is_a?(Hash) + options[timeoutSeconds] = 380 # 6 mins 20 seconds watch_entities(entity.resource_name, options, &block) end diff --git a/lib/kubeclient/informer.rb b/lib/kubeclient/informer.rb index b94c0b9c..6dbe2173 100644 --- a/lib/kubeclient/informer.rb +++ b/lib/kubeclient/informer.rb @@ -65,7 +65,7 @@ def fill_cache end def watch_to_update_cache - watcher = @client.watch_entities(@resource_name, watch: true, resource_version: @started) + watcher = @client.watch_entities(@resource_name, watch: true, resource_version: @started, timeoutSeconds: 380) stop_reason = 'disconnect' # stop watcher without using timeout diff --git a/lib/kubeclient/watch_stream.rb b/lib/kubeclient/watch_stream.rb index aa43b5c9..1ffab824 100644 --- a/lib/kubeclient/watch_stream.rb +++ b/lib/kubeclient/watch_stream.rb @@ -11,6 +11,7 @@ def initialize(uri, http_options, formatter:) @http_client = nil @http_options = http_options @http_options[:http_max_redirects] ||= Kubeclient::Client::DEFAULT_HTTP_MAX_REDIRECTS + @http_options[:keep_alive_timeout] ||= Kubeclient::Client::DEFAULT_KEEP_ALIVE_TIMEOUT @formatter = formatter end