Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion approvals/kir_test.TestKind.Pod.approved.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
nginx
gcr.io/google-containers/sidecar
gcr.io/google-containers/sidecar
busybox:1.28
4 changes: 4 additions & 0 deletions approvals/kir_test.TestKind.Pod.input.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@ spec:
- name: init-mysidecar
image: gcr.io/google-containers/sidecar
restartPolicy: Always
ephemeralContainers:
- name: debugger
image: busybox:1.28
targetContainerName: myapp
3 changes: 3 additions & 0 deletions k8s/k8s.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,8 @@ func GetContainersFromObject(obj interface{}) ([]corev1.Container, error) {
var containers []corev1.Container
containers = append(containers, podSpec.Containers...)
containers = append(containers, podSpec.InitContainers...)
for _, ec := range podSpec.EphemeralContainers {
containers = append(containers, corev1.Container(ec.EphemeralContainerCommon))
}
return containers, nil
}
27 changes: 27 additions & 0 deletions k8s/k8s_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,33 @@ func TestGetContainersFromObject(t *testing.T) {
},
wantErr: false,
},
{
name: "Pod with ephemeral container",
obj: &corev1.Pod{
Spec: corev1.PodSpec{
Containers: []corev1.Container{
{Name: "container1", Image: "image1"},
},
InitContainers: []corev1.Container{
{Name: "init-container1", Image: "init-image1"},
},
EphemeralContainers: []corev1.EphemeralContainer{
{
EphemeralContainerCommon: corev1.EphemeralContainerCommon{
Name: "debugger",
Image: "ephemeral-image1",
},
},
},
},
},
want: []corev1.Container{
{Name: "container1", Image: "image1"},
{Name: "init-container1", Image: "init-image1"},
{Name: "debugger", Image: "ephemeral-image1"},
},
wantErr: false,
},
{
name: "Invalid",
obj: "invalid",
Expand Down
36 changes: 36 additions & 0 deletions yamlparser/yamlparser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,39 @@ spec:
}
}
}

func TestProcessDataEphemeralContainers(t *testing.T) {
data := `
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-container
image: test-image
initContainers:
- name: init-container
image: init-image
ephemeralContainers:
- name: debugger
image: ephemeral-image
targetContainerName: test-container
`

images, err := ProcessData([]byte(data))
if err != nil {
t.Fatalf("ProcessData() error = %v", err)
}

expected := []string{"test-image", "init-image", "ephemeral-image"}
if len(images) != len(expected) {
t.Fatalf("expected %d images, got %d: %v", len(expected), len(images), images)
}

for i, img := range images {
if img != expected[i] {
t.Errorf("expected image %q, got %q", expected[i], img)
}
}
}
Loading