Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
podman-kube-play(1)	    General Commands Manual	   podman-kube-play(1)

NAME
       podman-kube-play	 - Create containers, pods and volumes based on	Kuber-
       netes YAML

SYNOPSIS
       podman kube play	[options] file.yml|-|https://website.io/file.yml

DESCRIPTION
       podman kube play	reads in a structured file  of	Kubernetes  YAML.   It
       recreates the containers, pods, or volumes described in the YAML.  Con-
       tainers within a	pod are	then started, and the ID of the	new Pod	or the
       name of the new Volume is output. If the	YAML file is specified as "-",
       then  podman  kube  play	reads the YAML file from stdin.	 The input can
       also be a  URL  that  points  to	 a  YAML  file	such  as  https://pod-
       man.io/demo.yml.	 podman	kube play reads	the YAML from the URL and cre-
       ate pods	and containers from it.

       Using the --down	command	line option, it	is  also  capable  of  tearing
       down the	pods created by	a previous run of podman kube play.

       Using the --replace command line	option,	it tears down the pods(if any)
       created	by  a  previous	 run of	podman kube play and recreate the pods
       with the	Kubernetes YAML	file.

       Ideally the input file is created by the	Podman	command	 (see  podman-
       kube-generate(1)).   This  guarantees  a	smooth import and expected re-
       sults.

       Currently, the supported	Kubernetes kinds are:

        Pod

        Deployment

        PersistentVolumeClaim

        ConfigMap

        Secret

        DaemonSet

        Job

       Kubernetes Pods or Deployments

       Only four volume	types are supported by kube play, the hostPath,	empty-
       Dir, persistentVolumeClaim, and image volume types.

        When using the	hostPath volume	type, only the	default	 (empty),  Di-
	 rectoryOrCreate,  Directory,  FileOrCreate,  File, Socket, CharDevice
	 and BlockDevice subtypes are supported. Podman	interprets  the	 value
	 of hostPath path as a file path when it contains at least one forward
	 slash,	 otherwise Podman treats the value as the name of a named vol-
	 ume.

        When using a persistentVolumeClaim, the value for  claimName  is  the
	 name for the Podman named volume.

        When  using  an  emptyDir  volume, Podman creates an anonymous	volume
	 that is attached the containers running inside	the pod	and is deleted
	 once the pod is removed.

        When using an image volume, Podman creates a read-only	 image	volume
	 with  an  empty  subpath (the whole image is mounted).	The image must
	 already exist locally.	It is supported	in rootful mode	only.

       Note: The default restart policy	for containers	is  always.   You  can
       change the default by setting the restartPolicy field in	the spec.

       Note: When playing a kube YAML with init	containers, the	init container
       is  created  with init type value once. To change the default type, use
       the io.podman.annotations.init.container.type  annotation  to  set  the
       type to always.

       Note:  hostPath	volume	types created by kube play is given an SELinux
       shared label (z), bind mounts are not  relabeled	 (use  chcon  -t  con-
       tainer_file_t -R	<directory>).

       Note:  To set userns of a pod, use the io.podman.annotations.userns an-
       notation	in the pod/deployment definition. For example, io.podman.anno-
       tations.userns=keep-id annotation tells Podman to create	a  user	 name-
       space  where the	current	rootless user's	UID:GID	are mapped to the same
       values in the container.	This can be overridden with the	--userns flag.

       Note: Use the  io.podman.annotations.volumes-from  annotation  to  bind
       mount  volumes  of one container	to another. You	can mount volumes from
       multiple	source containers to a target container. The source containers
       that belong to the same pod must	be defined before the source container
       in the kube YAML. The annotation	format	is  io.podman.annotations.vol-
       umes-from/targetContainer:      "sourceContainer1:mountOpts1;sourceCon-
       tainer2:mountOpts2".

       Note: If	the :latest tag	is used, Podman	attempts  to  pull  the	 image
       from a registry.	If the image was built locally with Podman or Buildah,
       it  has	localhost  as  the domain, in that case, Podman	uses the image
       from the	local store even if it has the :latest tag.

       Note: The command podman	play kube is an	alias of podman	kube play, and
       performs	the same function.

       Note: The command podman	kube down can be used to stop and remove  pods
       or  containers  based  on  the same Kubernetes YAML used	by podman kube
       play to create them.

       Note: To	customize the name of the infra	container created during  pod-
       man  kube  play,	use the	io.podman.annotations.infra.name annotation in
       the pod definition. This	annotation is automatically set	when  generat-
       ing  a kube yaml	from a pod that	was created with the --infra-name flag
       set.

       Kubernetes PersistentVolumeClaims

       A Kubernetes PersistentVolumeClaim represents a	Podman	named  volume.
       Only  the  PersistentVolumeClaim	name is	required by Podman to create a
       volume. Kubernetes annotations can be used to make use of the available
       options for Podman volumes.

        volume.podman.io/driver

        volume.podman.io/device

        volume.podman.io/type

        volume.podman.io/uid

        volume.podman.io/gid

        volume.podman.io/mount-options

        volume.podman.io/import-source

        volume.podman.io/image

       Use volume.podman.io/import-source to import the	contents of  the  tar-
       ball (.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz)	specified in the anno-
       tation's	value into the created Podman volume

       Kube  play  is  capable of building images on the fly given the correct
       directory layout	and Containerfiles. This option	is not	available  for
       remote  clients,	 including  Mac	and Windows (excluding WSL2) machines,
       yet. Consider the following excerpt from	a YAML file:

       apiVersion: v1
       kind: Pod
       metadata:
       ...
       spec:
	 containers:
	 - name: container
	   image: foobar
       ...

       If there	is a directory named foobar in the current  working  directory
       with  a file named Containerfile	or Dockerfile, Podman kube play	builds
       that image and name it foobar.  An example directory structure for this
       example looks like:

       |- mykubefiles
	   |- myplayfile.yaml
	   |- foobar
		|- Containerfile

       The build considers foobar to be	the context directory for  the	build.
       If  there  is an	image in local storage called foobar, the image	is not
       built unless the	--build	flag is	used. Use --build=false	to  completely
       disable builds.

       Kubernetes ConfigMap

       Kubernetes  ConfigMap  can be referred as a source of environment vari-
       ables or	volumes	in Pods	or Deployments.	 ConfigMaps  aren't  a	stand-
       alone  object  in  Podman;  instead, when a container uses a ConfigMap,
       Podman creates environment variables or volumes as needed.

       For example, the	following YAML document	defines	a ConfigMap  and  then
       uses it in a Pod:

       apiVersion: v1
       kind: ConfigMap
       metadata:
	 name: foo
       data:
	   FOO:	bar
       ---
       apiVersion: v1
       kind: Pod
       metadata:
	 name: foobar
       spec:
	 containers:
	 - name: container-1
	   image: foobar
	   envFrom:
	   - configMapRef:
	       name: foo
	       optional: false

       and  as	a  result environment variable FOO is set to bar for container
       container-1.

       Kubernetes Secret

       Kubernetes Secret represents a Podman named secret. The Kubernetes  Se-
       cret is saved as	a whole	and may	be referred to as a source of environ-
       ment variables or volumes in Pods or Deployments.

       For example, the	following YAML document	defines	a Secret and then uses
       it in a Pod:

       kind: Secret
       apiVersion: v1
       metadata:
	 name: foo
       data:
	 foo: YmFy # base64 for	bar
       ---
       apiVersion: v1
       kind: Pod
       metadata:
	 name: foobar
       spec:
	 containers:
	 - name: container-1
	   image: foobar
	   env:
	   - name: FOO
	     valueFrom:
	       secretKeyRef:
		 name: foo
		 key: foo

       and  as	a  result environment variable FOO is set to bar for container
       container-1.

       Automounting Volumes (deprecated)

       Note: The automounting annotation is deprecated.	Kubernetes has	native
       support for image volumes and that should be used rather	than this pod-
       man-specific annotation.

       An  image  can be automatically mounted into a container	if the annota-
       tion io.podman.annotations.kube.image.automount/$ctrname	is given.  The
       following rules apply:

        The image must	already	exist locally.

        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.annota-
	 tions.kube.image.automount/$ctrname" as a  semicolon-separated	 list.
	 They  are  mounted  into a single container in	the pod, not the whole
	 pod. The annotation can be specified for additional containers	if ad-
	 ditional mounts are required.

