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"]