Skip to content

Commit a01545f

Browse files
committed
Data Path Port configuration support
This PR chnages allow user to configure data path port number. By default we use 4789 port number. But this commit will allow user to configure port number during swarm init. Data path port can't be modified after swarm init. Signed-off-by: selansen <[email protected]>
1 parent 052133a commit a01545f

7 files changed

Lines changed: 28 additions & 2 deletions

File tree

cli/command/swarm/init.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type initOptions struct {
2020
// Not a NodeAddrOption because it has no default port.
2121
advertiseAddr string
2222
dataPathAddr string
23+
dataPathPort uint32
2324
forceNewCluster bool
2425
availability string
2526
defaultAddrPools []net.IPNet
@@ -45,6 +46,8 @@ func newInitCommand(dockerCli command.Cli) *cobra.Command {
4546
flags.StringVar(&opts.advertiseAddr, flagAdvertiseAddr, "", "Advertised address (format: <ip|interface>[:port])")
4647
flags.StringVar(&opts.dataPathAddr, flagDataPathAddr, "", "Address or interface to use for data path traffic (format: <ip|interface>)")
4748
flags.SetAnnotation(flagDataPathAddr, "version", []string{"1.31"})
49+
flags.Uint32Var(&opts.dataPathPort, flagDataPathPort, 0, "Port number to use for data path traffic (1024 - 49151). If no value is set or is set to 0, the default port (4789) is used.")
50+
flags.SetAnnotation(flagDataPathPort, "version", []string{"1.40"})
4851
flags.BoolVar(&opts.forceNewCluster, "force-new-cluster", false, "Force create a new cluster from current state")
4952
flags.BoolVar(&opts.autolock, flagAutolock, false, "Enable manager autolocking (requiring an unlock key to start a stopped manager)")
5053
flags.StringVar(&opts.availability, flagAvailability, "active", `Availability of the node ("active"|"pause"|"drain")`)
@@ -74,6 +77,7 @@ func runInit(dockerCli command.Cli, flags *pflag.FlagSet, opts initOptions) erro
7477
Spec: opts.swarmOptions.ToSpec(flags),
7578
AutoLockManagers: opts.swarmOptions.autolock,
7679
SubnetSize: opts.DefaultAddrPoolMaskLength,
80+
DataPathPort: opts.dataPathPort,
7781
}
7882
if flags.Changed(flagAvailability) {
7983
availability := swarm.NodeAvailability(strings.ToLower(opts.availability))

cli/command/swarm/opts.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const (
2222
flagListenAddr = "listen-addr"
2323
flagAdvertiseAddr = "advertise-addr"
2424
flagDataPathAddr = "data-path-addr"
25+
flagDataPathPort = "data-path-port"
2526
flagDefaultAddrPool = "default-addr-pool"
2627
flagDefaultAddrPoolMaskLength = "default-addr-pool-mask-length"
2728
flagQuiet = "quiet"

cli/command/system/info.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,9 @@ func printSwarmInfo(dockerCli command.Cli, info types.Info) {
235235
fmt.Fprintln(dockerCli.Out(), " Default Address Pool:", strAddrPool.String())
236236
fmt.Fprintln(dockerCli.Out(), " SubnetSize:", info.Swarm.Cluster.SubnetSize)
237237
}
238+
if info.Swarm.Cluster.DataPathPort > 0 {
239+
fmt.Fprintln(dockerCli.Out(), " Data Path Port:", info.Swarm.Cluster.DataPathPort)
240+
}
238241
fmt.Fprintln(dockerCli.Out(), " Orchestration:")
239242

240243
taskHistoryRetentionLimit := int64(0)

cli/command/system/testdata/docker-info-with-swarm.golden

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Swarm: active
2121
ClusterID: 9vs5ygs0gguyyec4iqf2314c0
2222
Managers: 1
2323
Nodes: 1
24+
Data Path Port: 0
2425
Orchestration:
2526
Task History Retention Limit: 5
2627
Raft:

contrib/completion/bash/docker

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3698,7 +3698,7 @@ _docker_swarm_init() {
36983698
COMPREPLY=( $( compgen -W "active drain pause" -- "$cur" ) )
36993699
return
37003700
;;
3701-
--cert-expiry|--default-addr-pool|--default-addr-pool-mask-length|--dispatcher-heartbeat|--external-ca|--max-snapshots|--snapshot-interval|--task-history-limit )
3701+
--cert-expiry|--data-path-port|--default-addr-pool|--default-addr-pool-mask-length|--dispatcher-heartbeat|--external-ca|--max-snapshots|--snapshot-interval|--task-history-limit )
37023702
return
37033703
;;
37043704
--data-path-addr)
@@ -3718,7 +3718,7 @@ _docker_swarm_init() {
37183718

37193719
case "$cur" in
37203720
-*)
3721-
COMPREPLY=( $( compgen -W "--advertise-addr --autolock --availability --cert-expiry --data-path-addr --default-addr-pool --default-addr-pool-mask-length --dispatcher-heartbeat --external-ca --force-new-cluster --help --listen-addr --max-snapshots --snapshot-interval --task-history-limit" -- "$cur" ) )
3721+
COMPREPLY=( $( compgen -W "--advertise-addr --autolock --availability --cert-expiry --data-path-addr --data-path-port --default-addr-pool --default-addr-pool-mask-length --dispatcher-heartbeat --external-ca --force-new-cluster --help --listen-addr --max-snapshots --snapshot-interval --task-history-limit " -- "$cur" ) )
37223722
;;
37233723
esac
37243724
}

