summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChen Zhiwei <zhiweik@gmail.com>2021-09-04 03:33:20 -0400
committerChen Zhiwei <zhiweik@gmail.com>2021-09-08 19:55:45 +0800
commita1cab358cc861862baab760120d8d91a937c46f2 (patch)
treefaca8e79f8a9805ebdd98e12986736759fac03d4
parente095667ac8c2ccaf06dea6d4c61f51d93b736968 (diff)
downloadpodman-a1cab358cc861862baab760120d8d91a937c46f2.tar.gz
podman-a1cab358cc861862baab760120d8d91a937c46f2.tar.bz2
podman-a1cab358cc861862baab760120d8d91a937c46f2.zip
fix play kube can't use infra_image in config file
Signed-off-by: Chen Zhiwei <zhiweik@gmail.com>
-rw-r--r--pkg/domain/infra/abi/play.go7
-rw-r--r--test/e2e/play_kube_test.go66
2 files changed, 68 insertions, 5 deletions
diff --git a/pkg/domain/infra/abi/play.go b/pkg/domain/infra/abi/play.go
index 2799df794..115a62d6b 100644
--- a/pkg/domain/infra/abi/play.go
+++ b/pkg/domain/infra/abi/play.go
@@ -267,12 +267,9 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
}
if podOpt.Infra {
- imagePull := config.DefaultInfraImage
- if podOpt.InfraImage != config.DefaultInfraImage && podOpt.InfraImage != "" {
- imagePull = podOpt.InfraImage
- }
+ containerConfig := util.DefaultContainerConfig()
- pulledImages, err := pullImage(ic, writer, imagePull, options, config.PullPolicyNewer)
+ pulledImages, err := pullImage(ic, writer, containerConfig.Engine.InfraImage, options, config.PullPolicyNewer)
if err != nil {
return nil, err
}
diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go
index ab496f0eb..48691488e 100644
--- a/test/e2e/play_kube_test.go
+++ b/test/e2e/play_kube_test.go
@@ -11,6 +11,7 @@ import (
"text/template"
"time"
+ "github.com/containers/common/pkg/config"
"github.com/containers/podman/v3/pkg/util"
. "github.com/containers/podman/v3/test/utils"
"github.com/containers/storage/pkg/stringid"
@@ -30,6 +31,22 @@ metadata:
spec:
hostname: unknown
`
+var checkInfraImagePodYaml = `
+apiVersion: v1
+kind: Pod
+metadata:
+ labels:
+ app: check-infra-image
+ name: check-infra-image
+spec:
+ containers:
+ - name: alpine
+ image: quay.io/libpod/alpine:latest
+ command:
+ - sleep
+ - 24h
+status: {}
+`
var sharedNamespacePodYaml = `
apiVersion: v1
kind: Pod
@@ -1098,6 +1115,55 @@ var _ = Describe("Podman play kube", func() {
Expect(label).To(ContainSubstring("unconfined_u:system_r:spc_t:s0"))
})
+ It("podman play kube should use default infra_image", func() {
+ err := writeYaml(checkInfraImagePodYaml, kubeYaml)
+ Expect(err).To(BeNil())
+
+ kube := podmanTest.Podman([]string{"play", "kube", kubeYaml})
+ kube.WaitWithDefaultTimeout()
+ Expect(kube).Should(Exit(0))
+
+ podInspect := podmanTest.Podman([]string{"inspect", "check-infra-image", "--format", "{{ .InfraContainerID }}"})
+ podInspect.WaitWithDefaultTimeout()
+ infraContainerID := podInspect.OutputToString()
+
+ conInspect := podmanTest.Podman([]string{"inspect", infraContainerID, "--format", "{{ .ImageName }}"})
+ conInspect.WaitWithDefaultTimeout()
+ infraContainerImage := conInspect.OutputToString()
+ Expect(infraContainerImage).To(Equal(config.DefaultInfraImage))
+ })
+
+ It("podman play kube should use customized infra_image", func() {
+ conffile := filepath.Join(podmanTest.TempDir, "container.conf")
+
+ infraImage := "k8s.gcr.io/pause:3.2"
+ err := ioutil.WriteFile(conffile, []byte(fmt.Sprintf("[engine]\ninfra_image=\"%s\"\n", infraImage)), 0644)
+ Expect(err).To(BeNil())
+
+ os.Setenv("CONTAINERS_CONF", conffile)
+ defer os.Unsetenv("CONTAINERS_CONF")
+
+ if IsRemote() {
+ podmanTest.RestartRemoteService()
+ }
+
+ err = writeYaml(checkInfraImagePodYaml, kubeYaml)
+ Expect(err).To(BeNil())
+
+ kube := podmanTest.Podman([]string{"play", "kube", kubeYaml})
+ kube.WaitWithDefaultTimeout()
+ Expect(kube).Should(Exit(0))
+
+ podInspect := podmanTest.Podman([]string{"inspect", "check-infra-image", "--format", "{{ .InfraContainerID }}"})
+ podInspect.WaitWithDefaultTimeout()
+ infraContainerID := podInspect.OutputToString()
+
+ conInspect := podmanTest.Podman([]string{"inspect", infraContainerID, "--format", "{{ .ImageName }}"})
+ conInspect.WaitWithDefaultTimeout()
+ infraContainerImage := conInspect.OutputToString()
+ Expect(infraContainerImage).To(Equal(infraImage))
+ })
+
It("podman play kube should share ipc,net,uts when shareProcessNamespace is set", func() {
SkipIfRootless("Requires root privileges for sharing few namespaces")
err := writeYaml(sharedNamespacePodYaml, kubeYaml)