Skip to content

Commit 201f6ae

Browse files
committed
exporter: add log collector for ceph exporter pod
similar to other ceph pods like osd,mon,mgr,mirror pod this commit add log collector container to the main exporter pod to rotate the logs of exporter pod. Signed-off-by: subhamkrai <srai@redhat.com>
1 parent fa4557a commit 201f6ae

2 files changed

Lines changed: 66 additions & 0 deletions

File tree

pkg/operator/ceph/cluster/nodedaemon/exporter.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,14 @@ func (r *ReconcileNode) createOrUpdateCephExporter(node corev1.Node, tolerations
146146
ServiceAccountName: k8sutil.DefaultServiceAccount,
147147
},
148148
}
149+
150+
// If the log collector is enabled we add the side-car container
151+
if cephCluster.Spec.LogCollector.Enabled {
152+
shareProcessNamespace := true
153+
deploy.Spec.Template.Spec.ShareProcessNamespace = &shareProcessNamespace
154+
deploy.Spec.Template.Spec.Containers = append(deploy.Spec.Template.Spec.Containers, *controller.LogCollectorContainer("ceph-client.ceph-exporter", cephCluster.GetNamespace(), cephCluster.Spec, nil))
155+
}
156+
149157
cephv1.GetCephExporterAnnotations(cephCluster.Spec.Annotations).ApplyToObjectMeta(&deploy.Spec.Template.ObjectMeta)
150158
applyPrometheusAnnotations(cephCluster, &deploy.Spec.Template.ObjectMeta)
151159

pkg/operator/ceph/cluster/nodedaemon/exporter_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,64 @@ func TestCreateOrUpdateCephExporter(t *testing.T) {
146146
})
147147
}
148148

149+
func TestCephExporterLogrotateContainer(t *testing.T) {
150+
cephCluster := &cephv1.CephCluster{
151+
ObjectMeta: metav1.ObjectMeta{
152+
Name: "test-cluster",
153+
Namespace: "test-namespace",
154+
},
155+
Spec: cephv1.ClusterSpec{
156+
LogCollector: cephv1.LogCollectorSpec{
157+
Enabled: true,
158+
},
159+
},
160+
}
161+
162+
node := corev1.Node{}
163+
nodeSelector := map[string]string{corev1.LabelHostname: "testnode"}
164+
node.SetLabels(nodeSelector)
165+
166+
cephVersion := &cephver.CephVersion{Major: 18, Minor: 0, Extra: 0}
167+
168+
s := scheme.Scheme
169+
err := appsv1.AddToScheme(s)
170+
assert.NoError(t, err)
171+
172+
cl := fake.NewClientBuilder().WithScheme(s).Build()
173+
174+
reconciler := &ReconcileNode{
175+
client: cl,
176+
scheme: s,
177+
context: &clusterd.Context{},
178+
opManagerContext: context.TODO(),
179+
}
180+
181+
result, err := reconciler.createOrUpdateCephExporter(node, []corev1.Toleration{}, *cephCluster, cephVersion)
182+
assert.NoError(t, err)
183+
assert.Equal(t, controllerutil.OperationResultCreated, result)
184+
185+
deployment := &appsv1.Deployment{}
186+
err = cl.Get(context.TODO(), types.NamespacedName{
187+
Name: "rook-ceph-exporter-testnode",
188+
Namespace: "test-namespace",
189+
}, deployment)
190+
assert.NoError(t, err)
191+
192+
// Check logrotate container is added
193+
assert.Len(t, deployment.Spec.Template.Spec.Containers, 2)
194+
195+
var logrotateContainer *corev1.Container
196+
for _, container := range deployment.Spec.Template.Spec.Containers {
197+
if container.Name == "log-collector" {
198+
logrotateContainer = &container
199+
break
200+
}
201+
}
202+
// Verify logrotate container configuration
203+
assert.NotNil(t, logrotateContainer)
204+
assert.Contains(t, logrotateContainer.Command[5], "ceph-client.ceph-exporter")
205+
}
206+
149207
func TestCephExporterBindAddress(t *testing.T) {
150208
prioLimit, statsPeriod := defaultPrioLimit, defaultStatsPeriod
151209
prioLimitString, err := strconv.ParseInt(prioLimit, 10, 64)

0 commit comments

Comments
 (0)