mirror of https://github.com/containers/podman.git
Merge pull request #15998 from Luap99/play-kube-hostnet
podman kube play allow --network host
This commit is contained in:
commit
0513349355
|
@ -0,0 +1,32 @@
|
|||
#### **--network**=*mode*, **--net**
|
||||
|
||||
Set the network mode for the <<container|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.
|
||||
- **ip=IPv6**: Specify a static ipv6 address for this container.
|
||||
- **mac=MAC**: Specify a static mac address for this container.
|
||||
- **interface_name**: Specify a name for the created network interface 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 network; this is the network name or ID from a network created by **[podman network create](podman-network-create.1.md)**. Using the network name implies the bridge network mode. It is possible to specify the same options described under the bridge mode above. You can use the **--network** option multiple times to specify additional networks.
|
||||
- **none**: Create a network namespace for the container but do not configure network interfaces for it, thus the container has no network connectivity.
|
||||
- **container:**_id_: Reuse another container's network stack.
|
||||
- **host**: Do not create a network namespace, the container will use 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 will use the **bridge** mode for rootful containers and **slirp4netns** for rootless ones.
|
||||
- **slirp4netns[:OPTIONS,...]**: use **slirp4netns**(1) to create a user network stack. This is the default for rootless containers. 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 should bind to (ipv4 traffic only).
|
||||
- **outbound_addr=IPv4**: Specify the outbound ipv4 address slirp should bind to.
|
||||
- **outbound_addr6=INTERFACE**: Specify the outbound interface slirp should bind to (ipv6 traffic only).
|
||||
- **outbound_addr6=IPv6**: Specify the outbound ipv6 address slirp should bind to.
|
||||
- **port_handler=rootlesskit**: Use rootlesskit for port forwarding. Default.
|
||||
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 your application requires the real source IP address, e.g. web server logs, use the slirp4netns port handler. The rootlesskit port handler is also used for rootless containers when connected to user-defined networks.
|
||||
- **port_handler=slirp4netns**: Use the slirp4netns port forwarding, it is slower than rootlesskit but preserves the correct source IP address. This port handler cannot be used for user-defined networks.
|
|
@ -244,38 +244,11 @@ pod when that pod is not running.
|
|||
|
||||
@@option name.container
|
||||
|
||||
#### **--network**=*mode*, **--net**
|
||||
@@option network
|
||||
|
||||
Set the network mode for the container. Invalid if using **--dns**, **--dns-option**, or **--dns-search** with **--network** set to **none** or **container:**_id_. If used together with **--pod**, the container will not join the pod's network namespace.
|
||||
Invalid if using **--dns**, **--dns-option**, or **--dns-search** with **--network** set to **none** or **container:**_id_.
|
||||
|
||||
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.
|
||||
- **ip=IPv6**: Specify a static ipv6 address for this container.
|
||||
- **mac=MAC**: Specify a static mac address for this container.
|
||||
- **interface_name**: Specify a name for the created network interface 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 network; this is the network name or ID from a network created by **[podman network create](podman-network-create.1.md)**. Using the network name implies the bridge network mode. It is possible to specify the same options described under the bridge mode above. You can use the **--network** option multiple times to specify additional networks.
|
||||
- **none**: Create a network namespace for the container but do not configure network interfaces for it, thus the container has no network connectivity.
|
||||
- **container:**_id_: Reuse another container's network stack.
|
||||
- **host**: Do not create a network namespace, the container will use 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 will use the **bridge** mode for rootful containers and **slirp4netns** for rootless ones.
|
||||
- **slirp4netns[:OPTIONS,...]**: use **slirp4netns**(1) to create a user network stack. This is the default for rootless containers. 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 should bind to (ipv4 traffic only).
|
||||
- **outbound_addr=IPv4**: Specify the outbound ipv4 address slirp should bind to.
|
||||
- **outbound_addr6=INTERFACE**: Specify the outbound interface slirp should bind to (ipv6 traffic only).
|
||||
- **outbound_addr6=IPv6**: Specify the outbound ipv6 address slirp should bind to.
|
||||
- **port_handler=rootlesskit**: Use rootlesskit for port forwarding. Default.
|
||||
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 your application requires the real source IP address, e.g. web server logs, use the slirp4netns port handler. The rootlesskit port handler is also used for rootless containers when connected to user-defined networks.
|
||||
- **port_handler=slirp4netns**: Use the slirp4netns port forwarding, it is slower than rootlesskit but preserves the correct source IP address. This port handler cannot be used for user-defined networks.
|
||||
If used together with **--pod**, the container will not join the pod's network namespace.
|
||||
|
||||
@@option network-alias
|
||||
|
||||
|
|
|
@ -153,36 +153,9 @@ Set logging driver for all created containers.
|
|||
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 you should use the **--network name:mac=\<mac\>** syntax.
|
||||
|
||||
#### **--network**=*mode*, **--net**
|
||||
@@option network
|
||||
|
||||
Change the network mode of the pod. The host network mode should be configured in the YAML file.
|
||||
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.
|
||||
- **ip=IPv6**: Specify a static ipv6 address for this container.
|
||||
- **mac=MAC**: Specify a static mac address for this container.
|
||||
- **interface_name**: Specify a name for the created network interface 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 network; this is the network name or ID from a network created by **[podman network create](podman-network-create.1.md)**. Using the network name implies the bridge network mode. It is possible to specify the same options described under the bridge mode above. You can use the **--network** option multiple times to specify additional networks.
|
||||
- **none**: Create a network namespace for the container but do not configure network interfaces for it, thus the container has no network connectivity.
|
||||
- **container:**_id_: Reuse another container's network stack.
|
||||
- **ns:**_path_: Path to a network namespace to join.
|
||||
- **private**: Create a new namespace for the container. This will use the **bridge** mode for rootful containers and **slirp4netns** for rootless ones.
|
||||
- **slirp4netns[:OPTIONS,...]**: use **slirp4netns**(1) to create a user network stack. This is the default for rootless containers. 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 should bind to (ipv4 traffic only).
|
||||
- **outbound_addr=IPv4**: Specify the outbound ipv4 address slirp should bind to.
|
||||
- **outbound_addr6=INTERFACE**: Specify the outbound interface slirp should bind to (ipv6 traffic only).
|
||||
- **outbound_addr6=IPv6**: Specify the outbound ipv6 address slirp should bind to.
|
||||
- **port_handler=rootlesskit**: Use rootlesskit for port forwarding. Default.
|
||||
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 your application requires the real source IP address, e.g. web server logs, use the slirp4netns port handler. The rootlesskit port handler is also used for rootless containers when connected to user-defined networks.
|
||||
- **port_handler=slirp4netns**: Use the slirp4netns port forwarding, it is slower than rootlesskit but preserves the correct source IP address. This port handler cannot be used for user-defined networks.
|
||||
The *host* network mode should be configured in the YAML file.
|
||||
|
||||
@@option no-hosts
|
||||
|
||||
|
|
|
@ -117,38 +117,9 @@ The custom image that will be used for the infra container. Unless specified, P
|
|||
|
||||
Assign a name to the pod.
|
||||
|
||||
#### **--network**=*mode*, **--net**
|
||||
@@option network
|
||||
|
||||
Set the network mode for the pod. Invalid if using **--dns**, **--dns-option**, or **--dns-search** with **--network** that is set to **none** or **container:**_id_.
|
||||
|
||||
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.
|
||||
- **ip=IPv6**: Specify a static ipv6 address for this container.
|
||||
- **mac=MAC**: Specify a static mac address for this container.
|
||||
- **interface_name**: Specify a name for the created network interface 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 network; this is the network name or ID from a network created by **[podman network create](podman-network-create.1.md)**. Using the network name implies the bridge network mode. It is possible to specify the same options described under the bridge mode above. You can use the **--network** option multiple times to specify additional networks.
|
||||
- **none**: Create a network namespace for the container but do not configure network interfaces for it, thus the container has no network connectivity.
|
||||
- **container:**_id_: Reuse another container's network stack.
|
||||
- **host**: Do not create a network namespace, the container will use 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 will use the **bridge** mode for rootful containers and **slirp4netns** for rootless ones.
|
||||
- **slirp4netns[:OPTIONS,...]**: use **slirp4netns**(1) to create a user network stack. This is the default for rootless containers. 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 should bind to (ipv4 traffic only).
|
||||
- **outbound_addr=IPv4**: Specify the outbound ipv4 address slirp should bind to.
|
||||
- **outbound_addr6=INTERFACE**: Specify the outbound interface slirp should bind to (ipv6 traffic only).
|
||||
- **outbound_addr6=IPv6**: Specify the outbound ipv6 address slirp should bind to.
|
||||
- **port_handler=rootlesskit**: Use rootlesskit for port forwarding. Default.
|
||||
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 your application requires the real source IP address, e.g. web server logs, use the slirp4netns port handler. The rootlesskit port handler is also used for rootless containers when connected to user-defined networks.
|
||||
- **port_handler=slirp4netns**: Use the slirp4netns port forwarding, it is slower than rootlesskit but preserves the correct source IP address. This port handler cannot be used for user-defined networks.
|
||||
Invalid if using **--dns**, **--dns-option**, or **--dns-search** with **--network** set to **none** or **container:**_id_.
|
||||
|
||||
@@option network-alias
|
||||
|
||||
|
|
|
@ -265,38 +265,11 @@ Print usage statement
|
|||
|
||||
@@option name.container
|
||||
|
||||
#### **--network**=*mode*, **--net**
|
||||
@@option network
|
||||
|
||||
Set the network mode for the container. Invalid if using **--dns**, **--dns-option**, or **--dns-search** with **--network** set to **none** or **container:**_id_. If used together with **--pod**, the container will not join the pod's network namespace.
|
||||
Invalid if using **--dns**, **--dns-option**, or **--dns-search** with **--network** set to **none** or **container:**_id_.
|
||||
|
||||
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.
|
||||
- **ip=IPv6**: Specify a static ipv6 address for this container.
|
||||
- **mac=MAC**: Specify a static mac address for this container.
|
||||
- **interface_name**: Specify a name for the created network interface 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 network; this is the network name or ID from a network created by **[podman network create](podman-network-create.1.md)**. Using the network name implies the bridge network mode. It is possible to specify the same options described under the bridge mode above. You can use the **--network** option multiple times to specify additional networks.
|
||||
- **none**: Create a network namespace for the container but do not configure network interfaces for it, thus the container has no network connectivity.
|
||||
- **container:**_id_: Reuse another container's network stack.
|
||||
- **host**: Do not create a network namespace, the container will use 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 will use the **bridge** mode for rootful containers and **slirp4netns** for rootless ones.
|
||||
- **slirp4netns[:OPTIONS,...]**: use **slirp4netns**(1) to create a user network stack. This is the default for rootless containers. 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 should bind to (ipv4 traffic only).
|
||||
- **outbound_addr=IPv4**: Specify the outbound ipv4 address slirp should bind to.
|
||||
- **outbound_addr6=INTERFACE**: Specify the outbound interface slirp should bind to (ipv6 traffic only).
|
||||
- **outbound_addr6=IPv6**: Specify the outbound ipv6 address slirp should bind to.
|
||||
- **port_handler=rootlesskit**: Use rootlesskit for port forwarding. Default.
|
||||
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 your application requires the real source IP address, e.g. web server logs, use the slirp4netns port handler. The rootlesskit port handler is also used for rootless containers when connected to user-defined networks.
|
||||
- **port_handler=slirp4netns**: Use the slirp4netns port forwarding, it is slower than rootlesskit but preserves the correct source IP address. This port handler cannot be used for user-defined networks.
|
||||
If used together with **--pod**, the container will not join the pod's network namespace.
|
||||
|
||||
@@option network-alias
|
||||
|
||||
|
|
|
@ -344,10 +344,6 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if (ns.IsBridge() && len(networks) == 0) || ns.IsHost() {
|
||||
return nil, fmt.Errorf("invalid value passed to --network: bridge or host networking must be configured in YAML")
|
||||
}
|
||||
|
||||
podOpt.Net.Network = ns
|
||||
podOpt.Net.Networks = networks
|
||||
podOpt.Net.NetworkOptions = netOpts
|
||||
|
|
|
@ -165,8 +165,14 @@ EOF
|
|||
TESTDIR=$PODMAN_TMPDIR/testdir
|
||||
mkdir -p $TESTDIR
|
||||
echo "$testYaml" | sed "s|TESTDIR|${TESTDIR}|g" > $PODMAN_TMPDIR/test.yaml
|
||||
run_podman 125 kube play --network host $PODMAN_TMPDIR/test.yaml
|
||||
is "$output" ".*invalid value passed to --network: bridge or host networking must be configured in YAML" "podman plan-network should fail with --network host"
|
||||
run_podman kube play --network host $PODMAN_TMPDIR/test.yaml
|
||||
is "$output" "Pod:.*" "podman kube play should work with --network host"
|
||||
|
||||
run_podman pod inspect --format "{{.InfraConfig.HostNetwork}}" test_pod
|
||||
is "$output" "true" ".InfraConfig.HostNetwork"
|
||||
run_podman stop -a -t 0
|
||||
run_podman pod rm -t 0 -f test_pod
|
||||
|
||||
run_podman kube play --network slirp4netns:port_handler=slirp4netns $PODMAN_TMPDIR/test.yaml
|
||||
run_podman pod inspect --format {{.InfraContainerID}} "${lines[1]}"
|
||||
infraID="$output"
|
||||
|
|
Loading…
Reference in New Issue