<div dir="ltr"><div>We [1] have started work on implementing support for <a href="https://blueprints.launchpad.net/tripleo/+spec/container-healthchecks">https://blueprints.launchpad.net/tripleo/+spec/container-healthchecks</a> in tripleo-common.  I would like to describe the approach we're taking in the short term, as well as explore some ideas for longer-term implementations.</div><div><br></div><div>## Our current approach</div><div><br></div><div>We will be implementing service health checks in the 'healthcheck' directory of tripleo-common.  Once the checks are merged and available in distribution packages, we will then modify container-images/tripleo_kolla_template_overrides.j2 to activate specific checks for containerized services.  A typical modification would look something like:</div><div><br></div><div><div>  {% block nova_api_footer %}</div><div>  RUN install -D -m 755 /usr/share/tripleo-common/healthcheck/nova-api /openstack/healthcheck</div><div>  HEALTHCHECK CMD /openstack/healthcheck</div><div>  {% endblock %}</div></div><div><br></div><div>That copies the specific healthcheck command to /openstack/healthcheck, and then configures docker to run that check using the HEALTHCHECK directive.</div><div><br></div><div>This approach has the advantage of keeping all the development work within tripleo-common for now.</div><div><br></div><div>If you are unfamiliar with Docker's HEALTHCHECK feature:</div><div><br></div><div>Docker will run this command periodically inside the container, and will expose the status reported by the script (0 - healthy, 1 - unhealthy) via the Docker API.  This is visible in the output of 'docker ps', for example:</div><div><br></div><div>  $ docker ps</div><div>  ... STATUS ...</div><div>      Up 8 minutes (healthy)</div><div><br></div><div>Details at: <a href="https://docs.docker.com/engine/reference/builder/#healthchecDetails">https://docs.docker.com/engine/reference/builder/#healthchecDetails</a> at: </div><div><br></div><div>## Looking to the future</div><div><br></div><div>Our initial thought was that moving forward, these checks could be implemented through the Kolla project.  However, Martin André suggested (correctly) that these checks would also be of interest outside of Kolla.  The thought right now is that at some point in the future, we would split the checks out into a separate project to make them more generally consumable.</div><div><br></div><div>## Reviews</div><div><br></div><div>You can see the proposed changes here:</div><div><br></div><div>- <a href="https://review.openstack.org/#/q/topic:bp/container-healthchecks+is:open">https://review.openstack.org/#/q/topic:bp/container-healthchecks+is:open</a><br></div><div><br></div><div>Specifically, the initial framework is provided in:</div><div><br></div><div>- <a href="https://review.openstack.org/#/c/483081/">https://review.openstack.org/#/c/483081/</a></div><div><br></div><div>And an initial set of checks is in:</div><div><br></div><div>- <a href="https://review.openstack.org/#/c/483104/">https://review.openstack.org/#/c/483104/</a></div><div><br></div><div>Please feel to review and comment. While we are reasonably happy with the solution proposed in this email, we are open to improvements.  Thanks for your input!</div><div><br></div><div>[1] Initially, Dan Prince, Ian Main, Martin Mágr, Lars Kellogg-Stedman</div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Lars Kellogg-Stedman <<a href="mailto:lars@redhat.com" target="_blank">lars@redhat.com</a>><div><br></div></div></div>
</div>