mirror of
https://github.com/containers/podman.git
synced 2026-09-08 11:53:21 -04:00
Fix network mode in play kube
We need to use the config network mode when no network mode was set. To do so we have to keep the nsmode empty, MakeContainer() will use the correct network mode from the config when needed. Fixes #12248 Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
3 files changed
+31
-11
No files matched your search
@@ -12,7 +12,6 @@ import (
|
||||
"github.com/containers/podman/v3/libpod"
|
||||
"github.com/containers/podman/v3/libpod/define"
|
||||
"github.com/containers/podman/v3/pkg/domain/entities"
|
||||
"github.com/containers/podman/v3/pkg/rootless"
|
||||
"github.com/containers/podman/v3/pkg/specgen"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/sirupsen/logrus"
|
||||
@@ -216,15 +215,6 @@ func MapSpec(p *specgen.PodSpecGenerator) (*specgen.SpecGenerator, error) {
|
||||
logrus.Debugf("No networking because the infra container is missing")
|
||||
break
|
||||
}
|
||||
if rootless.IsRootless() {
|
||||
logrus.Debugf("Pod will use slirp4netns")
|
||||
if p.InfraContainerSpec.NetNS.NSMode != "host" {
|
||||
p.InfraContainerSpec.NetworkOptions = p.NetworkOptions
|
||||
p.InfraContainerSpec.NetNS.NSMode = specgen.NamespaceMode("slirp4netns")
|
||||
}
|
||||
} else {
|
||||
logrus.Debugf("Pod using bridge network mode")
|
||||
}
|
||||
case specgen.Bridge:
|
||||
p.InfraContainerSpec.NetNS.NSMode = specgen.Bridge
|
||||
logrus.Debugf("Pod using bridge network mode")
|
||||
@@ -258,7 +248,6 @@ func MapSpec(p *specgen.PodSpecGenerator) (*specgen.SpecGenerator, error) {
|
||||
return nil, errors.Errorf("pods presently do not support network mode %s", p.NetNS.NSMode)
|
||||
}
|
||||
|
||||
libpod.WithPodCgroups()
|
||||
if len(p.InfraCommand) > 0 {
|
||||
p.InfraContainerSpec.Entrypoint = p.InfraCommand
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[containers]
|
||||
|
||||
netns = "bridge"
|
||||
@@ -2786,6 +2786,34 @@ invalid kube kind
|
||||
Expect(exists).To(Exit(0))
|
||||
})
|
||||
|
||||
It("podman play kube use network mode from config", func() {
|
||||
confPath, err := filepath.Abs("config/containers-netns2.conf")
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
os.Setenv("CONTAINERS_CONF", confPath)
|
||||
defer os.Unsetenv("CONTAINERS_CONF")
|
||||
if IsRemote() {
|
||||
podmanTest.RestartRemoteService()
|
||||
}
|
||||
|
||||
pod := getPod()
|
||||
err = generateKubeYaml("pod", pod, kubeYaml)
|
||||
Expect(err).To(BeNil())
|
||||
|
||||
kube := podmanTest.Podman([]string{"play", "kube", kubeYaml})
|
||||
kube.WaitWithDefaultTimeout()
|
||||
Expect(kube).Should(Exit(0))
|
||||
|
||||
podInspect := podmanTest.Podman([]string{"pod", "inspect", pod.Name, "--format", "{{.InfraContainerID}}"})
|
||||
podInspect.WaitWithDefaultTimeout()
|
||||
Expect(podInspect).To(Exit(0))
|
||||
infraID := podInspect.OutputToString()
|
||||
|
||||
inspect := podmanTest.Podman([]string{"inspect", "--format", "{{.HostConfig.NetworkMode}}", infraID})
|
||||
inspect.WaitWithDefaultTimeout()
|
||||
Expect(inspect).To(Exit(0))
|
||||
Expect(inspect.OutputToString()).To(Equal("bridge"))
|
||||
})
|
||||
|
||||
It("podman play kube replace", func() {
|
||||
pod := getPod()
|
||||
err := generateKubeYaml("pod", pod, kubeYaml)
|
||||
|
||||
Reference in new issue
Block a user