contrib/completion/zsh/_docker

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2285,6 +2285,7 @@ __docker_swarm_subcommand() {
22852285
$opts_help \
22862286
"($help)--advertise-addr=[Advertised address]:ip\:port: " \
22872287
"($help)--data-path-addr=[Data path IP or interface]:ip " \
2288+
"($help)--data-path-port=[Data Path Port] " \
22882289
"($help)--default-addr-pool=[Default address pool]" \
22892290
"($help)--default-addr-pool-mask-length=[Default address pool subnet mask length]" \
22902291
"($help)--autolock[Enable manager autolocking]" \

docs/reference/commandline/swarm_init.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Options:
2626
--availability string Availability of the node ("active"|"pause"|"drain") (default "active")
2727
--cert-expiry duration Validity period for node certificates (ns|us|ms|s|m|h) (default 2160h0m0s)
2828
--data-path-addr string Address or interface to use for data path traffic (format: <ip|interface>)
29+
--data-path-port uint Data path port number used for data path traffic
2930
--default-addr-pool IPnet List of default address pool (format: <cidr>)
3031
--default-addr-pool-mask-length Subnet mask length for default address pool (default 24)
3132
--dispatcher-heartbeat duration Dispatcher heartbeat period (ns|us|ms|s|m|h) (default 5s)
@@ -130,6 +131,21 @@ management traffic of the cluster.
130131
If unspecified, Docker will use the same IP address or interface that is used for the
131132
advertise address.
132133

134+
### `--data-path-port`
135+
136+
This flag specifies data path port number to use for data path traffic (1024 - 49151).
137+
If no value is set or is set to 0, the default port (4789) is used. This value is set for per cluster
138+
so the option is supported only via swarm init command. swarm update or swarm join commands do not support
139+
this option. The port is reserved for UDP traffic.
140+
Format example is `docker swarm init --data-path-addr=20.20.20.1 --data-path-port=7777`
141+
142+
Docker info output will display currently used port for data path traffic.
143+
Docker info #
144+
ClusterID: 9vs5ygs0gguyyec4iqf2314c0
145+
Managers: 1
146+
Nodes: 1
147+
Data Path Port: 7777
148+
133149
### `--default-addr-pool`
134150
This flag specifies default subnet pools for global scope networks.
135151
Format example is `--default-addr-pool 30.30.0.0/16 --default-addr-pool 40.40.0.0/16`

0 commit comments

Comments
 (0)