Commit Graph

63 Commits

Author SHA1 Message Date
Oleksandr Krutko
bb4fa066b3 fix remote command parameters
Signed-off-by: Oleksandr Krutko <alexander.krutko@gmail.com>
2025-10-18 02:08:51 +03:00
Oleksandr Krutko
098d8efecc add option to remove Pod name prefix in resulting container name
Signed-off-by: Oleksandr Krutko <alexander.krutko@gmail.com>
2025-10-15 23:37:03 +03:00
Paul Holzinger
fd60d63bf4 Revert "Deduplicate more options."
This reverts commit 6756eb3412.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2025-09-11 19:00:02 +02:00
Jan Kaluza
6756eb3412 Deduplicate more options.
Signed-off-by: Jan Kaluza <jkaluza@redhat.com>
2025-09-05 15:26:16 +02:00
Jelle van der Waa
b9812e3d9e Mention zstandard tarball import support
The `podman-import` man page already mentions support for zstd
compressed tarball support but the cli output didn't.

Signed-off-by: Jelle van der Waa <jvanderwaa@redhat.com>
2025-08-29 17:51:04 +02:00
shiavm006
5ab92a7499 docs(kube play): clarify --annotation flag only affects containers, not pods
Signed-off-by: shiavm006 <shivammittal42006@gmail.com>
2025-07-31 20:17:19 +05:30
François Poirotte
5bfdb25b26 Support --cpuset-<cpus/mems> in podman kube play
This commit adds two new annotations named
io.podman.annotations.cpuset/$ctrname and
io.podman.annotations.memory-nodes/$ctrname

The first one allows restricting a container's execution to specific
CPU cores while the second restricts memory allocations to specific
NUMA memory nodes. They are also added automatically when the
--cpuset-cpus and --cpuset-mems options are used.

Fixes: containers#26172

Signed-off-by: François Poirotte <clicky@erebot.net>
2025-05-22 11:45:01 +02:00
Jan Kaluza
f15b0887c7 Add support for pids-limit annotation for podman kube play.
This commit adds new annotation called:

io.podman.annotations.pids-limit/$ctrname

This annotation is used to define the PIDsLimit for
a particular pod. It is also automatically defined
when newly added --pids-limit option is used.

Fixes: #24418

Signed-off-by: Jan Kaluza <jkaluza@redhat.com>
2025-03-26 10:06:56 +01:00
flouthoc
1e9bfeb1f8 docs,kube: add configMap as supported volume option
Closes: https://github.com/containers/podman/issues/25436

[NO NEW TESTS NEEDED]
[NO TESTS NEEDED]

Signed-off-by: flouthoc <flouthoc.git@gmail.com>
2025-03-03 08:53:05 -08:00
openshift-merge-bot[bot]
4cae27b625 Merge pull request #25029 from robertgzr/play-cdi
Document kube-play CDI support
2025-01-22 18:09:25 +00:00
Robert Günzler
d4f4cf0988 Document kube-play CDI support
Follow up to ec6b0355bf

Signed-off-by: Robert Günzler <r@gnzler.io>
2025-01-16 15:41:16 +01:00
Daniel J Walsh
6565bde6e8 Add --no-hostname option
Fixes: https://github.com/containers/podman/issues/25002

Also add the ability to inspect containers for
UseImageHosts and UseImageHostname.

Finally fixed some bugs in handling of --no-hosts for Pods,
which I descovered.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2025-01-15 06:51:32 -05:00
Mario Loriedo
db12343e27 Add kube play support for image volume source
Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-09-10 12:37:06 +00:00
Urvashi Mohnani
bdf96e7df2 Add support for Job to kube generate & play
The kube generate command can now generate a yaml for
the Job kind and the kube play command can create a pod
and containers with podman when passed in a Job yaml.
Add relevant tests and docs for this.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2024-09-05 11:36:38 -04:00
Matt Heon
30e2c923d6 Add the ability to automount images as volumes via play
Effectively, this is an ability to take an image already pulled
to the system, and automatically mount it into one or more
containers defined in Kubernetes YAML accepted by `podman play`.

Requirements:
- The image must already exist in storage.
- The image must have at least 1 volume directive.
- The path given by the volume directive will be mounted from the
  image into the container. For example, an image with a volume
  at `/test/test_dir` will have `/test/test_dir` in the image
  mounted to `/test/test_dir` in the container.
- Multiple images can be specified. If multiple images have a
  volume at a specific path, the last image specified trumps.
