mirror of
https://github.com/docker/compose.git
synced 2025-07-29 08:34:15 +02:00
Fix CPU limit computation targetting EC2
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
2cfaf69546
commit
f2430afa06
@ -222,10 +222,8 @@ func (b *ecsAPIService) convert(project *types.Project) (*cloudformation.Templat
|
|||||||
for _, port := range service.Ports {
|
for _, port := range service.Ports {
|
||||||
protocol := strings.ToUpper(port.Protocol)
|
protocol := strings.ToUpper(port.Protocol)
|
||||||
if getLoadBalancerType(project) == elbv2.LoadBalancerTypeEnumApplication {
|
if getLoadBalancerType(project) == elbv2.LoadBalancerTypeEnumApplication {
|
||||||
protocol = elbv2.ProtocolEnumHttps
|
// we don't set Https as a certificate must be specified for HTTPS listeners
|
||||||
if port.Published == 80 {
|
protocol = elbv2.ProtocolEnumHttp
|
||||||
protocol = elbv2.ProtocolEnumHttp
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if loadBalancerARN != "" {
|
if loadBalancerARN != "" {
|
||||||
targetGroupName := createTargetGroup(project, service, port, template, protocol)
|
targetGroupName := createTargetGroup(project, service, port, template, protocol)
|
||||||
@ -254,9 +252,11 @@ func (b *ecsAPIService) convert(project *types.Project) (*cloudformation.Templat
|
|||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assignPublicIP := ecsapi.AssignPublicIpEnabled
|
||||||
launchType := ecsapi.LaunchTypeFargate
|
launchType := ecsapi.LaunchTypeFargate
|
||||||
platformVersion := "1.4.0" // LATEST which is set to 1.3.0 (?) which doesn’t allow efs volumes.
|
platformVersion := "1.4.0" // LATEST which is set to 1.3.0 (?) which doesn’t allow efs volumes.
|
||||||
if requireEC2(service) {
|
if requireEC2(service) {
|
||||||
|
assignPublicIP = ecsapi.AssignPublicIpDisabled
|
||||||
launchType = ecsapi.LaunchTypeEc2
|
launchType = ecsapi.LaunchTypeEc2
|
||||||
platformVersion = "" // The platform version must be null when specifying an EC2 launch type
|
platformVersion = "" // The platform version must be null when specifying an EC2 launch type
|
||||||
}
|
}
|
||||||
@ -277,7 +277,7 @@ func (b *ecsAPIService) convert(project *types.Project) (*cloudformation.Templat
|
|||||||
LoadBalancers: serviceLB,
|
LoadBalancers: serviceLB,
|
||||||
NetworkConfiguration: &ecs.Service_NetworkConfiguration{
|
NetworkConfiguration: &ecs.Service_NetworkConfiguration{
|
||||||
AwsvpcConfiguration: &ecs.Service_AwsVpcConfiguration{
|
AwsvpcConfiguration: &ecs.Service_AwsVpcConfiguration{
|
||||||
AssignPublicIp: ecsapi.AssignPublicIpEnabled,
|
AssignPublicIp: assignPublicIP,
|
||||||
SecurityGroups: serviceSecurityGroups,
|
SecurityGroups: serviceSecurityGroups,
|
||||||
Subnets: []string{
|
Subnets: []string{
|
||||||
cloudformation.Ref(parameterSubnet1Id),
|
cloudformation.Ref(parameterSubnet1Id),
|
||||||
@ -560,11 +560,15 @@ func convertNetwork(project *types.Project, net types.NetworkConfig, vpc string,
|
|||||||
for _, service := range project.Services {
|
for _, service := range project.Services {
|
||||||
if _, ok := service.Networks[net.Name]; ok {
|
if _, ok := service.Networks[net.Name]; ok {
|
||||||
for _, port := range service.Ports {
|
for _, port := range service.Ports {
|
||||||
|
protocol := strings.ToUpper(port.Protocol)
|
||||||
|
if protocol == "" {
|
||||||
|
protocol = "-1"
|
||||||
|
}
|
||||||
ingresses = append(ingresses, ec2.SecurityGroup_Ingress{
|
ingresses = append(ingresses, ec2.SecurityGroup_Ingress{
|
||||||
CidrIp: "0.0.0.0/0",
|
CidrIp: "0.0.0.0/0",
|
||||||
Description: fmt.Sprintf("%s:%d/%s", service.Name, port.Target, port.Protocol),
|
Description: fmt.Sprintf("%s:%d/%s", service.Name, port.Target, port.Protocol),
|
||||||
FromPort: int(port.Target),
|
FromPort: int(port.Target),
|
||||||
IpProtocol: strings.ToUpper(port.Protocol),
|
IpProtocol: protocol,
|
||||||
ToPort: int(port.Target),
|
ToPort: int(port.Target),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -299,6 +299,22 @@ services:
|
|||||||
def = template.Resources["TestTaskDefinition"].(*ecs.TaskDefinition)
|
def = template.Resources["TestTaskDefinition"].(*ecs.TaskDefinition)
|
||||||
assert.Equal(t, def.Cpu, "4000")
|
assert.Equal(t, def.Cpu, "4000")
|
||||||
assert.Equal(t, def.Memory, "792")
|
assert.Equal(t, def.Memory, "792")
|
||||||
|
|
||||||
|
template = convertYaml(t, `
|
||||||
|
services:
|
||||||
|
test:
|
||||||
|
image: nginx
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
reservations:
|
||||||
|
generic_resources:
|
||||||
|
- discrete_resource_spec:
|
||||||
|
kind: gpus
|
||||||
|
value: 2
|
||||||
|
`)
|
||||||
|
def = template.Resources["TestTaskDefinition"].(*ecs.TaskDefinition)
|
||||||
|
assert.Equal(t, def.Cpu, "")
|
||||||
|
assert.Equal(t, def.Memory, "")
|
||||||
}
|
}
|
||||||
func TestTaskSizeConvertFailure(t *testing.T) {
|
func TestTaskSizeConvertFailure(t *testing.T) {
|
||||||
model := loadConfig(t, `
|
model := loadConfig(t, `
|
||||||
|
@ -329,7 +329,14 @@ func toLimits(service types.ServiceConfig) (string, string, error) {
|
|||||||
}
|
}
|
||||||
if requireEC2(service) {
|
if requireEC2(service) {
|
||||||
// just return configured limits expressed in Mb and CPU units
|
// just return configured limits expressed in Mb and CPU units
|
||||||
return fmt.Sprint(cpu), fmt.Sprint(mem / miB), nil
|
var cpuLimit, memLimit string
|
||||||
|
if cpu > 0 {
|
||||||
|
cpuLimit = fmt.Sprint(cpu)
|
||||||
|
}
|
||||||
|
if mem > 0 {
|
||||||
|
memLimit = fmt.Sprint(mem / miB)
|
||||||
|
}
|
||||||
|
return cpuLimit, memLimit, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// All possible cpu/mem values for Fargate
|
// All possible cpu/mem values for Fargate
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2020 Docker, Inc.
|
Copyright 2020 Docker Compose CLI authors
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user