diff --git a/plugins/kubernetes/README.md b/plugins/kubernetes/README.md index 74d7d0927..7644e6a56 100644 --- a/plugins/kubernetes/README.md +++ b/plugins/kubernetes/README.md @@ -222,7 +222,7 @@ To make Samson leave your resource name alone, set `metadata.annotations.samson/ When not using kubernetes services to route requests, requests can be lost during a deployment, since old pods shut down before everyone all clients are refreshed. -To prevent this, samson can automatically add `container[].lifecycle.preStop` `/bin/sleep ` +To prevent this, samson can automatically add `container[].lifecycle.preStop.sleep.seconds: ` and increase the `spec.terminationGracePeriodSeconds` if necessary. (will only add if `preStop` hook is not set and pod `metadata.annotations.container-nameofcontainer-samson/preStop` is not set to `disabled` and container has ports) diff --git a/plugins/kubernetes/app/models/kubernetes/template_filler.rb b/plugins/kubernetes/app/models/kubernetes/template_filler.rb index 7cebcbd7a..2fab6698f 100644 --- a/plugins/kubernetes/app/models/kubernetes/template_filler.rb +++ b/plugins/kubernetes/app/models/kubernetes/template_filler.rb @@ -643,7 +643,7 @@ def set_pre_stop # add prestop sleep sleep_time = Integer(ENV['KUBERNETES_PRESTOP_SLEEP_DURATION'] || '3') containers.each do |container| - (container[:lifecycle] ||= {})[:preStop] = {exec: {command: ["/bin/sleep", sleep_time.to_s]}} + (container[:lifecycle] ||= {})[:preStop] = {sleep: {seconds: sleep_time}} end # shut down after prestop sleeping is done diff --git a/plugins/kubernetes/test/models/kubernetes/template_filler_test.rb b/plugins/kubernetes/test/models/kubernetes/template_filler_test.rb index ae94dda68..589ce2acc 100644 --- a/plugins/kubernetes/test/models/kubernetes/template_filler_test.rb +++ b/plugins/kubernetes/test/models/kubernetes/template_filler_test.rb @@ -904,7 +904,7 @@ def lifecycle_defined? it "adds preStop to avoid 502 errors when server addresses are cached for a few seconds" do template.to_hash.dig_fetch(:spec, :template, :spec, :containers, 0, :lifecycle).must_equal( - preStop: {exec: {command: ["/bin/sleep", "3"]}} + preStop: {sleep: {seconds: 3}} ) end