@@ -54,7 +54,8 @@ func baseJob() batchv1.Job {
5454 {
5555 Name : v1 .VersionProbeContainerName ,
5656 Image : "clickhouse/clickhouse-server:latest" ,
57- Command : []string {"sh" , "-c" , "clickhouse-server --version" },
57+ Command : []string {versionProbeBinary },
58+ Args : []string {"local" , "--query" , versionProbeQuery },
5859 SecurityContext : & corev1.SecurityContext {
5960 RunAsNonRoot : new (true ),
6061 },
@@ -189,7 +190,8 @@ var _ = Describe("patchResource with jobSchema (version probe overrides)", func(
189190
190191 By ("verifying container command is preserved" )
191192 Expect (container .Image ).To (Equal ("clickhouse/clickhouse-server:latest" ))
192- Expect (container .Command ).To (Equal ([]string {"sh" , "-c" , "clickhouse-server --version" }))
193+ Expect (container .Command ).To (Equal ([]string {versionProbeBinary }))
194+ Expect (container .Args ).To (Equal ([]string {"local" , "--query" , versionProbeQuery }))
193195 })
194196
195197 It ("should deep-merge securityContext via SMP" , func () {
@@ -311,7 +313,6 @@ func (f *fakeController) GetRecorder() events.EventRecorder { return f.recorder
311313// probeCfg returns a VersionProbeConfig with the given image and cache values.
312314func probeCfg (image , cachedVersion , cachedRevision string ) VersionProbeConfig {
313315 return VersionProbeConfig {
314- Binary : "clickhouse-server" ,
315316 ContainerTemplate : v1.ContainerTemplateSpec {
316317 Image : v1.ContainerImage {Repository : image , Tag : "latest" },
317318 },
@@ -320,6 +321,27 @@ func probeCfg(image, cachedVersion, cachedRevision string) VersionProbeConfig {
320321 }
321322}
322323
324+ var _ = Describe ("buildVersionProbeJob" , func () {
325+ It ("should use a shell-free ClickHouse local command for distroless images" , func () {
326+ rm , _ := setupProbeTest ()
327+ cfg := probeCfg ("clickhouse/clickhouse-server" , "" , "" )
328+
329+ revision , err := imageRevision (cfg )
330+ Expect (err ).NotTo (HaveOccurred ())
331+
332+ job , err := rm .buildVersionProbeJob (cfg , revision )
333+ Expect (err ).NotTo (HaveOccurred ())
334+
335+ container := job .Spec .Template .Spec .Containers [0 ]
336+
337+ Expect (container .Command ).To (Equal ([]string {versionProbeBinary }))
338+ Expect (container .Args ).To (Equal ([]string {"local" , "--query" , versionProbeQuery }))
339+ Expect (versionProbeQuery ).To (ContainSubstring (corev1 .TerminationMessagePathDefault ))
340+ Expect (container .TerminationMessagePath ).To (Equal (corev1 .TerminationMessagePathDefault ))
341+ Expect (container .TerminationMessagePolicy ).To (Equal (corev1 .TerminationMessageReadFile ))
342+ })
343+ })
344+
323345var _ = Describe ("VersionProbe caching" , func () {
324346 It ("should return cached version on cache hit without creating a Job" , func (ctx context.Context ) {
325347 rm , log := setupProbeTest ()
0 commit comments