- The images are always mounted read-only.
- Images to mount are defined in the annotation
  "io.podman.annotations.kube.image.automount/$ctrname" as a
  semicolon-separated list. They are mounted into a single
  container in the pod, not the whole pod.

As we're using a nonstandard annotation, this is Podman only, any
Kubernetes install will just ignore this.

Underneath, this compiles down to an image volume
(`podman run --mount type=image,...`) with subpaths to specify
what bits we want to mount into the container.

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-04-25 14:12:27 -04:00
Daniel J Walsh
422eb0e58a Add more annnotation information to podman kupe play man page
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-04-18 09:36:44 -04:00
Vikas Goel
89b415ba37 Comply to Kubernetes specifications for annotation size.
An annotation is a pair of key-value. The key has two parts, viz. a name and an optional prefix in DNS format.

The limitations on name is 63, prefix 253 chars. The limitation on total size of all key+value pairs combined is 256KB.

https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set

Fixes: https://github.com/containers/podman/issues/21663

Signed-off-by: Vikas Goel <vikas.goel@gmail.com>
2024-02-20 14:58:35 -08:00
Vikas Goel
42a78c714c Add volumes-from support using annotation in kube yaml
The reserved annotation io.podman.annotations.volumes-from is made public to let user define volumes-from to have one container mount volumes of other containers.

The annotation format is: io.podman.annotations.volumes-from/tgtCtr: "srcCtr1:mntOpts1;srcCtr2:mntOpts;..."

Fixes: containers#16819

Signed-off-by: Vikas Goel <vikas.goel@gmail.com>
2024-02-14 07:31:43 -08:00
Ed Santiago
7dcbc75aa0 [CI:DOCS] minor man page cleanup
Followup to #21285. I hope this is easier to review
than a re-push of that one.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-01-25 15:59:18 -07:00
openshift-merge-bot[bot]
fc660a22a4 Merge pull request #21285 from rhatdan/man
[CI:DOCS] Clean up man pages.
2024-01-25 18:41:19 +00:00
Ygal Blum
269149a9fd Kube Play - allow creating image based volumes
Add volume.podman.io/image annotation to allow setting the source image

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2024-01-24 11:55:29 +02:00
Daniel J Walsh
d3a49fdedb Add information about --latest support on man pages
On Mac and Windows systems the --latest option is not supported
this PR mentions this fact in the examples section of the man page.
Also added documentation and consistency to the man pages examples
sections.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-01-23 07:28:40 -05:00
Anchit Bajaj
04519234e8 Add support for the userns annotation in kube play
[NO NEW TESTS NEEDED]

Signed-off-by: Anchit Bajaj <ab@abifog.com>
2023-12-02 23:14:29 +01:00
Daniel J Walsh
06b7264977 Use buildah default isolation when working with podman play kube
Users can specify BUILDAH_ISOLATION environment variable to change the
default.

Fixes: https://github.com/containers/podman/issues/20024

Currently podman play kube is defaulting to chroot, which is the least
safe version of build, we should always default to secure whenever
possible. Chroot should only be used when building within a container.

No great way to tests this.
[NO NEW TESTS NEEDED]

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-10-24 12:20:11 -04:00
Peter Werner
f52b02f406 Fix all ports exposed by kube play
Container ports defined with containerPort were exposed by default
even though kubernetes interprets them as mostly informative.
Closes #17028

Signed-off-by: Peter Werner <wpw.peter@gmail.com>
2023-09-23 19:53:46 +02:00
danishprakash
cdcf18b862 kube: add DaemonSet support for generate
Signed-off-by: danishprakash <danish.prakash@suse.com>
2023-09-12 10:30:57 +05:30
Daskan
5eb0a53a0a Update podman-kube-play.1.md.in
To avoid the error:
`Error: unable to read YAML as Kube Pod: error unmarshaling JSON: while decoding JSON: json: cannot unmarshal object into Go struct field Container.spec.containers.command of type string`

Also makes it easier to understand as you only need the image parameter.

