mirror of
https://github.com/containers/podman.git
synced 2025-06-15 13:48:29 +08:00
fix podman generate kube with HostAliases
Signed-off-by: zhangguanzhang <zhangguanzhang@qq.com>
This commit is contained in:
@ -48,12 +48,22 @@ func (p *Pod) GenerateForKube() (*v1.Pod, []v1.ServicePort, error) {
|
|||||||
return nil, servicePorts, errors.Errorf("pod %s only has an infra container", p.ID())
|
return nil, servicePorts, errors.Errorf("pod %s only has an infra container", p.ID())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extraHost := make([]v1.HostAlias, 0)
|
||||||
if p.HasInfraContainer() {
|
if p.HasInfraContainer() {
|
||||||
infraContainer, err := p.getInfraContainer()
|
infraContainer, err := p.getInfraContainer()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, servicePorts, err
|
return nil, servicePorts, err
|
||||||
}
|
}
|
||||||
|
for _, host := range infraContainer.config.ContainerNetworkConfig.HostAdd {
|
||||||
|
hostSli := strings.SplitN(host, ":", 2)
|
||||||
|
if len(hostSli) != 2 {
|
||||||
|
return nil, servicePorts, errors.New("invalid hostAdd")
|
||||||
|
}
|
||||||
|
extraHost = append(extraHost, v1.HostAlias{
|
||||||
|
IP: hostSli[1],
|
||||||
|
Hostnames: []string{hostSli[0]},
|
||||||
|
})
|
||||||
|
}
|
||||||
ports, err = ocicniPortMappingToContainerPort(infraContainer.config.PortMappings)
|
ports, err = ocicniPortMappingToContainerPort(infraContainer.config.PortMappings)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, servicePorts, err
|
return nil, servicePorts, err
|
||||||
@ -61,7 +71,11 @@ func (p *Pod) GenerateForKube() (*v1.Pod, []v1.ServicePort, error) {
|
|||||||
servicePorts = containerPortsToServicePorts(ports)
|
servicePorts = containerPortsToServicePorts(ports)
|
||||||
}
|
}
|
||||||
pod, err := p.podWithContainers(allContainers, ports)
|
pod, err := p.podWithContainers(allContainers, ports)
|
||||||
return pod, servicePorts, err
|
if err != nil {
|
||||||
|
return nil, servicePorts, err
|
||||||
|
}
|
||||||
|
pod.Spec.HostAliases = extraHost
|
||||||
|
return pod, servicePorts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pod) getInfraContainer() (*Container, error) {
|
func (p *Pod) getInfraContainer() (*Container, error) {
|
||||||
|
@ -151,6 +151,38 @@ var _ = Describe("Podman generate kube", func() {
|
|||||||
Expect(numContainers).To(Equal(1))
|
Expect(numContainers).To(Equal(1))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("podman generate kube on pod with hostAliases", func() {
|
||||||
|
podName := "testHost"
|
||||||
|
testIP := "127.0.0.1"
|
||||||
|
podSession := podmanTest.Podman([]string{"pod", "create", "--name", podName,
|
||||||
|
"--add-host", "test1.podman.io" + ":" + testIP,
|
||||||
|
"--add-host", "test2.podman.io" + ":" + testIP,
|
||||||
|
})
|
||||||
|
podSession.WaitWithDefaultTimeout()
|
||||||
|
Expect(podSession.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
ctr1Name := "ctr1"
|
||||||
|
ctr1Session := podmanTest.Podman([]string{"create", "--name", ctr1Name, "--pod", podName, ALPINE, "top"})
|
||||||
|
ctr1Session.WaitWithDefaultTimeout()
|
||||||
|
Expect(ctr1Session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
ctr2Name := "ctr2"
|
||||||
|
ctr2Session := podmanTest.Podman([]string{"create", "--name", ctr2Name, "--pod", podName, ALPINE, "top"})
|
||||||
|
ctr2Session.WaitWithDefaultTimeout()
|
||||||
|
Expect(ctr2Session.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
kube := podmanTest.Podman([]string{"generate", "kube", podName})
|
||||||
|
kube.WaitWithDefaultTimeout()
|
||||||
|
Expect(kube.ExitCode()).To(Equal(0))
|
||||||
|
|
||||||
|
pod := new(v1.Pod)
|
||||||
|
err := yaml.Unmarshal(kube.Out.Contents(), pod)
|
||||||
|
Expect(err).To(BeNil())
|
||||||
|
Expect(len(pod.Spec.HostAliases)).To(Equal(2))
|
||||||
|
Expect(pod.Spec.HostAliases[0].IP).To(Equal(testIP))
|
||||||
|
Expect(pod.Spec.HostAliases[1].IP).To(Equal(testIP))
|
||||||
|
})
|
||||||
|
|
||||||
It("podman generate service kube on pod", func() {
|
It("podman generate service kube on pod", func() {
|
||||||
_, rc, _ := podmanTest.CreatePod("toppod")
|
_, rc, _ := podmanTest.CreatePod("toppod")
|
||||||
Expect(rc).To(Equal(0))
|
Expect(rc).To(Equal(0))
|
||||||
|
Reference in New Issue
Block a user