Add option to set a service nodeport
This patch adds the option to set a nodeport when creating a NodePort service. In case of a port allocation error due to a specified port being out of the valid range, the error now includes the valid range. If a `--node-port` value is not specified, it defaults to zero, in which case the allocator will default to its current behavior of assigning an available port. This patch also adds a new helper function in `cmd/util/helpers.go` to retrieve `Int32` cobra flags. **Example** ``` $ kubectl create service nodeport mynodeport --tcp=8080:7777 --node-port=1 The Service "mynodeport" is invalid: spec.ports[0].nodePort: Invalid value: 1: provided port is not in the valid range. Valid ports range from 30000-32767 $ kubectl create service nodeport mynodeport --tcp=8080:7777 --node-port=30000 service "mynodeport" created $ oc describe service mynodeport Name: mynodeport Namespace: default Labels: app=mynodeport Selector: app=mynodeport Type: NodePort IP: 172.30.81.254 Port: 8080-7777 8080/TCP NodePort: 8080-7777 30000/TCP Endpoints: <none> Session Affinity: None No events. ```
This commit is contained in:
@@ -82,7 +82,10 @@ func (r *PortAllocator) Free() int {
|
||||
func (r *PortAllocator) Allocate(port int) error {
|
||||
ok, offset := r.contains(port)
|
||||
if !ok {
|
||||
return ErrNotInRange
|
||||
// include valid port range in error
|
||||
validPorts := r.portRange.String()
|
||||
msg := fmt.Sprintf("Valid ports range is %s", validPorts)
|
||||
return fmt.Errorf("%v. %s", ErrNotInRange, msg)
|
||||
}
|
||||
|
||||
allocated, err := r.alloc.Allocate(offset)
|
||||
|
Reference in New Issue
Block a user