Skip to content
This repository was archived by the owner on Nov 27, 2023. It is now read-only.

Commit 1506c7a

Browse files
committed
create ALB is protocol is set to "http" or "https"
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent 55d54cb commit 1506c7a

File tree

6 files changed

+46
-17
lines changed

6 files changed

+46
-17
lines changed

ecs/cloudformation.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func (b *ecsAPIService) convert(project *types.Project) (*cloudformation.Templat
206206
desiredCount = int(*service.Deploy.Replicas)
207207
}
208208

209-
for _, dependency := range service.DependsOn {
209+
for dependency := range service.DependsOn {
210210
dependsOn = append(dependsOn, serviceResourceName(dependency))
211211
}
212212

@@ -312,6 +312,14 @@ func computeRollingUpdateLimits(service types.ServiceConfig) (int, int, error) {
312312
func getLoadBalancerType(project *types.Project) string {
313313
for _, service := range project.Services {
314314
for _, port := range service.Ports {
315+
protocol := port.Protocol
316+
v, ok := port.Extensions[extensionProtocol]
317+
if ok {
318+
protocol = v.(string)
319+
}
320+
if protocol == "http" || protocol == "https" {
321+
continue
322+
}
315323
if port.Published != 80 && port.Published != 443 {
316324
return elbv2.LoadBalancerTypeEnumNetwork
317325
}

ecs/cloudformation_test.go

+27-9
Original file line numberDiff line numberDiff line change
@@ -181,19 +181,37 @@ networks:
181181
}
182182

183183
func TestLoadBalancerTypeApplication(t *testing.T) {
184-
template := convertYaml(t, `
185-
services:
184+
cases := []string{
185+
`services:
186186
test:
187187
image: nginx
188188
ports:
189189
- 80:80
190-
`)
191-
lb := template.Resources["TestLoadBalancer"]
192-
assert.Check(t, lb != nil)
193-
loadBalancer := *lb.(*elasticloadbalancingv2.LoadBalancer)
194-
assert.Check(t, len(loadBalancer.Name) <= 32)
195-
assert.Check(t, loadBalancer.Type == elbv2.LoadBalancerTypeEnumApplication)
196-
assert.Check(t, len(loadBalancer.SecurityGroups) > 0)
190+
`,
191+
`services:
192+
test:
193+
image: nginx
194+
ports:
195+
- target: 8080
196+
protocol: http
197+
`,
198+
`services:
199+
test:
200+
image: nginx
201+
ports:
202+
- target: 8080
203+
x-aws-protocol: http
204+
`,
205+
}
206+
for _, y := range cases {
207+
template := convertYaml(t, y)
208+
lb := template.Resources["TestLoadBalancer"]
209+
assert.Check(t, lb != nil)
210+
loadBalancer := *lb.(*elasticloadbalancingv2.LoadBalancer)
211+
assert.Check(t, len(loadBalancer.Name) <= 32)
212+
assert.Check(t, loadBalancer.Type == elbv2.LoadBalancerTypeEnumApplication)
213+
assert.Check(t, len(loadBalancer.SecurityGroups) > 0)
214+
}
197215
}
198216

199217
func TestNoLoadBalancerIfNoPortExposed(t *testing.T) {

ecs/local/compose.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ func (e ecsLocalSimulation) Convert(ctx context.Context, project *types.Project)
9292
service.Networks["credentials_network"] = &types.ServiceNetworkConfig{
9393
Ipv4Address: fmt.Sprintf("169.254.170.%d", i+3),
9494
}
95-
service.DependsOn = append(service.DependsOn, "ecs-local-endpoints")
95+
service.DependsOn["ecs-local-endpoints"] = types.ServiceDependency{
96+
Condition: types.ServiceConditionStarted,
97+
}
9698
service.Environment["AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"] = aws.String("/creds")
9799
service.Environment["ECS_CONTAINER_METADATA_URI"] = aws.String("http://169.254.170.2/v3")
98100
project.Services[i] = service

ecs/x.go

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const (
2121
extensionVPC = "x-aws-vpc"
2222
extensionPullCredentials = "x-aws-pull_credentials"
2323
extensionLB = "x-aws-loadbalancer"
24+
extensionProtocol = "x-aws-protocol"
2425
extensionCluster = "x-aws-cluster"
2526
extensionKeys = "x-aws-keys"
2627
extensionMinPercent = "x-aws-min_percent"

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ require (
2222
github.com/aws/aws-sdk-go v1.34.8
2323
github.com/awslabs/goformation/v4 v4.14.0
2424
github.com/buger/goterm v0.0.0-20200322175922-2f3e71b85129
25-
github.com/compose-spec/compose-go v0.0.0-20200824075806-a70cd5945c25
25+
github.com/compose-spec/compose-go v0.0.0-20200907084823-057e1edc5b6f
2626
github.com/containerd/console v1.0.0
2727
github.com/containerd/containerd v1.3.5 // indirect
2828
github.com/docker/cli v0.0.0-20200528204125-dd360c7c0de8
@@ -35,7 +35,7 @@ require (
3535
github.com/gobwas/pool v0.2.0 // indirect
3636
github.com/gobwas/ws v1.0.3
3737
github.com/golang/protobuf v1.4.2
38-
github.com/google/go-cmp v0.5.1
38+
github.com/google/go-cmp v0.5.2
3939
github.com/google/uuid v1.1.1
4040
github.com/gorilla/mux v1.7.4 // indirect
4141
github.com/hashicorp/go-multierror v1.1.0

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
8787
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
8888
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
8989
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
90-
github.com/compose-spec/compose-go v0.0.0-20200824075806-a70cd5945c25 h1:mVlGrHJuNGPJNEvCCIrDIZX5FYtNTwFd++y+fJaGTXM=
91-
github.com/compose-spec/compose-go v0.0.0-20200824075806-a70cd5945c25/go.mod h1:P7PZ0svgjrZ8nv/XvxObbl8o0DCIE9ZbL8pllg6uL4w=
90+
github.com/compose-spec/compose-go v0.0.0-20200907084823-057e1edc5b6f h1:YsU3/17YA/skXpCQbRcrzWJxslWZ2lmvQK0bRiCyC38=
91+
github.com/compose-spec/compose-go v0.0.0-20200907084823-057e1edc5b6f/go.mod h1:voTGL1mRFcKRaFbi1lXGlR1YffS/9YD1jnVl4N/rYzw=
9292
github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f h1:tSNMc+rJDfmYntojat8lljbt1mgKNpTxUZJsSzJ9Y1s=
9393
github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko=
9494
github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw=
@@ -193,8 +193,8 @@ github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
193193
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
194194
github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
195195
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
196-
github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=
197-
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
196+
github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
197+
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
198198
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
199199
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
200200
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=

0 commit comments

Comments
 (0)