Signed-off-by: Daskan <kevin81991@web.de>
2023-09-09 21:41:41 +02:00
Urvashi Mohnani
52ed7fce2a Add infra-name annotations to kube gen/play
Add io.podman.annotations.infra.name annotation to kube play so
users can set the name of the infra container created.
When a pod is created with --infra-name set, the generated
kube yaml will have an infraName annotation set that will
be used when playing the generated yaml with podman.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-08-24 11:29:56 -04:00
Jake Correnti
7b54fd84ec Add --no-trunc flag to maintain original annotation length
Adds a `--no-trunc` flag to `podman kube generate` preventing the
annotations from being trimmed at 63 characters. However, due to
the fact the annotations will not be trimmed, any annotation that is
longer than 63 characters means this YAML will no longer be Kubernetes
compatible. However, these YAML files can still be used with `podman
kube play` due to the addition of the new flag below.

Adds a `--no-trunc` flag to `podman kube play` supporting YAML files with
annotations that were not truncated to the Kubernetes maximum length of
63 characters.

Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
2023-07-10 18:02:53 -04:00
Daniel J Walsh
32c2cea0f9 Remove future tense from man pages
Remove all will, would, could, should and use present tense.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-05-16 15:10:33 -04:00
Ygal Blum
26f1e95ab4 Kube Play - Support multi-doc YAML files for configmap argument
Read the entire YAML file in case of a multi-doc file
Adjust the unit test
Add a system test
Add comment in the man page

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-05-11 13:13:08 +03:00
Ed Santiago
761eca9e75 e2e tests: fix racy flakes
...mostly just test code that wasn't doing the required waits.

