This is an automated email from the ASF dual-hosted git repository.
cmccabe pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new 79530921085 MINOR: support ipv6 in ducker-ak (#19537)
79530921085 is described below
commit 79530921085be282f87e3e76337684ad5fa890d9
Author: Kevin Wu <[email protected]>
AuthorDate: Tue May 6 15:55:18 2025 -0500
MINOR: support ipv6 in ducker-ak (#19537)
Reviewers: Colin P. McCabe <[email protected]>, Kirk True
<[email protected]>, Jhen-Yung Hsu <[email protected]>, Ian McDonald
<[email protected]>
---
tests/docker/ducker-ak | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/tests/docker/ducker-ak b/tests/docker/ducker-ak
index 82834384761..05af5ac9bb1 100755
--- a/tests/docker/ducker-ak
+++ b/tests/docker/ducker-ak
@@ -70,7 +70,7 @@ help|-h|--help
Display this help message
up [-n|--num-nodes NUM_NODES] [-f|--force] [docker-image]
- [-C|--custom-ducktape DIR] [-e|--expose-ports ports]
+ [-C|--custom-ducktape DIR] [-e|--expose-ports ports] [--ipv6]
Bring up a cluster with the specified amount of nodes (defaults to
${default_num_nodes}).
The docker image name defaults to ${default_image_name}. If --force is
specified, we will
attempt to bring up an image even some parameters are not valid.
@@ -83,6 +83,8 @@ up [-n|--num-nodes NUM_NODES] [-f|--force] [docker-image]
on the host. The argument can be a single port (like 5005), a port range
like (5005-5009)
or a combination of port/port-range separated by comma (like 2181,9092 or
2181,5005-5008).
By default no port is exposed. See README.md for more detail on this
option.
+
+ If --ipv6 is specified, we will create a Docker network with IPv6 enabled.
Note that port 5678 will be automatically exposed for ducker01 node and
will be mapped to 5678
on your local machine to enable debugging in VS Code.
@@ -349,6 +351,7 @@ ducker_up() {
-j|--jdk) set_once jdk_version "${2}" "the OpenJDK base image";
shift 2;;
-e|--expose-ports) set_once expose_ports "${2}" "the ports to
expose"; shift 2;;
-m|--kafka_mode) set_once kafka_mode "${2}" "the mode in which
kafka will run"; shift 2;;
+ --ipv6) set_once ipv6 "true" "enable IPv6"; shift;;
*) set_once image_name "${1}" "docker image name"; shift;;
esac
done
@@ -356,6 +359,7 @@ ducker_up() {
[[ -n "${jdk_version}" ]] || jdk_version="${default_jdk}"
[[ -n "${kafka_mode}" ]] || kafka_mode="${default_kafka_mode}"
[[ -n "${image_name}" ]] ||
image_name="${default_image_name}-${jdk_version/:/-}"
+ [[ -n "${ipv6}" ]] || ipv6="false"
[[ "${num_nodes}" =~ ^-?[0-9]+$ ]] || \
die "ducker_up: the number of nodes must be an integer."
[[ "${num_nodes}" -gt 0 ]] || die "ducker_up: the number of nodes must be
greater than 0."
@@ -399,7 +403,12 @@ attempting to start new ones."
if docker network inspect ducknet &>/dev/null; then
must_do -v docker network rm ducknet
fi
- must_do -v docker network create ducknet
+ network_create_args=""
+ if [[ "${ipv6}" == "true" ]]; then
+ subnet_cidr_prefix="${DUCKER_SUBNET_CIDR:-"fc00:cf17"}"
+ network_create_args="--ipv6 --subnet ${subnet_cidr_prefix}::/64"
+ fi
+ must_do -v docker network create ${network_create_args} ducknet
if [[ -n "${custom_ducktape}" ]]; then
setup_custom_ducktape "${custom_ducktape}" "${image_name}"
fi
@@ -412,7 +421,11 @@ attempting to start new ones."
exec 3<> "${ducker_dir}/build/node_hosts"
for n in $(seq -f %02g 1 ${num_nodes}); do
local node="ducker${n}"
- docker exec --user=root "${node}" grep "${node}" /etc/hosts >&3
+ if [[ "${ipv6}" == "true" ]]; then
+ docker exec --user=root "${node}" grep "${node}" /etc/hosts | grep
"${subnet_cidr_prefix}" >&3
+ else
+ docker exec --user=root "${node}" grep "${node}" /etc/hosts >&3
+ fi
[[ $? -ne 0 ]] && die "failed to find the /etc/hosts entry for ${node}"
done
exec 3>&-
@@ -421,6 +434,12 @@ attempting to start new ones."
docker exec --user=root "${node}" \
bash -c "grep -v ${node}
/opt/kafka-dev/tests/docker/build/node_hosts >> /etc/hosts"
[[ $? -ne 0 ]] && die "failed to append to the /etc/hosts file on
${node}"
+ # Filter out ipv4 addresses if ipv6
+ if [[ "${ipv6}" == "true" ]]; then
+ docker exec --user=root "${node}" \
+ bash -c "grep -v -E '([0-9]{1,3}\.){3}[0-9]{1,3}'
/opt/kafka-dev/tests/docker/build/node_hosts >> /etc/hosts"
+ [[ $? -ne 0 ]] && die "failed to append to the /etc/hosts file on
${node}"
+ fi
done
if [ "$kafka_mode" == "native" ]; then