lifecycle
Description
lifecycle allows scripts to be executed after starting and before stopping the DataPower container. For more details on container lifecycle hooks, please refer to the following Kubernetes documentation:
Delaying SIGTERM with preStop
When the DataPower container is terminated by Kubernetes under normal conditions (such as a scaling event or rolling update), any in-flight transactions may be terminated. The use of the preStop lifecycle hook can help to mitigate
this by delaying the SIGTERM being sent to the container. For example, a 20 second delay in the below example would delay the shutdown by 20 seconds giving in-flight transactions on the gateway that much time to complete successfully
before being terminated.
spec:
lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 20"]
Note The preStop handler should complete within terminationGracePeriodSeconds, which by default is 30 seconds. Otherwise it will not prevent the TERM signal being sent to the DataPower
container. Thus it is not recommended to exceed sleep 30. See the Kubernetes documentation on termination of Pods for a deeper understanding
of this lifecycle.
Example
apiVersion: datapower.ibm.com/v1beta2
kind: DataPowerService
metadata:
name: example-dpservice
spec:
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo Hello from the postStart handler >> ~/lifecycle.log"]
preStop:
exec:
command: ["/bin/sh", "-c", "echo Hello from the preStop handler >> ~/lifecycle.log"]