<p>I'm using helm charts to deploy several REST services with into k8s with spring boot inside deployed container.</p>
<p>However, to be able to do final stage testing I need to introduce some sort of smart liveness probe - i.e. that the target application is actually running properly inside given container.</p>
<p>This can be easily justified by successful return code of simple <code>curl</code> command, however, here's the trick - command needs to be executed with some delay after particular release deployment to give application time to bootstrap.</p>
<p>Here's what I've figured for a test suite:</p>
<pre><code>apiVersion: v1
kind: Pod
metadata:
  name: &quot;{{ include &quot;chart.fullname&quot; . }}-test&quot;
  labels:
  {{- include &quot;chart.fullname&quot; . | nindent 4 }}
  annotations:
    &quot;helm.sh/hook&quot;: test-success
spec:
  containers:
    - name: test-curl
      image: curl
      command: ['curl']
      args: [' -X POST -i -H &quot;Accept: application/json&quot; -H &quot;Content-Type:application/json&quot; -d ''{&quot;foo&quot;:[&quot;bar&quot;]}'' {{ include &quot;chart.fullname&quot; . }}:{{ .Values.service.port }}']
  restartPolicy: Never
</code></pre>
<p>The key problem is that this test will be executed when service is not really started yet and thus fail anyway.</p>
<p>Is there some mechanism or workaround to introduce delay of execution for this test?</p>
<p>Setting some sleep step in separate test container comes to mind but i'm not sure if this will work properly for this case</p>

im_infamous
<p><code>curl</code> support retry the request via <code>--retry</code> flag. You can pass this flag in as command args. You can check more configurable options for retry from this thread: <a href="https://stackoverflow.com/a/42873372/7695859">https://stackoverflow.com/a/42873372/7695859</a></p>
