Skip to content

Commit 086e308

Browse files
authored
Merge pull request #382 from devtron-labs/feat-native-sidecar-support
feat: add native sidecar container support in resource tree calls
2 parents fc73a0c + 89c5193 commit 086e308

7 files changed

Lines changed: 61 additions & 5 deletions

File tree

common-lib/utils/k8s/health/health_pod.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,20 @@ func getCorev1PodHealth(pod *corev1.Pod) (*HealthStatus, error) {
6161
}
6262
}
6363

64+
for i, cs := range pod.Status.InitContainerStatuses {
65+
if i < len(pod.Spec.InitContainers) &&
66+
pod.Spec.InitContainers[i].RestartPolicy != nil &&
67+
*pod.Spec.InitContainers[i].RestartPolicy == corev1.ContainerRestartPolicyAlways {
68+
waiting := cs.State.Waiting
69+
if waiting != nil && (strings.HasPrefix(waiting.Reason, "Err") ||
70+
strings.HasSuffix(waiting.Reason, "Error") ||
71+
strings.HasSuffix(waiting.Reason, "BackOff")) {
72+
status = HealthStatusDegraded
73+
messages = append(messages, waiting.Message)
74+
}
75+
}
76+
}
77+
6478
if status != "" {
6579
return &HealthStatus{
6680
Status: status,

common-lib/utils/k8sObjectsUtil/ResourceTreeUtil.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@ func PopulatePodInfo(un *unstructured.Unstructured) ([]commonBean.InfoItem, erro
217217

218218
initializing := false
219219
for i := range pod.Status.InitContainerStatuses {
220+
if pod.Spec.InitContainers[i].RestartPolicy != nil &&
221+
*pod.Spec.InitContainers[i].RestartPolicy == v1.ContainerRestartPolicyAlways {
222+
continue // native sidecar — not a blocking init container
223+
}
220224
container := pod.Status.InitContainerStatuses[i]
221225
restarts += int(container.RestartCount)
222226
switch {
@@ -243,6 +247,16 @@ func PopulatePodInfo(un *unstructured.Unstructured) ([]commonBean.InfoItem, erro
243247
}
244248
break
245249
}
250+
for i, cs := range pod.Status.InitContainerStatuses {
251+
if pod.Spec.InitContainers[i].RestartPolicy != nil &&
252+
*pod.Spec.InitContainers[i].RestartPolicy == v1.ContainerRestartPolicyAlways {
253+
totalContainers++
254+
restarts += int(cs.RestartCount)
255+
if cs.Ready && cs.State.Running != nil {
256+
readyContainers++
257+
}
258+
}
259+
}
246260
if !initializing {
247261
restarts = 0
248262
hasRunning := false

kubelink/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,4 @@ require (
168168
sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect
169169
)
170170

171-
replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260227055702-7fe9d47354a0
171+
replace github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260402084407-a92702e8f0ff

kubelink/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
6565
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6666
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
6767
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
68-
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260227055702-7fe9d47354a0 h1:KnmMU3qEy/QRtEJaUQNnXvCrintij+BYhOJtw+OjxYw=
69-
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260227055702-7fe9d47354a0/go.mod h1:d6awSGcXQc57s4PJlwcyACovJ4PgBmR9jZJ7h6CScUM=
68+
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260402084407-a92702e8f0ff h1:bn6Z1AlHMd8+gBZjMCHr0kE7a+QKL3ZPTlsP3rT5vp8=
69+
github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260402084407-a92702e8f0ff/go.mod h1:d6awSGcXQc57s4PJlwcyACovJ4PgBmR9jZJ7h6CScUM=
7070
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
7171
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
7272
github.com/distribution/distribution/v3 v3.0.0 h1:q4R8wemdRQDClzoNNStftB2ZAfqOiN6UX90KJc4HjyM=

kubelink/vendor/github.com/devtron-labs/common-lib/utils/k8s/health/health_pod.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

kubelink/vendor/github.com/devtron-labs/common-lib/utils/k8sObjectsUtil/ResourceTreeUtil.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

kubelink/vendor/modules.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ github.com/cyphar/filepath-securejoin
125125
# github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
126126
## explicit
127127
github.com/davecgh/go-spew/spew
128-
# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260227055702-7fe9d47354a0
128+
# github.com/devtron-labs/common-lib v0.0.0 => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260402084407-a92702e8f0ff
129129
## explicit; go 1.24.0
130130
github.com/devtron-labs/common-lib/async
131131
github.com/devtron-labs/common-lib/constants
@@ -1403,4 +1403,4 @@ sigs.k8s.io/structured-merge-diff/v4/value
14031403
sigs.k8s.io/yaml
14041404
sigs.k8s.io/yaml/goyaml.v2
14051405
sigs.k8s.io/yaml/goyaml.v3
1406-
# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260227055702-7fe9d47354a0
1406+
# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20260402084407-a92702e8f0ff

0 commit comments

Comments
 (0)