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 {
|
if err != nil {
|
||||||
return nil, nil, err
|
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
|
specGen.SdNotifyMode = define.SdNotifyModeIgnore
|
||||||
rtSpec, spec, opts, err := generate.MakeContainer(ctx, ic.Libpod, specGen, false, nil)
|
rtSpec, spec, opts, err := generate.MakeContainer(ctx, ic.Libpod, specGen, false, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -792,7 +802,7 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
|
|||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
for _, w := range warn {
|
for _, w := range warn {
|
||||||
fmt.Fprintf(os.Stderr, "%s\n", w)
|
logrus.Warn(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
specGen.RawImageName = container.Image
|
specGen.RawImageName = container.Image
|
||||||
|
@ -2210,7 +2210,7 @@ var _ = Describe("Podman play kube", func() {
|
|||||||
// With annotation set to always
|
// With annotation set to always
|
||||||
It("podman play kube test with init containers and annotation set", func() {
|
It("podman play kube test with init containers and annotation set", func() {
|
||||||
// With the init container type annotation set to always
|
// 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)
|
err := generateKubeYaml("pod", pod, kubeYaml)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
@ -2233,6 +2233,12 @@ var _ = Describe("Podman play kube", func() {
|
|||||||
inspect.WaitWithDefaultTimeout()
|
inspect.WaitWithDefaultTimeout()
|
||||||
Expect(inspect).Should(Exit(0))
|
Expect(inspect).Should(Exit(0))
|
||||||
Expect(inspect.OutputToString()).To(ContainSubstring("running"))
|
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
|
// 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