My first approach in the kube-play test was to add "--wait".
Bit mistake! The --wait flag, counterintuitively and counter to
documentation, actually destroys all pods+containers+everything
on exit. (Or tries -- see #17803). Since this violates POLA
and is undocumented, I include here a fix to the man page.

Despite my best intentions, I can't reasonably check every single
test for missing waits, especially in kube-play where failing
containers will get retried forever so we can't wait. We'll
just have to fix flakes as we see them.

Fixes: #17958
Fixes: #18071

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-04-05 13:51:59 -06:00
Ygal Blum
dd8ee49f67 Update docs/source/markdown/podman-kube-play.1.md.in
Grammar fixes

Co-authored-by: Valentin Rothberg <vrothberg@redhat.com>
Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-03-28 10:20:16 +03:00
Ygal Blum
cb24d6c3d5 Kube Play Doc: Document the support for K8S Secret
Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-03-21 11:35:25 +02:00
Urvashi Mohnani
20a42d0e4f play kube: Add --wait option
Add a way to keep play kube running in the foreground and terminating all pods
after receiving a a SIGINT or SIGTERM signal. The pods will also be
cleaned up after the containers in it have exited.
If an error occurrs during kube play, any resources created till the
error point will be cleane up also.

Add tests for the various scenarios.

Fixes #14522

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
2023-02-28 13:45:36 -05:00
Daniel J Walsh
ec4ab08c8b [CI:DOCS] Cleanup some man pages to display options with line breaks
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-02-08 14:46:44 -05:00
Ygal Blum
07cc49efdb Kube Play - allow setting and overriding published host ports
Add a new flag --publish
Remote - Pass PublishPorts as a string array
ABI - translate the string array to Ports and merge with the ports in the spec
Add e2e tests
Add option to man doc

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2023-01-08 13:49:53 +02:00
Daniel J Walsh
7665bbc127 Remove 'you' from man pages
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-12-07 09:29:29 -05:00
Ygal Blum
1c8196a9ac kube play: update the handling of PersistentVolumeClaim
Up - do not fail if volume already exists, use the existing one
Down - allow the user to remove the volume by passing --force
Add tests
Update the documentation

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2022-11-08 11:08:50 +02:00
OpenShift Merge Robot
1c9c321d3c Merge pull request #15979 from ygalblum/play_kube_volume_import
play kube: Allow the user to import the contents of a tar file into a volume
2022-10-25 10:05:45 -04:00
Ygal Blum
0ce234425a play kube: Allow the user to import the contents of a tar file into a volume
Add a new annotation to allow the user to point to a local tar file
If the annotation is present, import the file's content into the volume
Add a flag to PlayKubeOptions to note remote requests
Fail when trying to import volume content in remote requests
Add the annotation to the documentation
Add an E2E test to the new annotation

Signed-off-by: Ygal Blum <ygal.blum@gmail.com>
2022-10-25 15:11:25 +03:00
Valentin Rothberg
c1de4d3ce2 docs: kube play: mention restart policy
Mention the default restart policy in the `kube play` docs.

Fixes: #16252
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-10-24 10:08:55 +02:00
Ed Santiago
bd4ee2d578 markdown-preprocess: add generic include mechanism
This is what was supposed to be an easy two-or-three-line
change to enable a more general-purpose include mechanism
than '@@option'; one that could include an arbitrary file.

This is commit 2 of 2, the "easy" part. Unfortunately, it's
not looking good. The source .md file has UTF8 checkmarks,
and nroff is not happy with those: the generated man pages
are gross.

Another problem: the source .md might need tweaking, because
we don't want a level 1 header in the man page. Obvious solution
is to make kubernetes_support.md a .md.in file as well, and
move the tables to a separate file (or files). Deferred for later.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-10-13 15:57:43 -06:00
Daniel J Walsh
b47b48fd03 Revert "Add checkpoint image tests"
This reverts commit bbe1063a5a.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-10-11 10:04:55 -04:00
Andrei Natanael Cosma
f250560a80 Add pods created by kube play to a default network
In order to allow pods to reach other pods (as in Kubernetes) they all
need to be added to the same network. A network is created (if it
doesn't exist) and pods created by play-kube are added to that network.
When network options are passed to kube command the pods are not
attached to the default kube network.

Signed-off-by: Andrei Natanael Cosma <andrei@intersect.ro>
2022-10-04 21:59:57 +02:00
OpenShift Merge Robot
0513349355 Merge pull request #15998 from Luap99/play-kube-hostnet
podman kube play allow --network host
2022-09-29 20:26:03 +02:00
Ed Santiago
e7328cb97c Man pages: refactor common options: --network
Tricky one. In particular: podman-kube-play did not enumerate
the "host" option; here I take the liberty of using it in the
common network.md, so it will appear in podman-kube-play.1.
If that is wrong, please tell me ASAP: I will need to un-refactor
podman-kube-play.

Other decisions:
 * move the "invalid if" text to the bottom, because it can't
   be shared between pod and container man pages.
 * ditto for "together with --pod"
 * kube-play said "Change the network mode of"; all the others
   said ">SET< the network mode >FOR< ...". I chose the latter,
   so that's what kube-play will have also. Again, if that's
   wrong, please lmk.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-09-29 18:08:19 +02:00
Ed Santiago
309f4fb543 Man pages: refactor common options: --log-opt
Simple in reality, but hard to review due to lots of little diffs:

 - "Logging driver specific options" was only in podman-run; I added it
   to create and kube-play.
 - whitespace changes, the 'e.g.'s got consistent 4-space indentation
 - the "same keys" and "supported only" sentences, I moved up to be
   closer to **tag** and without intervening whitespace, because they
   were unclear as they were: I believe the intent is to apply those
   sentences only to **tag**, not to the **--log-opt** option itself.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-09-29 08:44:00 -06:00
Paul Holzinger
47fff4b007 improve slirp4netns allow_host_loopback docs
The default ip is 10.0.2.2 but is always the second ip from the
slirp4netns subnet, which can be changed via the cidr option.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2090166

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-09-14 10:55:02 +02:00
Ed Santiago
76eb06330f Man pages: refactor common options: --tls-verify
Ugh. This had about five different variations among twelve files.
I went with the version from podman-create, kube play, login, pull,
push, run. The others:

 - manifest-add and create did not include the "true, false, missing"
   text. Now they do. (If this text is N/A to these two, please yell).
   Also, these two were written with "talking" instead of "contacting"
   the registry.

 - podman-build had "does not work with remote", but this
   does not seem to be true, so I removed it. None of the
   other files had that.

 - the wording in podman-search is just weird, with "if needed"
   and "is listed" and unclear "insecure registries". I just
   nuked it all. If that wording was deliberate, for some reason
   that applies only to podman-search, please yell.

 - podman-container-runlabel has one diff that I like, actually
   spelling out containers-registries.conf(5), but incorporating
   that would make this even harder to review. I will add that
   to my in-progress doc-cleanup PR.

Review recommendation: run hack/markdown-preprocess-review but
just quit out of it immediately (on both popups). Ignore it completely.
Then cd /tmp/markdown-preprocess-review.diffs/tls-verify and run

    $ clear;for i in podman-*;do echo;echo $i;wdiff -t $i zzz-chosen.md;done

This will show the major diffs between each version and the chosen one.
Assumes you have wdiff installed. If you have another colorize-actual-
individual-word-diffs tool installed, use that. I like cdif[1].

 [1] https://github.com/kaz-utashiro/sdif-tools

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-09-13 11:15:23 -06:00