mirror of
https://github.com/containers/podman.git
synced 2025-06-24 03:08:13 +08:00
Merge pull request #18385 from dcermak/setup-env-in-init-containers
Run generate.CompleteSpec() for initContainers as well
This commit is contained in:
@ -727,6 +727,16 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
// ensure the environment is setup for initContainers as well: https://github.com/containers/podman/issues/18384
|
||||
warn, err := generate.CompleteSpec(ctx, ic.Libpod, specGen)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
for _, w := range warn {
|
||||
logrus.Warn(w)
|
||||
}
|
||||
|
||||
specGen.SdNotifyMode = define.SdNotifyModeIgnore
|
||||
rtSpec, spec, opts, err := generate.MakeContainer(ctx, ic.Libpod, specGen, false, nil)
|
||||
if err != nil {
|
||||
@ -792,7 +802,7 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
|
||||
return nil, nil, err
|
||||
}
|
||||
for _, w := range warn {
|
||||
fmt.Fprintf(os.Stderr, "%s\n", w)
|
||||
logrus.Warn(w)
|
||||
}
|
||||
|
||||
specGen.RawImageName = container.Image
|
||||
|
@ -2210,7 +2210,7 @@ var _ = Describe("Podman play kube", func() {
|
||||
// With annotation set to always
|
||||
It("podman play kube test with init containers and annotation set", func() {
|
||||
// With the init container type annotation set to always
|
||||
pod := getPod(withAnnotation("io.podman.annotations.init.container.type", "always"), withPodInitCtr(getCtr(withImage(ALPINE), withCmd([]string{"echo", "hello"}), withInitCtr(), withName("init-test"))), withCtr(getCtr(withImage(ALPINE), withCmd([]string{"top"}))))
|
||||
pod := getPod(withAnnotation("io.podman.annotations.init.container.type", "always"), withPodInitCtr(getCtr(withImage(ALPINE), withCmd([]string{"printenv", "container"}), withInitCtr(), withName("init-test"))), withCtr(getCtr(withImage(ALPINE), withCmd([]string{"top"}))))
|
||||
err := generateKubeYaml("pod", pod, kubeYaml)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
@ -2233,6 +2233,12 @@ var _ = Describe("Podman play kube", func() {
|
||||
inspect.WaitWithDefaultTimeout()
|
||||
Expect(inspect).Should(Exit(0))
|
||||
Expect(inspect.OutputToString()).To(ContainSubstring("running"))
|
||||
|
||||
// Init containers need environment too! #18384
|
||||
logs := podmanTest.Podman([]string{"logs", "testPod-init-test"})
|
||||
logs.WaitWithDefaultTimeout()
|
||||
Expect(logs).Should(Exit(0))
|
||||
Expect(logs.OutputToString()).To(Equal("podman"))
|
||||
})
|
||||
|
||||
// If you have an init container in the pod yaml, podman should create and run the init container with play kube
|
||||
|
Reference in New Issue
Block a user