OPTIONS
   --annotation=key=value
       Add an annotation to the	container or pod. This option can be set  mul-
       tiple times.

   --authfile=path
       Path of the authentication file.	Default	is ${XDG_RUNTIME_DIR}/contain-
       ers/auth.json  on Linux,	and $HOME/.config/containers/auth.json on Win-
       dows/macOS.  The	file is	created	by podman login. If the	 authorization
       state  is  not found there, $HOME/.docker/config.json is	checked, which
       is set using docker login.

       Note: There is also the option to override the default path of the  au-
       thentication  file  by setting the REGISTRY_AUTH_FILE environment vari-
       able. This can be done with export REGISTRY_AUTH_FILE=path.

   --build
       Build images  even  if  they  are  found	 in  the  local	 storage.  Use
       --build=false  to completely disable builds. (This option is not	avail-
       able with the remote Podman client)

       Note:  You  can also override the default isolation type	by setting the
       BUILDAH_ISOLATION environment variable.	export	BUILDAH_ISOLATION=oci.
       See podman-build.1.md for more information.

   --cert-dir=path
       Use  certificates at path (*.crt, *.cert, *.key)	to connect to the reg-
       istry. (Default:	/etc/containers/certs.d) For details, see  containers-
       certs.d(5).   (This  option  is	not  available	with the remote	Podman
       client, including Mac and Windows (excluding WSL2) machines)

   --configmap=path
       Use Kubernetes configmap	YAML at	path to	provide	a source for  environ-
       ment variable values within the containers of the pod.  (This option is
       not available with the remote Podman client)

       Note: The --configmap option can	be used	multiple times or a comma-sep-
       arated  list of paths can be used to pass multiple Kubernetes configmap
       YAMLs.  The YAML	file may be in a multi-doc YAML	format.	But,  it  must
       container only configmaps

   --context-dir=path
       Use  path  as  the  build  context  directory  for each image. Requires
       --build option be true. (This option is not available with  the	remote
       Podman client)

   --creds=[username[:password]]
       The  [username[:password]] to use to authenticate with the registry, if
       required.  If one or both values	 are  not  supplied,  a	 command  line
       prompt  appears	and  the value can be entered. The password is entered
       without echo.

       Note that the specified	credentials  are  only	used  to  authenticate
       against	target	registries.  They are not used for mirrors or when the
       registry	gets rewritten (see containers-registries.conf(5)); to authen-
       ticate against those consider using a containers-auth.json(5) file.

   --force
       Tear down the volumes linked to the PersistentVolumeClaims as  part  of
       --down

   --help, -h
       Print usage statement

   --ip=IP address
       Assign  a  static  ip  address to the pod. This option can be specified
       several times when kube play creates more than  one  pod.   Note:  When
       joining multiple	networks use the --network name:ip=<ip>	syntax.

   --log-driver=driver
       Set logging driver for all created containers.

   --log-opt=name=value
       Logging driver specific options.

       Set custom logging configuration. The following *name*s are supported:

       path: specify a path to the log file
	   (e.g. --log-opt path=/var/log/container/mycontainer.json);

       max-size: specify a max size of the log file
	   (e.g. --log-opt max-size=10mb);

       tag: specify a custom log tag for the container
	   (e.g. --log-opt tag="{{.ImageName}}".  It supports the same keys as
       podman  inspect	--format.   This option	is currently supported only by
       the journald log	driver.

   --mac-address=MAC address
       Assign a	static mac address to the pod. This option  can	 be  specified
       several	times  when  kube  play	creates	more than one pod.  Note: When
       joining multiple	networks use the --network name:mac=<mac> syntax.

   --network=mode, --net
       Set the network mode for	the pod.

       Valid mode values are:

        bridge[:OPTIONS,...]: Create a	network	stack on the  default  bridge.
	 This is the default for rootful containers. It	is possible to specify
	 these additional options:

	  alias=name: Add network-scoped alias	for the	container.

	  ip=IPv4: Specify a static IPv4 address for this container.

	  ip6=IPv6: Specify a static IPv6 address for this container.

	  mac=MAC: Specify a static MAC address for this container.

	  interface_name=name:	 Specify a name	for the	created	network	inter-
	   face	inside the container.

	 For example, to set a static ipv4 address and a static	 mac  address,
	 use --network bridge:ip=10.88.0.10,mac=44:33:22:11:00:99.

        <network  name	 or  ID>[:OPTIONS,...]:	Connect	to a user-defined net-
	 work; this is the network name	or ID from a network created by	podman
	 network create. It is possible	to specify the same options  described
	 under	the bridge mode	above. Use the --network option	multiple times
	 to specify additional networks.
	 For backwards compatibility it	is also	possible to specify comma-sep-
	 arated	networks on the	first --network	argument,  however  this  pre-
	 vents	you  from using	the options described under the	bridge section
	 above.

        none: Create a	network	namespace for the container but	do not config-
	 ure network interfaces	for it,	thus the container has no network con-
	 nectivity.

        container:id: Reuse another container's network stack.

        host: Do not create a	network	 namespace,  the  container  uses  the
	 host's	 network.  Note: The host mode gives the container full	access
	 to local system services such as D-bus	and  is	 therefore  considered
	 insecure.

        ns:path: Path to a network namespace to join.

        private:  Create  a  new  namespace  for the container. This uses the
	 bridge	mode for rootful containers and	slirp4netns for	rootless ones.

        slirp4netns[:OPTIONS,...]: use	slirp4netns(1) to create a  user  net-
	 work  stack. It is possible to	specify	these additional options, they
	 can also be set with network_cmd_options in containers.conf:

	  allow_host_loopback=true|false: Allow slirp4netns to	reach the host
	   loopback IP (default	is 10.0.2.2 or the second IP from  slirp4netns
	   cidr	 subnet	 when changed, see the cidr option below). The default
	   is false.

	  mtu=MTU: Specify the	MTU to	use  for  this	network.  (Default  is
	   65520).

	  cidr=CIDR:  Specify	ip  range to use for this network. (Default is
	   10.0.2.0/24).

	  enable_ipv6=true|false: Enable IPv6.	Default	is true. (Required for
	   outbound_addr6).

	  outbound_addr=INTERFACE: Specify the	outbound interface slirp binds
	   to (ipv4 traffic only).

	  outbound_addr=IPv4: Specify the outbound ipv4 address  slirp	 binds
	   to.

	  outbound_addr6=INTERFACE:  Specify  the  outbound  interface	 slirp
	   binds to (ipv6 traffic only).

	  outbound_addr6=IPv6:	Specify	the outbound ipv6 address slirp	 binds
	   to.

	  port_handler=rootlesskit:  Use rootlesskit for port forwarding. De-
	   fault.
	   Note: Rootlesskit changes the source	IP address of incoming packets
	   to an IP  address  in  the  container  network  namespace,  usually
	   10.0.2.100. If the application requires the real source IP address,
	   e.g.	 web  server logs, use the slirp4netns port handler. The root-
	   lesskit port	handler	is also	used for rootless containers when con-
	   nected to user-defined networks.

	  port_handler=slirp4netns: Use the slirp4netns port  forwarding,  it
	   is  slower than rootlesskit but preserves the correct source	IP ad-
	   dress. This port handler cannot be used for user-defined networks.

        pasta[:OPTIONS,...]: use pasta(1) to create  a	 user-mode  networking
	 stack.
	 This  is  the	default	 for rootless containers and only supported in
	 rootless mode.
	 By default, IPv4 and IPv6 addresses and routes, as well  as  the  pod
	 interface  name,  are	copied from the	host. If port forwarding isn't
	 configured, ports are forwarded dynamically as	services are bound  on
	 either	 side (init namespace or container namespace). Port forwarding
	 preserves the	original  source  IP  address.	Options	 described  in
	 pasta(1) can be specified as comma-separated arguments.
	 In  terms  of	pasta(1) options, --config-net is given	by default, in
	 order to configure networking when  the  container  is	 started,  and
	 --no-map-gw  is  also assumed by default, to avoid direct access from
	 container to host using the gateway address. The latter can be	 over-
	 ridden	by passing --map-gw in the pasta-specific options (despite not
	 being an actual pasta(1) option).
	 Also,	-t none	and -u none are	passed if, respectively, no TCP	or UDP
	 port forwarding from host to container	is configured, to disable  au-
	 tomatic  port forwarding based	on bound ports.	Similarly, -T none and
	 -U none are given to disable the same functionality from container to
	 host.
	 Some examples:

	  pasta:--map-gw: Allow the container to directly reach the host  us-
	   ing the gateway address.

	  pasta:--mtu,1500: Specify a 1500 bytes MTU for the tap interface in
	   the container.

	  pasta:--ipv4-only,-a,10.0.2.0,-n,24,-g,10.0.2.2,--dns-for-
	   ward,10.0.2.3,-m,1500,--no-ndp,--no-dhcpv6,--no-dhcp, equivalent to
	   default slirp4netns(1) options: disable IPv6, assign	10.0.2.0/24 to
	   the	tap0 interface in the container, with gateway 10.0.2.3,	enable
	   DNS forwarder reachable at 10.0.2.3,	set MTU	to 1500	bytes, disable
	   NDP,	DHCPv6 and DHCP	support.

	  pasta:-I,tap0,--ipv4-only,-a,10.0.2.0,-n,24,-g,10.0.2.2,--dns-for-
	   ward,10.0.2.3,--no-ndp,--no-dhcpv6,--no-dhcp, equivalent to default
	   slirp4netns(1) options with Podman overrides: same  as  above,  but
	   leave the MTU to 65520 bytes

	  pasta:-t,auto,-u,auto,-T,auto,-U,auto:  enable  automatic port for-
	   warding based on observed bound ports from both host	and  container
	   sides

	  pasta:-T,5201: enable forwarding of TCP port	5201 from container to
	   host, using the loopback interface instead of the tap interface for
	   improved performance

       When  no	 network option	is specified and host network mode is not con-
       figured in the YAML file, a new network stack is	created	and  pods  are
       attached	to it making possible pod to pod communication.

   --no-hosts
       Do not modify the /etc/hosts file in the	pod.

       Podman  assumes	control	 over the pod's	/etc/hosts file	by default and
       adds entries for	the container's	name (see --name option) and  hostname
       (see  --hostname	 option),  the	internal  host.containers.internal and
       host.docker.internal hosts, as well as any  hostname  added  using  the
       --add-host  option. Refer to the	--add-host option for details. Passing
       --no-hosts disables this, so that the image's /etc/hosts	file  is  kept
       unmodified.  The	same can be achieved globally by setting no_hosts=true
       in containers.conf.

       This option conflicts with host added in	the Kubernetes YAML.

   --publish=[[ip:][hostPort]:]containerPort[/protocol]
       Define or override a port definition in the YAML	file.

       The lists of ports in the YAML file and the command  line  are  merged.
       Matching	 is  done  by using the	containerPort field.  If containerPort
       exists in both the YAML file and	the option, the	 latter	 takes	prece-
       dence.

   --publish-all
       Setting	this option to true will expose	all ports to the host, even if
       only specified via containerPort	in the K8 YAML.	  In  terms  of	 which
       port  will be exposed, --publish	has higher priority than hostPort, has
       higher priority than containerPort.

       If set to false (which is the default), only ports defined via hostPort
       or --publish are	published on the host.

   --quiet, -q
       Suppress	output information when	pulling	images

   --replace
       Tears down the pods created by a	previous run of	kube play  and	recre-
       ates the	pods. This option is used to keep the existing pods up to date
       based upon the Kubernetes YAML.

   --seccomp-profile-root=path
       Directory  path	for  seccomp profiles (default:	"/var/lib/kubelet/sec-
       comp"). (This option is not available with the  remote  Podman  client,
       including Mac and Windows (excluding WSL2) machines)

   --start
       Start the pod after creating it,	set to false to	only create it.

   --tls-verify
       Require	HTTPS  and verify certificates when contacting registries (de-
       fault: true).  If explicitly set	to true, TLS verification is used.  If
       set to false, TLS verification is not used.  If not specified, TLS ver-
       ification is used unless	the target registry is listed as  an  insecure
       registry	in containers-registries.conf(5)

   --userns=mode
       Set the user namespace mode for the container.

       If  --userns is not set,	the default value is determined	as follows.  -
       If --pod	is set,	--userns is ignored and	the user namespace of the  pod
       is  used.  - If the environment variable	PODMAN_USERNS is set its value
       is used.	 - If userns is	specified in  containers.conf  this  value  is
       used.  -	Otherwise, --userns=host is assumed.

       --userns="" (i.e., an empty string) is an alias for --userns=host.

       This  option  is	incompatible with --gidmap, --uidmap, --subuidname and
       --subgidname.

       Rootless	user --userns=Key mappings:

       +-------------------------+-----------+---------------------+
       | Key			 | Host	User | Container User	   |
       +-------------------------+-----------+---------------------+
       | auto			 | $UID	     | nil (Host User  UID |
       |			 |	     | is  not mapped into |
       |			 |	     | container.)	   |
       +-------------------------+-----------+---------------------+
       | host			 | $UID	     | 0 (Default User ac- |
       |			 |	     | count   mapped	to |
       |			 |	     | root  user  in con- |
       |			 |	     | tainer.)		   |
       +-------------------------+-----------+---------------------+
       | keep-id		 | $UID	     | $UID (Map user  ac- |
       |			 |	     | count  to  same UID |
       |			 |	     | within container.)  |
       +-------------------------+-----------+---------------------+
       | keep-id:uid=200,gid=210 | $UID	     | 200:210	(Map  user |
       |			 |	     | account	to  speci- |
       |			 |	     | fied UID, GID value |
       |			 |	     | within container.)  |
       +-------------------------+-----------+---------------------+
       | nomap			 | $UID	     | nil (Host User  UID |
       |			 |	     | is  not mapped into |
       |			 |	     | container.)	   |
       +-------------------------+-----------+---------------------+

       Valid mode values are:

       auto[:OPTIONS,...]: automatically create	a unique user namespace.

        rootful mode: The --userns=auto flag requires that the	user name con-
	 tainers be specified in the /etc/subuid and /etc/subgid  files,  with
	 an  unused  range  of subordinate user	IDs that Podman	containers are
	 allowed to allocate.

	       Example:	containers:2147483647:2147483648.

        rootless mode:	The users range	from the /etc/subuid  and  /etc/subgid
	 files	will  be  used.	 Note running a	single container without using
	 --userns=auto will use	the entire range of UIDs and not allow further
	 subdividing. See subuid(5).

       Podman allocates	unique ranges of UIDs and  GIDs	 from  the  containers
       subordinate  user IDs. The size of the ranges is	based on the number of
       UIDs required in	the image. The number of UIDs and GIDs can be overrid-
       den with	the size option.

       The option --userns=keep-id uses	all the	subuids	 and  subgids  of  the
       user.   The  option  --userns=nomap uses	all the	subuids	and subgids of
       the user	except the user's own ID.  Using --userns=auto	when  starting
       new  containers does not	work as	long as	any containers exist that were
       started with --userns=keep-id or	--userns=nomap.

       Valid auto options:

        gidmapping=CONTAINER_GID:HOST_GID:SIZE: to force a GID	mapping	to  be
	 present in the	user namespace.

        size=SIZE:  to	 specify an explicit size for the automatic user name-
	 space.	e.g. --userns=auto:size=8192. If size is not  specified,  auto
	 estimates a size for the user namespace.

        uidmapping=CONTAINER_UID:HOST_UID:SIZE:  to force a UID mapping to be
	 present in the	user namespace.

       The host	UID and	GID in gidmapping and  uidmapping  can	optionally  be
       prefixed	 with the @ symbol.  In	this case, podman will look up the in-
       termediate ID corresponding to host ID and it will map the found	inter-
       mediate ID to the container id.	For details see	--uidmap.

       container:id: join the user namespace of	the specified container.

       host or "" (empty string): run in the user namespace of the caller. The
       processes running in the	container have the same	privileges on the host
       as any other process launched by	the calling user.

       keep-id:	creates	a user namespace where the current user's UID:GID  are
       mapped  to  the same values in the container. For containers created by
       root, the current mapping is created into a new user namespace.

       Valid keep-id options:

        uid=UID: override the UID inside the container	that is	 used  to  map
	 the current user to.

        gid=GID:  override  the  GID inside the container that	is used	to map
	 the current user to.

       nomap: creates a	user  namespace	 where	the  current  rootless	user's
       UID:GID	are  not mapped	into the container. This option	is not allowed
       for containers created by the root user.

       ns:namespace: run the pod in the	given existing user namespace.

   --wait, -w
       Run pods	and containers in the foreground. Default is false.

       At  any time you	can run	podman pod ps in another shell to view a  list
       of the running pods and containers.

       When   attached	 in the	tty mode, you can kill the pods	and containers
       by pressing Ctrl-C or receiving any other interrupt signals.

       All pods, containers, and volumes created with podman kube play is  re-
       moved upon exit.

EXAMPLES
       Recreate	 the  pod  and containers described in the specified host YAML
       file.

       $ podman	kube play demo.yml
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

       Recreate	the pod	and containers specified in a YAML file	sent to	stdin.

       $ cat demo.yml |	podman kube play -
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

       Tear down the pod and containers	as described  in  the  specified  YAML
       file.

       $  podman kube play --down demo.yml
       Pods stopped:
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6
       Pods removed:
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

       Provide	multiple  configmap files as sources for environment variables
       within the specified pods and containers.

       $ podman	kube play demo.yml --configmap configmap-foo.yml,configmap-bar.yml
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

       $ podman	kube play demo.yml --configmap configmap-foo.yml --configmap configmap-bar.yml
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

       Create a	pod connected to two networks with a static ip on each.

       $ podman	kube play demo.yml --network net1:ip=10.89.1.5 --network net2:ip=10.89.10.10
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

       Please take into	account	that networks must be created first using pod-
       man-network-create(1).

       Create and teardown from	a URL pointing to a YAML file.

       $ podman	kube play https://podman.io/demo.yml
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

       $ podman	kube play --down https://podman.io/demo.yml
       Pods stopped:
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6
       Pods removed:
       52182811df2b1e73f36476003a66ec872101ea59034ac0d4d3a7b40903b955a6

       podman kube play	--down does not	work with a URL	if the YAML  file  the
       URL points to has been changed or altered.

Podman Kube Play Support
       This  document  outlines	 the  kube yaml	fields that are	currently sup-
       ported by the podman kube play command.

       Note: N/A means that the	option cannot be supported  in	a  single-node
       Podman environment.

Pod Fields
       +---------------------------------------------------+---------+
       | Field						   | Support |
       +---------------------------------------------------+---------+
       | containers					   |	     |
       +---------------------------------------------------+---------+
       | initContainers					   |	     |
       +---------------------------------------------------+---------+
       | imagePullSecrets				   | no	     |
       +---------------------------------------------------+---------+
       | enableServiceLinks				   | no	     |
       +---------------------------------------------------+---------+
       | os.name					   | no	     |
       +---------------------------------------------------+---------+
       | volumes					   |	     |
       +---------------------------------------------------+---------+
       | nodeSelector					   | N/A     |
       +---------------------------------------------------+---------+
       | nodeName					   | N/A     |
       +---------------------------------------------------+---------+
       | affinity.nodeAffinity				   | N/A     |
       +---------------------------------------------------+---------+
       | affinity.podAffinity				   | N/A     |
       +---------------------------------------------------+---------+
       | affinity.podAntiAffinity			   | N/A     |
       +---------------------------------------------------+---------+
       | tolerations.key				   | N/A     |
       +---------------------------------------------------+---------+
       | tolerations.operator				   | N/A     |
       +---------------------------------------------------+---------+
       | tolerations.effect				   | N/A     |
       +---------------------------------------------------+---------+
       | tolerations.tolerationSeconds			   | N/A     |
       +---------------------------------------------------+---------+
       | schedulerName					   | N/A     |
       +---------------------------------------------------+---------+
       | runtimeClassName				   | no	     |
       +---------------------------------------------------+---------+
       | priorityClassName				   | no	     |
       +---------------------------------------------------+---------+
       | priority					   | no	     |
       +---------------------------------------------------+---------+
       | topologySpreadConstraints.maxSkew		   | N/A     |
       +---------------------------------------------------+---------+
       | topologySpreadConstraints.topologyKey		   | N/A     |
       +---------------------------------------------------+---------+
       | topologySpreadConstraints.whenUnsatisfiable	   | N/A     |
       +---------------------------------------------------+---------+
       | topologySpreadConstraints.labelSelector	   | N/A     |
       +---------------------------------------------------+---------+
       | topologySpreadConstraints.minDomains		   | N/A     |
       +---------------------------------------------------+---------+
       | restartPolicy					   |	     |
       +---------------------------------------------------+---------+
       | terminationGracePeriodSeconds			   |	     |
       +---------------------------------------------------+---------+
       | activeDeadlineSeconds				   | no	     |
       +---------------------------------------------------+---------+
       | readinessGates.conditionType			   | no	     |
       +---------------------------------------------------+---------+
       | hostname					   |	     |
       +---------------------------------------------------+---------+
       | setHostnameAsFQDN				   | no	     |
       +---------------------------------------------------+---------+
       | subdomain					   | no	     |
       +---------------------------------------------------+---------+
       | hostAliases.hostnames				   |	     |
       +---------------------------------------------------+---------+
       | hostAliases.ip					   |	     |
       +---------------------------------------------------+---------+
       | dnsConfig.nameservers				   |	     |
       +---------------------------------------------------+---------+
       | dnsConfig.options.name				   |	     |
       +---------------------------------------------------+---------+
       | dnsConfig.options.value			   |	     |
       +---------------------------------------------------+---------+
       | dnsConfig.searches				   |	     |
       +---------------------------------------------------+---------+
       | dnsPolicy					   | no	     |
       +---------------------------------------------------+---------+
       | hostNetwork					   |	     |
       +---------------------------------------------------+---------+
       | hostPID					   |	     |
       +---------------------------------------------------+---------+
       | hostIPC					   |	     |
       +---------------------------------------------------+---------+
       | shareProcessNamespace				   |	     |
       +---------------------------------------------------+---------+
       | serviceAccountName				   | no	     |
       +---------------------------------------------------+---------+
       | automountServiceAccountToken			   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.runAsUser			   |	     |
       +---------------------------------------------------+---------+
       | securityContext.runAsNonRoot			   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.runAsGroup			   |	     |
       +---------------------------------------------------+---------+
       | securityContext.supplementalGroups		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.fsGroup			   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.fsGroupChangePolicy		   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.seccompProfile.type		   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.seccompProfile.localhostProfile   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.seLinuxOptions.level		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.seLinuxOptions.role		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.seLinuxOptions.type		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.seLinuxOptions.user		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.sysctls.name			   |	     |
       +---------------------------------------------------+---------+
       | securityContext.sysctls.value			   |	     |
       +---------------------------------------------------+---------+
       | securityContext.windowsOptions.gmsaCredentialSpec | no	     |
       +---------------------------------------------------+---------+
       | securityContext.windowsOptions.hostProcess	   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.windowsOptions.runAsUserName	   | no	     |
       +---------------------------------------------------+---------+

Container Fields
       +---------------------------------------------------+---------+
       | Field						   | Support |
       +---------------------------------------------------+---------+
       | name						   |	     |
       +---------------------------------------------------+---------+
       | image						   |	     |
       +---------------------------------------------------+---------+
       | imagePullPolicy				   |	     |
       +---------------------------------------------------+---------+
       | command					   |	     |
       +---------------------------------------------------+---------+
       | args						   |	     |
       +---------------------------------------------------+---------+
       | workingDir					   |	     |
       +---------------------------------------------------+---------+
       | ports.containerPort				   |	     |
       +---------------------------------------------------+---------+
       | ports.hostIP					   |	     |
       +---------------------------------------------------+---------+
       | ports.hostPort					   |	     |
       +---------------------------------------------------+---------+
       | ports.name					   |	     |
       +---------------------------------------------------+---------+
       | ports.protocol					   |	     |
       +---------------------------------------------------+---------+
       | env.name					   |	     |
       +---------------------------------------------------+---------+
       | env.value					   |	     |
       +---------------------------------------------------+---------+
       | env.valueFrom.configMapKeyRef.key		   |	     |
       +---------------------------------------------------+---------+
       | env.valueFrom.configMapKeyRef.name		   |	     |
       +---------------------------------------------------+---------+
       | env.valueFrom.configMapKeyRef.optional		   |	     |
       +---------------------------------------------------+---------+
       | env.valueFrom.fieldRef				   |	     |
       +---------------------------------------------------+---------+
       | env.valueFrom.resourceFieldRef			   |	     |
       +---------------------------------------------------+---------+
       | env.valueFrom.secretKeyRef.key			   |	     |
       +---------------------------------------------------+---------+
       | env.valueFrom.secretKeyRef.name		   |	     |
       +---------------------------------------------------+---------+
       | env.valueFrom.secretKeyRef.optional		   |	     |
       +---------------------------------------------------+---------+
       | envFrom.configMapRef.name			   |	     |
       +---------------------------------------------------+---------+
       | envFrom.configMapRef.optional			   |	     |
       +---------------------------------------------------+---------+
       | envFrom.prefix					   | no	     |
       +---------------------------------------------------+---------+
       | envFrom.secretRef.name				   |	     |
       +---------------------------------------------------+---------+
       | envFrom.secretRef.optional			   |	     |
       +---------------------------------------------------+---------+
       | volumeMounts.mountPath				   |	     |
       +---------------------------------------------------+---------+
       | volumeMounts.name				   |	     |
       +---------------------------------------------------+---------+
       | volumeMounts.mountPropagation			   | no	     |
       +---------------------------------------------------+---------+
       | volumeMounts.readOnly				   |	     |
       +---------------------------------------------------+---------+
       | volumeMounts.subPath				   |	     |
       +---------------------------------------------------+---------+
       | volumeMounts.subPathExpr			   | no	     |
       +---------------------------------------------------+---------+
       | volumeDevices.devicePath			   | no	     |
       +---------------------------------------------------+---------+
       | volumeDevices.name				   | no	     |
       +---------------------------------------------------+---------+
       | resources.limits				   |	     |
       +---------------------------------------------------+---------+
       | resources.requests				   |	     |
       +---------------------------------------------------+---------+
       | lifecycle.postStart				   | no	     |
       +---------------------------------------------------+---------+
       | lifecycle.preStop				   | no	     |
       +---------------------------------------------------+---------+
       | terminationMessagePath				   | no	     |
       +---------------------------------------------------+---------+
       | terminationMessagePolicy			   | no	     |
       +---------------------------------------------------+---------+
       | livenessProbe					   |	     |
       +---------------------------------------------------+---------+
       | readinessProbe					   | no	     |
       +---------------------------------------------------+---------+
       | startupProbe					   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.runAsUser			   |	     |
       +---------------------------------------------------+---------+
       | securityContext.runAsNonRoot			   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.runAsGroup			   |	     |
       +---------------------------------------------------+---------+
       | securityContext.readOnlyRootFilesystem		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.procMount			   |	     |
       +---------------------------------------------------+---------+
       | securityContext.privileged			   |	     |
       +---------------------------------------------------+---------+
       | securityContext.allowPrivilegeEscalation	   |	     |
       +---------------------------------------------------+---------+
       | securityContext.capabilities.add		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.capabilities.drop		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.seccompProfile.type		   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.seccompProfile.localhostProfile   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.seLinuxOptions.level		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.seLinuxOptions.role		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.seLinuxOptions.type		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.seLinuxOptions.user		   |	     |
       +---------------------------------------------------+---------+
       | securityContext.windowsOptions.gmsaCredentialSpec | no	     |
       +---------------------------------------------------+---------+
       | securityContext.windowsOptions.hostProcess	   | no	     |
       +---------------------------------------------------+---------+
       | securityContext.windowsOptions.runAsUserName	   | no	     |
       +---------------------------------------------------+---------+
       | stdin						   | no	     |
       +---------------------------------------------------+---------+
       | stdinOnce					   | no	     |
       +---------------------------------------------------+---------+
       | tty						   | no	     |
       +---------------------------------------------------+---------+

PersistentVolumeClaim Fields
       +--------------------+---------+
       | Field		    | Support |
       +--------------------+---------+
       | volumeName	    | no      |
       +--------------------+---------+
       | storageClassName   |	      |
       +--------------------+---------+
       | volumeMode	    | no      |
       +--------------------+---------+
       | accessModes	    |	      |
       +--------------------+---------+
       | selector	    | no      |
       +--------------------+---------+
       | resources.limits   | no      |
       +--------------------+---------+
       | resources.requests |	      |
       +--------------------+---------+

ConfigMap Fields
       +------------+---------+
       | Field	    | Support |
       +------------+---------+
       | binaryData |	      |
       +------------+---------+
       | data	    |	      |
       +------------+---------+
       | immutable  | no      |
       +------------+---------+

Deployment Fields
       +---------------------------------------+----------------------------+
       | Field				       | Support		    |
       +---------------------------------------+----------------------------+
       | replicas			       |  (the actual replica count |
       |				       | is ignored and	set to 1)   |
       +---------------------------------------+----------------------------+
       | selector			       |			    |
       +---------------------------------------+----------------------------+
       | template			       |			    |
       +---------------------------------------+----------------------------+
       | minReadySeconds		       | no			    |
       +---------------------------------------+----------------------------+
       | strategy.type			       | no			    |
       +---------------------------------------+----------------------------+
       | strategy.rollingUpdate.maxSurge       | no			    |
       +---------------------------------------+----------------------------+
       | strategy.rollingUpdate.maxUnavailable | no			    |
       +---------------------------------------+----------------------------+
       | revisionHistoryLimit		       | no			    |
       +---------------------------------------+----------------------------+
       | progressDeadlineSeconds	       | no			    |
       +---------------------------------------+----------------------------+
       | paused				       | no			    |
       +---------------------------------------+----------------------------+

DaemonSet Fields
       +---------------------------------------+---------+
       | Field				       | Support |
       +---------------------------------------+---------+
       | selector			       |	 |
       +---------------------------------------+---------+
       | template			       |	 |
       +---------------------------------------+---------+
       | minReadySeconds		       | no	 |
       +---------------------------------------+---------+
       | strategy.type			       | no	 |
       +---------------------------------------+---------+
       | strategy.rollingUpdate.maxSurge       | no	 |
       +---------------------------------------+---------+
       | strategy.rollingUpdate.maxUnavailable | no	 |
       +---------------------------------------+---------+
       | revisionHistoryLimit		       | no	 |
       +---------------------------------------+---------+

Job Fields
       +-------------------------+-------------------------------+
       | Field			 | Support			 |
       +-------------------------+-------------------------------+
       | activeDeadlineSeconds	 | no				 |
       +-------------------------+-------------------------------+
       | selector		 | no (automatically set by k8s) |
       +-------------------------+-------------------------------+
       | template		 |				 |
       +-------------------------+-------------------------------+
       | backoffLimit		 | no				 |
       +-------------------------+-------------------------------+
       | completionMode		 | no				 |
       +-------------------------+-------------------------------+
       | completions		 | no (set to 1	with kube gener- |
       |			 | ate)				 |
       +-------------------------+-------------------------------+
       | manualSelector		 | no				 |
       +-------------------------+-------------------------------+
       | parallelism		 | no (set to 1	with kube gener- |
       |			 | ate)				 |
       +-------------------------+-------------------------------+
       | podFailurePolicy	 | no				 |
       +-------------------------+-------------------------------+
       | suspend		 | no				 |
       +-------------------------+-------------------------------+
       | ttlSecondsAfterFinished | no				 |
       +-------------------------+-------------------------------+

SEE ALSO
       podman(1),   podman-kube(1),  podman-kube-down(1),  podman-network-cre-
       ate(1), podman-kube-generate(1),	podman-build(1), containers-certs.d(5)

							   podman-kube-play(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=podman-kube-play&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help