From a649f641009b38b6b7434a513e97b577ddfcd0b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Han?= Date: Thu, 23 Sep 2021 15:31:17 +0200 Subject: [PATCH] ceph: add signal handling for log collector MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The log collector was not responding to SIGINT or SIGTERM correctly since the parent bash process did not have the job control functionality enabled. Now any signal received on bash will exit the container immediately. Signed-off-by: Sébastien Han --- pkg/operator/ceph/controller/spec.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/operator/ceph/controller/spec.go b/pkg/operator/ceph/controller/spec.go index 8e58b752fd56..e8410bfb2676 100644 --- a/pkg/operator/ceph/controller/spec.go +++ b/pkg/operator/ceph/controller/spec.go @@ -66,8 +66,6 @@ var logger = capnslog.NewPackageLogger("github.com/rook/rook", "ceph-spec") var ( cronLogRotate = ` -set -xe - CEPH_CLIENT_ID=%s PERIODICITY=%s LOG_ROTATE_CEPH_FILE=/etc/logrotate.d/ceph @@ -624,13 +622,18 @@ func LogCollectorContainer(daemonID, ns string, c cephv1.ClusterSpec) *v1.Contai Name: logCollector, Command: []string{ "/bin/bash", - "-c", + "-x", // Print commands and their arguments as they are executed + "-e", // Exit immediately if a command exits with a non-zero status. + "-m", // Terminal job control, allows job to be terminated by SIGTERM + "-c", // Command to run fmt.Sprintf(cronLogRotate, daemonID, c.LogCollector.Periodicity), }, Image: c.CephVersion.Image, VolumeMounts: DaemonVolumeMounts(config.NewDatalessDaemonDataPathMap(ns, c.DataDirHostPath), ""), SecurityContext: PodSecurityContext(), Resources: cephv1.GetLogCollectorResources(c.Resources), + // We need a TTY for the bash job control (enabled by -m) + TTY: true, } }