forked from LaconicNetwork/kompose
Fix misuse in struct kobject.ServiceConfig.Port (#1423)
This commit is contained in:
parent
0671410009
commit
2f081075a8
@ -26,7 +26,6 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/spf13/cast"
|
"github.com/spf13/cast"
|
||||||
v1 "k8s.io/api/apps/v1"
|
v1 "k8s.io/api/apps/v1"
|
||||||
corev1 "k8s.io/api/core/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -91,6 +90,7 @@ func (opt *ConvertOptions) IsPodController() bool {
|
|||||||
type ServiceConfigGroup []ServiceConfig
|
type ServiceConfigGroup []ServiceConfig
|
||||||
|
|
||||||
// ServiceConfig holds the basic struct of a container
|
// ServiceConfig holds the basic struct of a container
|
||||||
|
// which should not introduce any kubernetes specific struct
|
||||||
type ServiceConfig struct {
|
type ServiceConfig struct {
|
||||||
Name string
|
Name string
|
||||||
ContainerName string
|
ContainerName string
|
||||||
@ -186,7 +186,7 @@ type Ports struct {
|
|||||||
HostPort int32
|
HostPort int32
|
||||||
ContainerPort int32
|
ContainerPort int32
|
||||||
HostIP string
|
HostIP string
|
||||||
Protocol corev1.Protocol
|
Protocol string // Upper string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Volumes holds the volume struct of container
|
// Volumes holds the volume struct of container
|
||||||
|
|||||||
@ -156,20 +156,15 @@ func loadEnvVars(service Service) ([]kobject.EnvVar, error) {
|
|||||||
func loadPorts(service Service) ([]kobject.Ports, error) {
|
func loadPorts(service Service) ([]kobject.Ports, error) {
|
||||||
ports := []kobject.Ports{}
|
ports := []kobject.Ports{}
|
||||||
for _, port := range service.Ports {
|
for _, port := range service.Ports {
|
||||||
var p api.Protocol
|
komposePorts := kobject.Ports{
|
||||||
switch port.Protocol {
|
|
||||||
default:
|
|
||||||
p = api.ProtocolTCP
|
|
||||||
case "TCP":
|
|
||||||
p = api.ProtocolTCP
|
|
||||||
case "UDP":
|
|
||||||
p = api.ProtocolUDP
|
|
||||||
}
|
|
||||||
ports = append(ports, kobject.Ports{
|
|
||||||
HostPort: int32(port.Port),
|
HostPort: int32(port.Port),
|
||||||
ContainerPort: int32(port.Port),
|
ContainerPort: int32(port.Port),
|
||||||
Protocol: p,
|
Protocol: port.Protocol,
|
||||||
})
|
}
|
||||||
|
if protocol := api.Protocol(port.Protocol); protocol != api.ProtocolTCP && protocol != api.ProtocolUDP {
|
||||||
|
komposePorts.Protocol = string(api.ProtocolTCP)
|
||||||
|
}
|
||||||
|
ports = append(ports, komposePorts)
|
||||||
}
|
}
|
||||||
return ports, nil
|
return ports, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -124,20 +124,20 @@ func TestLoadV3Ports(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
desc: "ports with expose",
|
desc: "ports with expose",
|
||||||
ports: []types.ServicePortConfig{{Target: 80, Published: 80, Protocol: "TCP"}},
|
ports: []types.ServicePortConfig{{Target: 80, Published: 80, Protocol: string(api.ProtocolTCP)}},
|
||||||
expose: []string{"80", "8080"},
|
expose: []string{"80", "8080"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{HostPort: 80, ContainerPort: 80, Protocol: api.Protocol("TCP")},
|
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 8080, ContainerPort: 8080, Protocol: api.Protocol("TCP")},
|
{HostPort: 8080, ContainerPort: 8080, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
desc: "exposed port including /protocol",
|
desc: "exposed port including /protocol",
|
||||||
ports: []types.ServicePortConfig{{Target: 80, Published: 80, Protocol: "TCP"}},
|
ports: []types.ServicePortConfig{{Target: 80, Published: 80, Protocol: string(api.ProtocolTCP)}},
|
||||||
expose: []string{"80/udp"},
|
expose: []string{"80/udp"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{HostPort: 80, ContainerPort: 80, Protocol: api.Protocol("TCP")},
|
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 80, ContainerPort: 80, Protocol: api.Protocol("UDP")},
|
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolUDP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
} {
|
} {
|
||||||
@ -187,74 +187,74 @@ func TestLoadPorts(t *testing.T) {
|
|||||||
{
|
{
|
||||||
ports: []string{"127.0.0.1:80:80/tcp"},
|
ports: []string{"127.0.0.1:80:80/tcp"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{HostIP: "127.0.0.1", HostPort: 80, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
{HostIP: "127.0.0.1", HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ports: []string{"80:80/tcp"},
|
ports: []string{"80:80/tcp"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{HostPort: 80, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ports: []string{"80:80"},
|
ports: []string{"80:80"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{HostPort: 80, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ports: []string{"80"},
|
ports: []string{"80"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{ContainerPort: 80, Protocol: api.ProtocolTCP},
|
{ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ports: []string{"3000-3005"},
|
ports: []string{"3000-3005"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{ContainerPort: 3000, Protocol: api.ProtocolTCP},
|
{ContainerPort: 3000, Protocol: string(api.ProtocolTCP)},
|
||||||
{ContainerPort: 3001, Protocol: api.ProtocolTCP},
|
{ContainerPort: 3001, Protocol: string(api.ProtocolTCP)},
|
||||||
{ContainerPort: 3002, Protocol: api.ProtocolTCP},
|
{ContainerPort: 3002, Protocol: string(api.ProtocolTCP)},
|
||||||
{ContainerPort: 3003, Protocol: api.ProtocolTCP},
|
{ContainerPort: 3003, Protocol: string(api.ProtocolTCP)},
|
||||||
{ContainerPort: 3004, Protocol: api.ProtocolTCP},
|
{ContainerPort: 3004, Protocol: string(api.ProtocolTCP)},
|
||||||
{ContainerPort: 3005, Protocol: api.ProtocolTCP},
|
{ContainerPort: 3005, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ports: []string{"3000-3005:5000-5005"},
|
ports: []string{"3000-3005:5000-5005"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{HostPort: 3000, ContainerPort: 5000, Protocol: api.ProtocolTCP},
|
{HostPort: 3000, ContainerPort: 5000, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 3001, ContainerPort: 5001, Protocol: api.ProtocolTCP},
|
{HostPort: 3001, ContainerPort: 5001, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 3002, ContainerPort: 5002, Protocol: api.ProtocolTCP},
|
{HostPort: 3002, ContainerPort: 5002, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 3003, ContainerPort: 5003, Protocol: api.ProtocolTCP},
|
{HostPort: 3003, ContainerPort: 5003, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 3004, ContainerPort: 5004, Protocol: api.ProtocolTCP},
|
{HostPort: 3004, ContainerPort: 5004, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 3005, ContainerPort: 5005, Protocol: api.ProtocolTCP},
|
{HostPort: 3005, ContainerPort: 5005, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ports: []string{"127.0.0.1:3000-3005:5000-5005"},
|
ports: []string{"127.0.0.1:3000-3005:5000-5005"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{HostIP: "127.0.0.1", HostPort: 3000, ContainerPort: 5000, Protocol: api.ProtocolTCP},
|
{HostIP: "127.0.0.1", HostPort: 3000, ContainerPort: 5000, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostIP: "127.0.0.1", HostPort: 3001, ContainerPort: 5001, Protocol: api.ProtocolTCP},
|
{HostIP: "127.0.0.1", HostPort: 3001, ContainerPort: 5001, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostIP: "127.0.0.1", HostPort: 3002, ContainerPort: 5002, Protocol: api.ProtocolTCP},
|
{HostIP: "127.0.0.1", HostPort: 3002, ContainerPort: 5002, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostIP: "127.0.0.1", HostPort: 3003, ContainerPort: 5003, Protocol: api.ProtocolTCP},
|
{HostIP: "127.0.0.1", HostPort: 3003, ContainerPort: 5003, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostIP: "127.0.0.1", HostPort: 3004, ContainerPort: 5004, Protocol: api.ProtocolTCP},
|
{HostIP: "127.0.0.1", HostPort: 3004, ContainerPort: 5004, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostIP: "127.0.0.1", HostPort: 3005, ContainerPort: 5005, Protocol: api.ProtocolTCP},
|
{HostIP: "127.0.0.1", HostPort: 3005, ContainerPort: 5005, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ports: []string{"80", "3000"},
|
ports: []string{"80", "3000"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{HostPort: 0, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
{HostPort: 0, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 0, ContainerPort: 3000, Protocol: api.ProtocolTCP},
|
{HostPort: 0, ContainerPort: 3000, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ports: []string{"80", "3000"},
|
ports: []string{"80", "3000"},
|
||||||
expose: []string{"80", "8080"},
|
expose: []string{"80", "8080"},
|
||||||
want: []kobject.Ports{
|
want: []kobject.Ports{
|
||||||
{HostPort: 0, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
{HostPort: 0, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 0, ContainerPort: 3000, Protocol: api.ProtocolTCP},
|
{HostPort: 0, ContainerPort: 3000, Protocol: string(api.ProtocolTCP)},
|
||||||
{HostPort: 0, ContainerPort: 8080, Protocol: api.ProtocolTCP},
|
{HostPort: 0, ContainerPort: 8080, Protocol: string(api.ProtocolTCP)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -132,7 +132,7 @@ func loadPorts(composePorts []string, expose []string) ([]kobject.Ports, error)
|
|||||||
HostPort: int32(cfg.PublishedPort),
|
HostPort: int32(cfg.PublishedPort),
|
||||||
ContainerPort: int32(cfg.TargetPort),
|
ContainerPort: int32(cfg.TargetPort),
|
||||||
HostIP: hostIP,
|
HostIP: hostIP,
|
||||||
Protocol: api.Protocol(strings.ToUpper(string(cfg.Protocol))),
|
Protocol: strings.ToUpper(string(cfg.Protocol)),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,23 +141,23 @@ func loadPorts(composePorts []string, expose []string) ([]kobject.Ports, error)
|
|||||||
// load remain expose ports
|
// load remain expose ports
|
||||||
for _, p := range kp {
|
for _, p := range kp {
|
||||||
// must use cast...
|
// must use cast...
|
||||||
exist[cast.ToString(p.ContainerPort)+string(p.Protocol)] = true
|
exist[cast.ToString(p.ContainerPort)+p.Protocol] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if expose != nil {
|
if expose != nil {
|
||||||
for _, port := range expose {
|
for _, port := range expose {
|
||||||
portValue := port
|
portValue := port
|
||||||
protocol := api.ProtocolTCP
|
protocol := string(api.ProtocolTCP)
|
||||||
if strings.Contains(portValue, "/") {
|
if strings.Contains(portValue, "/") {
|
||||||
splits := strings.Split(port, "/")
|
splits := strings.Split(port, "/")
|
||||||
portValue = splits[0]
|
portValue = splits[0]
|
||||||
protocol = api.Protocol(strings.ToUpper(splits[1]))
|
protocol = splits[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
if !exist[portValue+string(protocol)] {
|
if !exist[portValue+protocol] {
|
||||||
kp = append(kp, kobject.Ports{
|
kp = append(kp, kobject.Ports{
|
||||||
ContainerPort: cast.ToInt32(portValue),
|
ContainerPort: cast.ToInt32(portValue),
|
||||||
Protocol: protocol,
|
Protocol: strings.ToUpper(protocol),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -210,30 +210,30 @@ func loadV3Ports(ports []types.ServicePortConfig, expose []string) []kobject.Por
|
|||||||
HostPort: int32(port.Published),
|
HostPort: int32(port.Published),
|
||||||
ContainerPort: int32(port.Target),
|
ContainerPort: int32(port.Target),
|
||||||
HostIP: "",
|
HostIP: "",
|
||||||
Protocol: api.Protocol(strings.ToUpper(port.Protocol)),
|
Protocol: strings.ToUpper(port.Protocol),
|
||||||
})
|
})
|
||||||
|
|
||||||
exist[cast.ToString(port.Target)+strings.ToUpper(port.Protocol)] = true
|
exist[cast.ToString(port.Target)+port.Protocol] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if expose != nil {
|
if expose != nil {
|
||||||
for _, port := range expose {
|
for _, port := range expose {
|
||||||
portValue := port
|
portValue := port
|
||||||
protocol := api.ProtocolTCP
|
protocol := string(api.ProtocolTCP)
|
||||||
if strings.Contains(portValue, "/") {
|
if strings.Contains(portValue, "/") {
|
||||||
splits := strings.Split(port, "/")
|
splits := strings.Split(port, "/")
|
||||||
portValue = splits[0]
|
portValue = splits[0]
|
||||||
protocol = api.Protocol(strings.ToUpper(splits[1]))
|
protocol = splits[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
if exist[portValue+string(protocol)] {
|
if exist[portValue+protocol] {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
komposePorts = append(komposePorts, kobject.Ports{
|
komposePorts = append(komposePorts, kobject.Ports{
|
||||||
HostPort: cast.ToInt32(portValue),
|
HostPort: cast.ToInt32(portValue),
|
||||||
ContainerPort: cast.ToInt32(portValue),
|
ContainerPort: cast.ToInt32(portValue),
|
||||||
HostIP: "",
|
HostIP: "",
|
||||||
Protocol: protocol,
|
Protocol: strings.ToUpper(protocol),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,7 +40,7 @@ func TestCreateService(t *testing.T) {
|
|||||||
ContainerName: "name",
|
ContainerName: "name",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
||||||
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: corev1.ProtocolTCP}},
|
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: string(corev1.ProtocolTCP)}},
|
||||||
Command: []string{"cmd"},
|
Command: []string{"cmd"},
|
||||||
WorkingDir: "dir",
|
WorkingDir: "dir",
|
||||||
Args: []string{"arg1", "arg2"},
|
Args: []string{"arg1", "arg2"},
|
||||||
@ -83,7 +83,7 @@ func TestCreateServiceWithMemLimit(t *testing.T) {
|
|||||||
ContainerName: "name",
|
ContainerName: "name",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
||||||
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: corev1.ProtocolTCP}},
|
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: string(corev1.ProtocolTCP)}},
|
||||||
Command: []string{"cmd"},
|
Command: []string{"cmd"},
|
||||||
WorkingDir: "dir",
|
WorkingDir: "dir",
|
||||||
Args: []string{"arg1", "arg2"},
|
Args: []string{"arg1", "arg2"},
|
||||||
@ -135,7 +135,7 @@ func TestCreateServiceWithCPULimit(t *testing.T) {
|
|||||||
ContainerName: "name",
|
ContainerName: "name",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
||||||
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: corev1.ProtocolTCP}},
|
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: string(corev1.ProtocolTCP)}},
|
||||||
Command: []string{"cmd"},
|
Command: []string{"cmd"},
|
||||||
WorkingDir: "dir",
|
WorkingDir: "dir",
|
||||||
Args: []string{"arg1", "arg2"},
|
Args: []string{"arg1", "arg2"},
|
||||||
@ -188,7 +188,7 @@ func TestCreateServiceWithServiceUser(t *testing.T) {
|
|||||||
ContainerName: "name",
|
ContainerName: "name",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
||||||
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: corev1.ProtocolTCP}},
|
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: string(corev1.ProtocolTCP)}},
|
||||||
Command: []string{"cmd"},
|
Command: []string{"cmd"},
|
||||||
WorkingDir: "dir",
|
WorkingDir: "dir",
|
||||||
Args: []string{"arg1", "arg2"},
|
Args: []string{"arg1", "arg2"},
|
||||||
@ -231,7 +231,7 @@ func TestTransformWithPid(t *testing.T) {
|
|||||||
ContainerName: "name",
|
ContainerName: "name",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
||||||
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: corev1.ProtocolTCP}},
|
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: string(corev1.ProtocolTCP)}},
|
||||||
Command: []string{"cmd"},
|
Command: []string{"cmd"},
|
||||||
WorkingDir: "dir",
|
WorkingDir: "dir",
|
||||||
Args: []string{"arg1", "arg2"},
|
Args: []string{"arg1", "arg2"},
|
||||||
@ -267,7 +267,7 @@ func TestTransformWithInvalidPid(t *testing.T) {
|
|||||||
ContainerName: "name",
|
ContainerName: "name",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
||||||
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: corev1.ProtocolTCP}},
|
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: string(corev1.ProtocolTCP)}},
|
||||||
Command: []string{"cmd"},
|
Command: []string{"cmd"},
|
||||||
WorkingDir: "dir",
|
WorkingDir: "dir",
|
||||||
Args: []string{"arg1", "arg2"},
|
Args: []string{"arg1", "arg2"},
|
||||||
|
|||||||
@ -574,23 +574,19 @@ func ConfigPorts(name string, service kobject.ServiceConfig) []api.ContainerPort
|
|||||||
exist := map[string]bool{}
|
exist := map[string]bool{}
|
||||||
for _, port := range service.Port {
|
for _, port := range service.Port {
|
||||||
// temp use as an id
|
// temp use as an id
|
||||||
if exist[string(port.ContainerPort)+string(port.Protocol)] {
|
if exist[string(port.ContainerPort)+port.Protocol] {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// If the default is already TCP, no need to include it.
|
containerPort := api.ContainerPort{
|
||||||
if port.Protocol == api.ProtocolTCP {
|
ContainerPort: port.ContainerPort,
|
||||||
ports = append(ports, api.ContainerPort{
|
HostIP: port.HostIP,
|
||||||
ContainerPort: port.ContainerPort,
|
|
||||||
HostIP: port.HostIP,
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
ports = append(ports, api.ContainerPort{
|
|
||||||
ContainerPort: port.ContainerPort,
|
|
||||||
Protocol: port.Protocol,
|
|
||||||
HostIP: port.HostIP,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
exist[string(port.ContainerPort)+string(port.Protocol)] = true
|
// If the default is already TCP, no need to include protocol.
|
||||||
|
if protocol := api.Protocol(port.Protocol); protocol != api.ProtocolTCP {
|
||||||
|
containerPort.Protocol = protocol
|
||||||
|
}
|
||||||
|
ports = append(ports, containerPort)
|
||||||
|
exist[string(port.ContainerPort)+port.Protocol] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
return ports
|
return ports
|
||||||
@ -613,14 +609,11 @@ func (k *Kubernetes) ConfigLBServicePorts(name string, service kobject.ServiceCo
|
|||||||
TargetPort: targetPort,
|
TargetPort: targetPort,
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the default is already TCP, no need to include it.
|
if protocol := api.Protocol(port.Protocol); protocol == api.ProtocolTCP {
|
||||||
if port.Protocol != api.ProtocolTCP {
|
// If the default is already TCP, no need to include protocol.
|
||||||
servicePort.Protocol = port.Protocol
|
|
||||||
}
|
|
||||||
|
|
||||||
if port.Protocol == api.ProtocolTCP {
|
|
||||||
tcpPorts = append(tcpPorts, servicePort)
|
tcpPorts = append(tcpPorts, servicePort)
|
||||||
} else {
|
} else {
|
||||||
|
servicePort.Protocol = protocol
|
||||||
udpPorts = append(udpPorts, servicePort)
|
udpPorts = append(udpPorts, servicePort)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -649,7 +642,7 @@ func (k *Kubernetes) ConfigServicePorts(name string, service kobject.ServiceConf
|
|||||||
if service.ServiceType == string(api.ServiceTypeLoadBalancer) {
|
if service.ServiceType == string(api.ServiceTypeLoadBalancer) {
|
||||||
log.Fatalf("Service %s of type LoadBalancer cannot use TCP and UDP for the same port", name)
|
log.Fatalf("Service %s of type LoadBalancer cannot use TCP and UDP for the same port", name)
|
||||||
}
|
}
|
||||||
name = fmt.Sprintf("%s-%s", name, strings.ToLower(string(port.Protocol)))
|
name = fmt.Sprintf("%s-%s", name, strings.ToLower(port.Protocol))
|
||||||
}
|
}
|
||||||
|
|
||||||
servicePort = api.ServicePort{
|
servicePort = api.ServicePort{
|
||||||
@ -662,9 +655,9 @@ func (k *Kubernetes) ConfigServicePorts(name string, service kobject.ServiceConf
|
|||||||
servicePort.NodePort = service.NodePortPort
|
servicePort.NodePort = service.NodePortPort
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the default is already TCP, no need to include it.
|
// If the default is already TCP, no need to include protocol.
|
||||||
if port.Protocol != api.ProtocolTCP {
|
if protocol := api.Protocol(port.Protocol); protocol != api.ProtocolTCP {
|
||||||
servicePort.Protocol = port.Protocol
|
servicePort.Protocol = protocol
|
||||||
}
|
}
|
||||||
|
|
||||||
servicePorts = append(servicePorts, servicePort)
|
servicePorts = append(servicePorts, servicePort)
|
||||||
|
|||||||
@ -44,7 +44,7 @@ func newServiceConfig() kobject.ServiceConfig {
|
|||||||
ContainerName: "name",
|
ContainerName: "name",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
||||||
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456}, kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: api.ProtocolUDP}},
|
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456}, kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: string(api.ProtocolUDP)}},
|
||||||
Command: []string{"cmd"},
|
Command: []string{"cmd"},
|
||||||
WorkingDir: "dir",
|
WorkingDir: "dir",
|
||||||
Args: []string{"arg1", "arg2"},
|
Args: []string{"arg1", "arg2"},
|
||||||
@ -115,7 +115,7 @@ func equalPorts(kobjectPorts []kobject.Ports, k8sPorts []api.ContainerPort) bool
|
|||||||
for _, k8sPort := range k8sPorts {
|
for _, k8sPort := range k8sPorts {
|
||||||
// FIXME: HostPort should be copied to container port
|
// FIXME: HostPort should be copied to container port
|
||||||
//if port.HostPort == k8sPort.HostPort && port.Protocol == k8sPort.Protocol && port.ContainerPort == k8sPort.ContainerPort {
|
//if port.HostPort == k8sPort.HostPort && port.Protocol == k8sPort.Protocol && port.ContainerPort == k8sPort.ContainerPort {
|
||||||
if port.Protocol == k8sPort.Protocol && port.ContainerPort == k8sPort.ContainerPort {
|
if port.Protocol == string(k8sPort.Protocol) && port.ContainerPort == k8sPort.ContainerPort {
|
||||||
found = true
|
found = true
|
||||||
}
|
}
|
||||||
// Name and HostIp shouldn't be set
|
// Name and HostIp shouldn't be set
|
||||||
|
|||||||
@ -37,7 +37,7 @@ func newServiceConfig() kobject.ServiceConfig {
|
|||||||
ContainerName: "myfoobarname",
|
ContainerName: "myfoobarname",
|
||||||
Image: "image",
|
Image: "image",
|
||||||
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
Environment: []kobject.EnvVar{kobject.EnvVar{Name: "env", Value: "value"}},
|
||||||
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: corev1.ProtocolTCP}},
|
Port: []kobject.Ports{kobject.Ports{HostPort: 123, ContainerPort: 456, Protocol: string(corev1.ProtocolTCP)}},
|
||||||
Command: []string{"cmd"},
|
Command: []string{"cmd"},
|
||||||
WorkingDir: "dir",
|
WorkingDir: "dir",
|
||||||
Args: []string{"arg1", "arg2"},
|
Args: []string{"arg1", "arg2"},
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user