mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 18:24:07 +00:00
Merge pull request #43370 from feiskyer/port-mapping
Automatic merge from submit-queue (batch tested with PRs 42659, 43370) dockershim: process protocol correctly for port mapping **What this PR does / why we need it**: dockershim: process protocol correctly for port mapping. **Which issue this PR fixes** Fixes #43365. **Special notes for your reviewer**: Should be included in v1.6. **Release note**: ```release-note NONE ``` cc/ @Random-Liu @justinsb @kubernetes/sig-node-pr-reviews
This commit is contained in:
commit
e668ee1182
@ -96,6 +96,7 @@ go_test(
|
||||
"//vendor:github.com/blang/semver",
|
||||
"//vendor:github.com/docker/engine-api/types",
|
||||
"//vendor:github.com/docker/engine-api/types/container",
|
||||
"//vendor:github.com/docker/go-connections/nat",
|
||||
"//vendor:github.com/golang/mock/gomock",
|
||||
"//vendor:github.com/stretchr/testify/assert",
|
||||
"//vendor:github.com/stretchr/testify/require",
|
||||
|
@ -149,10 +149,10 @@ func makePortsAndBindings(pm []*runtimeapi.PortMapping) (map[dockernat.Port]stru
|
||||
// Some of this port stuff is under-documented voodoo.
|
||||
// See http://stackoverflow.com/questions/20428302/binding-a-port-to-a-host-interface-using-the-rest-api
|
||||
var protocol string
|
||||
switch strings.ToUpper(string(port.Protocol)) {
|
||||
case "UDP":
|
||||
switch port.Protocol {
|
||||
case runtimeapi.Protocol_UDP:
|
||||
protocol = "/udp"
|
||||
case "TCP":
|
||||
case runtimeapi.Protocol_TCP:
|
||||
protocol = "/tcp"
|
||||
default:
|
||||
glog.Warningf("Unknown protocol %q: defaulting to TCP", port.Protocol)
|
||||
|
@ -22,6 +22,7 @@ import (
|
||||
|
||||
"github.com/blang/semver"
|
||||
dockertypes "github.com/docker/engine-api/types"
|
||||
dockernat "github.com/docker/go-connections/nat"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
@ -301,3 +302,87 @@ func TestEnsureSandboxImageExists(t *testing.T) {
|
||||
assert.Equal(t, test.err, err != nil)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMakePortsAndBindings(t *testing.T) {
|
||||
for desc, test := range map[string]struct {
|
||||
pm []*runtimeapi.PortMapping
|
||||
exposedPorts map[dockernat.Port]struct{}
|
||||
portmappings map[dockernat.Port][]dockernat.PortBinding
|
||||
}{
|
||||
"no port mapping": {
|
||||
pm: nil,
|
||||
exposedPorts: map[dockernat.Port]struct{}{},
|
||||
portmappings: map[dockernat.Port][]dockernat.PortBinding{},
|
||||
},
|
||||
"tcp port mapping": {
|
||||
pm: []*runtimeapi.PortMapping{
|
||||
{
|
||||
Protocol: runtimeapi.Protocol_TCP,
|
||||
ContainerPort: 80,
|
||||
HostPort: 80,
|
||||
},
|
||||
},
|
||||
exposedPorts: map[dockernat.Port]struct{}{
|
||||
"80/tcp": {},
|
||||
},
|
||||
portmappings: map[dockernat.Port][]dockernat.PortBinding{
|
||||
"80/tcp": {
|
||||
{
|
||||
HostPort: "80",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"udp port mapping": {
|
||||
pm: []*runtimeapi.PortMapping{
|
||||
{
|
||||
Protocol: runtimeapi.Protocol_UDP,
|
||||
ContainerPort: 80,
|
||||
HostPort: 80,
|
||||
},
|
||||
},
|
||||
exposedPorts: map[dockernat.Port]struct{}{
|
||||
"80/udp": {},
|
||||
},
|
||||
portmappings: map[dockernat.Port][]dockernat.PortBinding{
|
||||
"80/udp": {
|
||||
{
|
||||
HostPort: "80",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"multipe port mappings": {
|
||||
pm: []*runtimeapi.PortMapping{
|
||||
{
|
||||
Protocol: runtimeapi.Protocol_TCP,
|
||||
ContainerPort: 80,
|
||||
HostPort: 80,
|
||||
},
|
||||
{
|
||||
Protocol: runtimeapi.Protocol_TCP,
|
||||
ContainerPort: 80,
|
||||
HostPort: 81,
|
||||
},
|
||||
},
|
||||
exposedPorts: map[dockernat.Port]struct{}{
|
||||
"80/tcp": {},
|
||||
},
|
||||
portmappings: map[dockernat.Port][]dockernat.PortBinding{
|
||||
"80/tcp": {
|
||||
{
|
||||
HostPort: "80",
|
||||
},
|
||||
{
|
||||
HostPort: "81",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
} {
|
||||
t.Logf("TestCase: %s", desc)
|
||||
actualExposedPorts, actualPortMappings := makePortsAndBindings(test.pm)
|
||||
assert.Equal(t, test.exposedPorts, actualExposedPorts)
|
||||
assert.Equal(t, test.portmappings, actualPortMappings)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user