Skip to content

Commit d82f6de

Browse files
authored
Merge pull request rook#16584 from subhamkrai/ceph-exporter-logcollector
exporter: add log collector for ceph exporter pod
2 parents b87f9d2 + 201f6ae commit d82f6de

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)