mirror of
https://github.com/containers/podman.git
synced 2025-06-20 17:13:43 +08:00
play kube: do not skip containers by name
We should not exclude contianers by name. If a users has a container with the name "inf" it is currently skipped. This is wrong. The k8s yaml does not contain infra containers so we do not have to skip them. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
@ -435,53 +435,51 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
|
|||||||
initContainers = append(initContainers, ctr)
|
initContainers = append(initContainers, ctr)
|
||||||
}
|
}
|
||||||
for _, container := range podYAML.Spec.Containers {
|
for _, container := range podYAML.Spec.Containers {
|
||||||
if !strings.Contains(container.Name, "infra") {
|
// Error out if the same name is used for more than one container
|
||||||
// Error out if the same name is used for more than one container
|
if _, ok := ctrNames[container.Name]; ok {
|
||||||
if _, ok := ctrNames[container.Name]; ok {
|
return nil, errors.Errorf("the pod %q is invalid; duplicate container name %q detected", podName, container.Name)
|
||||||
return nil, errors.Errorf("the pod %q is invalid; duplicate container name %q detected", podName, container.Name)
|
|
||||||
}
|
|
||||||
ctrNames[container.Name] = ""
|
|
||||||
pulledImage, labels, err := ic.getImageAndLabelInfo(ctx, cwd, annotations, writer, container, options)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
for k, v := range podSpec.PodSpecGen.Labels { // add podYAML labels
|
|
||||||
labels[k] = v
|
|
||||||
}
|
|
||||||
|
|
||||||
specgenOpts := kube.CtrSpecGenOptions{
|
|
||||||
Annotations: annotations,
|
|
||||||
Container: container,
|
|
||||||
Image: pulledImage,
|
|
||||||
Volumes: volumes,
|
|
||||||
PodID: pod.ID(),
|
|
||||||
PodName: podName,
|
|
||||||
PodInfraID: podInfraID,
|
|
||||||
ConfigMaps: configMaps,
|
|
||||||
SeccompPaths: seccompPaths,
|
|
||||||
RestartPolicy: ctrRestartPolicy,
|
|
||||||
NetNSIsHost: p.NetNS.IsHost(),
|
|
||||||
SecretsManager: secretsManager,
|
|
||||||
LogDriver: options.LogDriver,
|
|
||||||
LogOptions: options.LogOptions,
|
|
||||||
Labels: labels,
|
|
||||||
}
|
|
||||||
specGen, err := kube.ToSpecGen(ctx, &specgenOpts)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
specGen.RawImageName = container.Image
|
|
||||||
rtSpec, spec, opts, err := generate.MakeContainer(ctx, ic.Libpod, specGen, false, nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
ctr, err := generate.ExecuteCreate(ctx, ic.Libpod, rtSpec, spec, false, opts...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
containers = append(containers, ctr)
|
|
||||||
}
|
}
|
||||||
|
ctrNames[container.Name] = ""
|
||||||
|
pulledImage, labels, err := ic.getImageAndLabelInfo(ctx, cwd, annotations, writer, container, options)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range podSpec.PodSpecGen.Labels { // add podYAML labels
|
||||||
|
labels[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
specgenOpts := kube.CtrSpecGenOptions{
|
||||||
|
Annotations: annotations,
|
||||||
|
Container: container,
|
||||||
|
Image: pulledImage,
|
||||||
|
Volumes: volumes,
|
||||||
|
PodID: pod.ID(),
|
||||||
|
PodName: podName,
|
||||||
|
PodInfraID: podInfraID,
|
||||||
|
ConfigMaps: configMaps,
|
||||||
|
SeccompPaths: seccompPaths,
|
||||||
|
RestartPolicy: ctrRestartPolicy,
|
||||||
|
NetNSIsHost: p.NetNS.IsHost(),
|
||||||
|
SecretsManager: secretsManager,
|
||||||
|
LogDriver: options.LogDriver,
|
||||||
|
LogOptions: options.LogOptions,
|
||||||
|
Labels: labels,
|
||||||
|
}
|
||||||
|
specGen, err := kube.ToSpecGen(ctx, &specgenOpts)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
specGen.RawImageName = container.Image
|
||||||
|
rtSpec, spec, opts, err := generate.MakeContainer(ctx, ic.Libpod, specGen, false, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
ctr, err := generate.ExecuteCreate(ctx, ic.Libpod, rtSpec, spec, false, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
containers = append(containers, ctr)
|
||||||
}
|
}
|
||||||
|
|
||||||
if options.Start != types.OptionalBoolFalse {
|
if options.Start != types.OptionalBoolFalse {
|
||||||
|
@ -2995,7 +2995,7 @@ invalid kube kind
|
|||||||
|
|
||||||
It("podman play kube with auto update annotations for all containers", func() {
|
It("podman play kube with auto update annotations for all containers", func() {
|
||||||
ctr01Name := "ctr01"
|
ctr01Name := "ctr01"
|
||||||
ctr02Name := "ctr02"
|
ctr02Name := "infra"
|
||||||
podName := "foo"
|
podName := "foo"
|
||||||
autoUpdateRegistry := "io.containers.autoupdate"
|
autoUpdateRegistry := "io.containers.autoupdate"
|
||||||
autoUpdateRegistryValue := "registry"
|
autoUpdateRegistryValue := "registry"
|
||||||
|
Reference in New Issue
Block a user