hako 2.0.4 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +7 -1
- data/CHANGELOG.md +9 -2
- data/examples/create_aws_cloud_watch_logs_log_group.libsonnet +1 -0
- data/examples/hello-autoscaling-group.jsonnet +20 -0
- data/examples/hello-autoscaling.jsonnet +78 -0
- data/examples/hello-awslogs-driver.jsonnet +25 -0
- data/examples/hello-cap-add-app.jsonnet +19 -0
- data/examples/hello-fargate-batch.jsonnet +38 -0
- data/examples/hello-internal-nlb.jsonnet +47 -0
- data/examples/hello-lb-v2.jsonnet +71 -0
- data/examples/hello-lb.jsonnet +49 -0
- data/examples/hello-nofront.jsonnet +56 -0
- data/examples/hello-privileged-app.jsonnet +15 -0
- data/hako.gemspec +2 -2
- data/lib/hako/schedulers/ecs.rb +3 -0
- data/lib/hako/schedulers/ecs_elb_v2.rb +42 -16
- data/lib/hako/scripts/nginx_front.rb +1 -1
- data/lib/hako/version.rb +1 -1
- metadata +15 -16
- data/examples/create_aws_cloud_watch_logs_log_group.yml +0 -1
- data/examples/hello-autoscaling-group.yml +0 -14
- data/examples/hello-autoscaling.yml +0 -56
- data/examples/hello-awslogs-driver.yml +0 -18
- data/examples/hello-cap-add-app.yml +0 -13
- data/examples/hello-fargate-batch.yml +0 -31
- data/examples/hello-fargate.yml +0 -68
- data/examples/hello-lb-v2.yml +0 -53
- data/examples/hello-lb.yml +0 -38
- data/examples/hello-nofront.yml +0 -44
- data/examples/hello-privileged-app.yml +0 -11
- data/examples/hello.yml +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a314c9baebed4e29a7f3650abec5d8f988f57a54db5ba979957040a15b01ba0
|
4
|
+
data.tar.gz: f7221e593ed0ded7fb3b8f3f312d289da9efacb7fae79408e935d20f3badfeb9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f2507875d79feae5c66f61c9cabe735dafadf80c0395217363772c812663a8a93b73ad52219e6b19364b335ebdbfd3b6ebfe4bd86df68dd68b898b9fce774bc
|
7
|
+
data.tar.gz: 29d24a5c810a615d9bfff1d553d8a84ccf6bfdad33fbf24b9900841f41cb1de3afd558bda73d45c0b3fe47f6ded8e8e21a4beb22ca86f685a89d9f82a7becbd1
|
data/.rubocop.yml
CHANGED
@@ -9,6 +9,10 @@ Layout/FirstParameterIndentation:
|
|
9
9
|
|
10
10
|
Naming/PredicateName:
|
11
11
|
Enabled: false
|
12
|
+
Naming/UncommunicativeMethodParamName:
|
13
|
+
Enabled: false
|
14
|
+
Naming/MemoizedInstanceVariableName:
|
15
|
+
Enabled: false
|
12
16
|
|
13
17
|
Style/Alias:
|
14
18
|
EnforcedStyle: prefer_alias_method
|
@@ -35,7 +39,9 @@ Style/StderrPuts:
|
|
35
39
|
Enabled: false
|
36
40
|
Style/TrailingCommaInArguments:
|
37
41
|
Enabled: false
|
38
|
-
Style/
|
42
|
+
Style/TrailingCommaInArrayLiteral:
|
43
|
+
Enabled: false
|
44
|
+
Style/TrailingCommaInHashLiteral:
|
39
45
|
Enabled: false
|
40
46
|
|
41
47
|
Performance/RedundantBlockCall:
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 2.1.0 (2018-04-18)
|
2
|
+
## New features
|
3
|
+
- Support Network Load Balancer
|
4
|
+
- See [examples/hello-internal-nlb.jsonnet](examples/hello-internal-nlb.jsonnet)
|
5
|
+
- Support `health_check_grace_period_seconds`
|
6
|
+
- See [examples/hello-lb-v2.jsonnet](examples/hello-lb-v2.jsonnet)
|
7
|
+
|
1
8
|
# 2.0.4 (2018-02-26)
|
2
9
|
## Bug fixes
|
3
10
|
- Pass AWS region of ECS scheduler to other AWS clients (CloudWatch, ApplicationAutoScaling)
|
@@ -27,7 +34,7 @@
|
|
27
34
|
## New features
|
28
35
|
- Add support for awsvpc network mode
|
29
36
|
- Add support for Fargate
|
30
|
-
- See [examples/hello-fargate.
|
37
|
+
- See [examples/hello-fargate.jsonnet](examples/hello-fargate.jsonnet) and [examples/hello-fargate-batch.jsonnet](examples/hello-fargate-batch.jsonnet)
|
31
38
|
|
32
39
|
# 1.8.4 (2017-11-24)
|
33
40
|
## Improvements
|
@@ -48,7 +55,7 @@
|
|
48
55
|
# 1.8.1 (2017-09-15)
|
49
56
|
## Improvements
|
50
57
|
- Add container_name and container_port option to elb and elb_v2
|
51
|
-
- See [examples/hello-nofront.
|
58
|
+
- See [examples/hello-nofront.jsonnet](examples/hello-nofront.jsonnet)
|
52
59
|
|
53
60
|
# 1.8.0 (2017-09-15)
|
54
61
|
## Changes
|
@@ -0,0 +1 @@
|
|
1
|
+
{ type: 'create_aws_cloud_watch_logs_log_group' }
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
scheduler: {
|
3
|
+
type: 'ecs',
|
4
|
+
region: 'ap-northeast-1',
|
5
|
+
cluster: 'eagletmt',
|
6
|
+
desired_count: 2,
|
7
|
+
role: 'ecsServiceRole',
|
8
|
+
autoscaling_group_for_oneshot: 'hako-batch-cluster',
|
9
|
+
},
|
10
|
+
app: {
|
11
|
+
image: 'ryotarai/hello-sinatra',
|
12
|
+
memory: 128,
|
13
|
+
cpu: 256,
|
14
|
+
env: {
|
15
|
+
PORT: '3000',
|
16
|
+
MESSAGE: 'hello',
|
17
|
+
},
|
18
|
+
command: ['echo', 'heavy offline job'],
|
19
|
+
},
|
20
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
local fileProvider = std.native('provide.file');
|
2
|
+
local provide(name) = fileProvider(std.toString({ path: 'hello.env' }), name);
|
3
|
+
|
4
|
+
{
|
5
|
+
scheduler: {
|
6
|
+
type: 'ecs',
|
7
|
+
region: 'ap-northeast-1',
|
8
|
+
cluster: 'eagletmt',
|
9
|
+
desired_count: 2,
|
10
|
+
role: 'ecsServiceRole',
|
11
|
+
elb: {
|
12
|
+
listeners: [
|
13
|
+
{
|
14
|
+
load_balancer_port: 80,
|
15
|
+
protocol: 'HTTP',
|
16
|
+
},
|
17
|
+
],
|
18
|
+
subnets: [
|
19
|
+
'subnet-XXXXXXXX',
|
20
|
+
'subnet-YYYYYYYY',
|
21
|
+
],
|
22
|
+
security_groups: [
|
23
|
+
'sg-ZZZZZZZZ',
|
24
|
+
],
|
25
|
+
},
|
26
|
+
autoscaling: {
|
27
|
+
role_arn: 'arn:aws:iam::012345678901:role/ecsAutoscaleRole',
|
28
|
+
min_capacity: 1,
|
29
|
+
max_capacity: 4,
|
30
|
+
policies: [
|
31
|
+
// Add one task when ecs-scaling-out-hello-autoscaling-service is in alarm state
|
32
|
+
{
|
33
|
+
alarms: ['ecs-scaling-out-hello-autoscaling-service'],
|
34
|
+
cooldown: 300,
|
35
|
+
adjustment_type: 'ChangeInCapacity',
|
36
|
+
scaling_adjustment: 1,
|
37
|
+
metric_interval_lower_bound: 0,
|
38
|
+
metric_aggregation_type: 'Average',
|
39
|
+
},
|
40
|
+
// Remove one task when ecs-scaling-in-hello-autoscaling-service is in alarm state
|
41
|
+
{
|
42
|
+
alarms: ['ecs-scaling-in-hello-autoscaling-service'],
|
43
|
+
cooldown: 300,
|
44
|
+
adjustment_type: 'ChangeInCapacity',
|
45
|
+
scaling_adjustment: -1,
|
46
|
+
metric_interval_upper_bound: 0,
|
47
|
+
metric_aggregation_type: 'Average',
|
48
|
+
},
|
49
|
+
],
|
50
|
+
},
|
51
|
+
},
|
52
|
+
app: {
|
53
|
+
image: 'ryotarai/hello-sinatra',
|
54
|
+
memory: 128,
|
55
|
+
cpu: 256,
|
56
|
+
env: {
|
57
|
+
PORT: '3000',
|
58
|
+
MESSAGE: std.format('%s-san', provide('username')),
|
59
|
+
},
|
60
|
+
},
|
61
|
+
additional_containers: {
|
62
|
+
front: {
|
63
|
+
image_tag: 'hako-nginx',
|
64
|
+
memory: 32,
|
65
|
+
cpu: 32,
|
66
|
+
},
|
67
|
+
},
|
68
|
+
scripts: [
|
69
|
+
(import 'front.libsonnet') + {
|
70
|
+
backend_port: 3000,
|
71
|
+
locations: {
|
72
|
+
'/': {
|
73
|
+
allow_only_from: ['10.0.0.0/24'],
|
74
|
+
},
|
75
|
+
},
|
76
|
+
},
|
77
|
+
],
|
78
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
{
|
2
|
+
scheduler: {
|
3
|
+
type: 'ecs',
|
4
|
+
region: 'ap-northeast-1',
|
5
|
+
cluster: 'eagletmt',
|
6
|
+
desired_count: 1,
|
7
|
+
},
|
8
|
+
app: {
|
9
|
+
image: 'busybox',
|
10
|
+
memory: 128,
|
11
|
+
cpu: 256,
|
12
|
+
command: ['echo', 'hello awslogs'],
|
13
|
+
log_configuration: {
|
14
|
+
log_driver: 'awslogs',
|
15
|
+
options: {
|
16
|
+
'awslogs-group': 'my-logs',
|
17
|
+
'awslogs-region': 'ap-northeast-1',
|
18
|
+
'awslogs-stream-prefix': 'example',
|
19
|
+
},
|
20
|
+
},
|
21
|
+
},
|
22
|
+
scripts: [
|
23
|
+
(import 'create_aws_cloud_watch_logs_log_group.libsonnet'),
|
24
|
+
],
|
25
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
{
|
2
|
+
scheduler: {
|
3
|
+
type: 'ecs',
|
4
|
+
region: 'ap-northeast-1',
|
5
|
+
cluster: 'eagletmt',
|
6
|
+
desired_count: 1,
|
7
|
+
},
|
8
|
+
app: {
|
9
|
+
image: 'busybox',
|
10
|
+
memory: 128,
|
11
|
+
cpu: 256,
|
12
|
+
command: ['echo', 'hello with SYS_RAWIO'],
|
13
|
+
linux_parameters: {
|
14
|
+
capabilities: {
|
15
|
+
add: ['SYS_RAWIO'],
|
16
|
+
},
|
17
|
+
},
|
18
|
+
},
|
19
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
{
|
2
|
+
scheduler: {
|
3
|
+
type: 'ecs',
|
4
|
+
region: 'us-east-1',
|
5
|
+
cluster: 'eagletmt',
|
6
|
+
// Fargate
|
7
|
+
execution_role_arn: 'arn:aws:iam::012345678901:role/ecsTaskExecutionRole',
|
8
|
+
cpu: '1024',
|
9
|
+
memory: '2048',
|
10
|
+
requires_compatibilities: ['FARGATE'],
|
11
|
+
network_mode: 'awsvpc',
|
12
|
+
launch_type: 'FARGATE',
|
13
|
+
network_configuration: {
|
14
|
+
awsvpc_configuration: {
|
15
|
+
subnets: ['subnet-XXXXXXXX'],
|
16
|
+
security_groups: [],
|
17
|
+
assign_public_ip: 'DISABLED',
|
18
|
+
},
|
19
|
+
},
|
20
|
+
},
|
21
|
+
app: {
|
22
|
+
image: 'ryotarai/hello-sinatra',
|
23
|
+
cpu: 1024,
|
24
|
+
memory: 256,
|
25
|
+
memory_reservation: 128,
|
26
|
+
log_configuration: {
|
27
|
+
log_driver: 'awslogs',
|
28
|
+
options: {
|
29
|
+
'awslogs-group': '/ecs/hello-fargate-batch',
|
30
|
+
'awslogs-region': 'us-east-1',
|
31
|
+
'awslogs-stream-prefix': 'ecs',
|
32
|
+
},
|
33
|
+
},
|
34
|
+
},
|
35
|
+
scripts: [
|
36
|
+
(import './create_aws_cloud_watch_logs_log_group.libsonnet'),
|
37
|
+
],
|
38
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
{
|
2
|
+
scheduler: {
|
3
|
+
type: 'ecs',
|
4
|
+
region: 'ap-northeast-1',
|
5
|
+
cluster: 'eagletmt',
|
6
|
+
desired_count: 2,
|
7
|
+
role: 'ecsServiceRole',
|
8
|
+
// health_check_grace_period_seconds: 0,
|
9
|
+
elb_v2: {
|
10
|
+
// NLB can not have
|
11
|
+
// * health check path
|
12
|
+
// * securit group
|
13
|
+
scheme: 'internal',
|
14
|
+
type: 'network',
|
15
|
+
// VPC id where the target group is located
|
16
|
+
vpc_id: 'vpc-WWWWWWWW',
|
17
|
+
listeners: [
|
18
|
+
{
|
19
|
+
port: 80,
|
20
|
+
protocol: 'TCP',
|
21
|
+
},
|
22
|
+
],
|
23
|
+
subnets: [
|
24
|
+
'subnet-XXXXXXXX',
|
25
|
+
'subnet-YYYYYYYY',
|
26
|
+
],
|
27
|
+
container_name: 'app',
|
28
|
+
container_port: 80,
|
29
|
+
// If you want enalbed cross zone load balancing, then specify attribute.
|
30
|
+
// load_balancer_attributes: {
|
31
|
+
// 'load_balancing.cross_zone.enabled': 'true',
|
32
|
+
// },
|
33
|
+
},
|
34
|
+
},
|
35
|
+
app: {
|
36
|
+
image: 'nginx',
|
37
|
+
memory: 128,
|
38
|
+
cpu: 256,
|
39
|
+
port_mappings: [
|
40
|
+
{
|
41
|
+
container_port: 80,
|
42
|
+
host_port: 0,
|
43
|
+
protocol: 'TCP',
|
44
|
+
},
|
45
|
+
],
|
46
|
+
},
|
47
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
local fileProvider = std.native('provide.file');
|
2
|
+
local provide(name) = fileProvider(std.toString({ path: 'hello.env' }), name);
|
3
|
+
|
4
|
+
{
|
5
|
+
scheduler: {
|
6
|
+
type: 'ecs',
|
7
|
+
region: 'ap-northeast-1',
|
8
|
+
cluster: 'eagletmt',
|
9
|
+
desired_count: 2,
|
10
|
+
role: 'ecsServiceRole',
|
11
|
+
// dynamic_port_mapping is enabled by default with elb_v2
|
12
|
+
// dynamic_port_mapping: false,
|
13
|
+
// health_check_grace_period_seconds: 0,
|
14
|
+
elb_v2: {
|
15
|
+
// VPC id where the target group is located
|
16
|
+
vpc_id: 'vpc-WWWWWWWW',
|
17
|
+
// If you want internal ELB, then use 'scheme'. (ex. internal service that like microservice inside VPC)
|
18
|
+
// scheme: internal
|
19
|
+
// Health check path of the target group
|
20
|
+
health_check_path: '/site/sha',
|
21
|
+
listeners: [
|
22
|
+
{
|
23
|
+
port: 80,
|
24
|
+
protocol: 'HTTP',
|
25
|
+
},
|
26
|
+
{
|
27
|
+
port: 443,
|
28
|
+
protocol: 'HTTPS',
|
29
|
+
certificate_arn: 'arn:aws:iam::012345678901:server-certificate/hello-lb-v2.example.com',
|
30
|
+
},
|
31
|
+
],
|
32
|
+
subnets: ['subnet-XXXXXXXX', 'subnet-YYYYYYYY'],
|
33
|
+
security_groups: ['sg-ZZZZZZZZ'],
|
34
|
+
load_balancer_attributes: {
|
35
|
+
'access_logs.s3.enabled': 'true',
|
36
|
+
'access_logs.s3.bucket': 'hako-access-logs',
|
37
|
+
'access_logs.s3.prefix': 'hako-hello-lb-v2',
|
38
|
+
},
|
39
|
+
target_group_attributes: {
|
40
|
+
// http://docs.aws.amazon.com/en_us/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-group-attributes
|
41
|
+
'deregistration_delay.timeout_seconds': '20',
|
42
|
+
},
|
43
|
+
},
|
44
|
+
},
|
45
|
+
app: {
|
46
|
+
image: 'ryotarai/hello-sinatra',
|
47
|
+
memory: 128,
|
48
|
+
cpu: 256,
|
49
|
+
env: {
|
50
|
+
PORT: '3000',
|
51
|
+
MESSAGE: std.format('%s-san', provide('username')),
|
52
|
+
},
|
53
|
+
},
|
54
|
+
additional_containers: {
|
55
|
+
front: {
|
56
|
+
image_tag: 'hako-nginx',
|
57
|
+
memory: 32,
|
58
|
+
cpu: 32,
|
59
|
+
},
|
60
|
+
},
|
61
|
+
scripts: [
|
62
|
+
(import 'front.libsonnet') + {
|
63
|
+
backend_port: 3000,
|
64
|
+
locations: {
|
65
|
+
'/': {
|
66
|
+
allow_only_from: ['10.0.0.0/24'],
|
67
|
+
},
|
68
|
+
},
|
69
|
+
},
|
70
|
+
],
|
71
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
local fileProvider = std.native('provide.file');
|
2
|
+
local provide(name) = fileProvider(std.toString({ path: 'hello.env' }), name);
|
3
|
+
|
4
|
+
{
|
5
|
+
scheduler: {
|
6
|
+
type: 'ecs',
|
7
|
+
region: 'ap-northeast-1',
|
8
|
+
cluster: 'eagletmt',
|
9
|
+
desired_count: 2,
|
10
|
+
role: 'ecsServiceRole',
|
11
|
+
// dynamic_port_mapping cannot be enabled with elb
|
12
|
+
elb: {
|
13
|
+
listeners: [
|
14
|
+
{
|
15
|
+
load_balancer_port: 80,
|
16
|
+
protocol: 'HTTP',
|
17
|
+
},
|
18
|
+
],
|
19
|
+
subnets: ['subnet-XXXXXXXX', 'subnet-YYYYYYYY'],
|
20
|
+
security_groups: ['sg-ZZZZZZZZ'],
|
21
|
+
},
|
22
|
+
},
|
23
|
+
app: {
|
24
|
+
image: 'ryotarai/hello-sinatra',
|
25
|
+
memory: 128,
|
26
|
+
cpu: 256,
|
27
|
+
env: {
|
28
|
+
PORT: '3000',
|
29
|
+
MESSAGE: std.format('%s-san', provide('username')),
|
30
|
+
},
|
31
|
+
},
|
32
|
+
additional_containers: {
|
33
|
+
front: {
|
34
|
+
image_tag: 'hako-nginx',
|
35
|
+
memory: 32,
|
36
|
+
cpu: 32,
|
37
|
+
},
|
38
|
+
},
|
39
|
+
scripts: [
|
40
|
+
(import 'front.libsonnet') + {
|
41
|
+
backend_port: 3000,
|
42
|
+
locations: {
|
43
|
+
'/': {
|
44
|
+
allow_only_from: ['10.0.0.0/24'],
|
45
|
+
},
|
46
|
+
},
|
47
|
+
},
|
48
|
+
],
|
49
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
local fileProvider = std.native('provide.file');
|
2
|
+
local provide(name) = fileProvider(std.toString({ path: 'hello.env' }), name);
|
3
|
+
|
4
|
+
{
|
5
|
+
scheduler: {
|
6
|
+
type: 'ecs',
|
7
|
+
region: 'ap-northeast-1',
|
8
|
+
cluster: 'eagletmt',
|
9
|
+
desired_count: 2,
|
10
|
+
role: 'ecsServiceRole',
|
11
|
+
elb_v2: {
|
12
|
+
// VPC id where the target group is located
|
13
|
+
vpc_id: 'vpc-WWWWWWWW',
|
14
|
+
// Health check path of the target group
|
15
|
+
health_check_path: '/site/sha',
|
16
|
+
listeners: [
|
17
|
+
{
|
18
|
+
port: 80,
|
19
|
+
protocol: 'HTTP',
|
20
|
+
},
|
21
|
+
{
|
22
|
+
port: 443,
|
23
|
+
protocol: 'HTTPS',
|
24
|
+
certificate_arn: 'arn:aws:iam::012345678901:server-certificate/hello-lb-v2.example.com',
|
25
|
+
},
|
26
|
+
],
|
27
|
+
subnets: ['subnet-XXXXXXXX', 'subnet-YYYYYYYY'],
|
28
|
+
security_groups: ['sg-ZZZZZZZZ'],
|
29
|
+
load_balancer_attributes: {
|
30
|
+
'access_logs.s3.enabled': 'true',
|
31
|
+
'access_logs.s3.bucket': 'hako-access-logs',
|
32
|
+
'access_logs.s3.prefix': 'hako-hello-lb-v2',
|
33
|
+
},
|
34
|
+
// Connect ELB to app container
|
35
|
+
container_name: 'app',
|
36
|
+
container_port: 3000,
|
37
|
+
},
|
38
|
+
},
|
39
|
+
app: {
|
40
|
+
image: 'ryotarai/hello-sinatra',
|
41
|
+
memory: 128,
|
42
|
+
cpu: 256,
|
43
|
+
env: {
|
44
|
+
PORT: '3000',
|
45
|
+
MESSAGE: std.format('%s-san', provide('username')),
|
46
|
+
},
|
47
|
+
// Add port mapping to connect to ELB
|
48
|
+
port_mappings: [
|
49
|
+
{
|
50
|
+
container_port: 3000,
|
51
|
+
host_port: 0,
|
52
|
+
protocol: 'tcp',
|
53
|
+
},
|
54
|
+
],
|
55
|
+
},
|
56
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
scheduler: {
|
3
|
+
type: 'ecs',
|
4
|
+
region: 'ap-northeast-1',
|
5
|
+
cluster: 'eagletmt',
|
6
|
+
desired_count: 1,
|
7
|
+
},
|
8
|
+
app: {
|
9
|
+
image: 'busybox',
|
10
|
+
memory: 128,
|
11
|
+
cpu: 256,
|
12
|
+
command: ['echo', 'hello from --privileged mode'],
|
13
|
+
privileged: true,
|
14
|
+
},
|
15
|
+
}
|
data/hako.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path('
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require 'hako/version'
|
6
6
|
|
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.add_development_dependency 'coveralls'
|
38
38
|
spec.add_development_dependency 'rake'
|
39
39
|
spec.add_development_dependency 'rspec'
|
40
|
-
spec.add_development_dependency 'rubocop', '>= 0.
|
40
|
+
spec.add_development_dependency 'rubocop', '>= 0.53.0'
|
41
41
|
spec.add_development_dependency 'simplecov'
|
42
42
|
spec.add_development_dependency 'yard'
|
43
43
|
end
|
data/lib/hako/schedulers/ecs.rb
CHANGED
@@ -43,6 +43,7 @@ module Hako
|
|
43
43
|
@ecs_elb_v2_options['target_type'] = 'ip'
|
44
44
|
end
|
45
45
|
@dynamic_port_mapping = options.fetch('dynamic_port_mapping', @ecs_elb_options.nil?)
|
46
|
+
@health_check_grace_period_seconds = options.fetch('health_check_grace_period_seconds', nil)
|
46
47
|
if options.key?('autoscaling')
|
47
48
|
@autoscaling = EcsAutoscaling.new(options.fetch('autoscaling'), @region, dry_run: @dry_run)
|
48
49
|
end
|
@@ -775,6 +776,7 @@ module Hako
|
|
775
776
|
deployment_configuration: @deployment_configuration,
|
776
777
|
platform_version: @platform_version,
|
777
778
|
network_configuration: @network_configuration,
|
779
|
+
health_check_grace_period_seconds: @health_check_grace_period_seconds,
|
778
780
|
}
|
779
781
|
if @autoscaling
|
780
782
|
# Keep current desired_count if autoscaling is enabled
|
@@ -804,6 +806,7 @@ module Hako
|
|
804
806
|
launch_type: @launch_type,
|
805
807
|
platform_version: @platform_version,
|
806
808
|
network_configuration: @network_configuration,
|
809
|
+
health_check_grace_period_seconds: @health_check_grace_period_seconds,
|
807
810
|
}
|
808
811
|
if ecs_elb_client.find_or_create_load_balancer(front_port)
|
809
812
|
ecs_elb_client.modify_attributes
|
@@ -53,26 +53,52 @@ module Hako
|
|
53
53
|
load_balancer = describe_load_balancer
|
54
54
|
unless load_balancer
|
55
55
|
tags = @elb_v2_config.fetch('tags', {}).map { |k, v| { key: k, value: v.to_s } }
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
56
|
+
|
57
|
+
elb_type = @elb_v2_config.fetch('type', nil)
|
58
|
+
if elb_type == 'network'
|
59
|
+
load_balancer = elb_client.create_load_balancer(
|
60
|
+
name: name,
|
61
|
+
subnets: @elb_v2_config.fetch('subnets'),
|
62
|
+
scheme: @elb_v2_config.fetch('scheme', nil),
|
63
|
+
type: 'network',
|
64
|
+
tags: tags.empty? ? nil : tags,
|
65
|
+
).load_balancers[0]
|
66
|
+
Hako.logger.info "Created ELBv2(NLB) #{load_balancer.dns_name}"
|
67
|
+
else
|
68
|
+
load_balancer = elb_client.create_load_balancer(
|
69
|
+
name: name,
|
70
|
+
subnets: @elb_v2_config.fetch('subnets'),
|
71
|
+
security_groups: @elb_v2_config.fetch('security_groups'),
|
72
|
+
scheme: @elb_v2_config.fetch('scheme', nil),
|
73
|
+
type: @elb_v2_config.fetch('type', nil),
|
74
|
+
tags: tags.empty? ? nil : tags,
|
75
|
+
).load_balancers[0]
|
76
|
+
Hako.logger.info "Created ELBv2 #{load_balancer.dns_name}"
|
77
|
+
end
|
64
78
|
end
|
65
79
|
|
66
80
|
target_group = describe_target_group
|
67
81
|
unless target_group
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
82
|
+
elb_type = @elb_v2_config.fetch('type', nil)
|
83
|
+
target_group = if elb_type == 'network'
|
84
|
+
elb_client.create_target_group(
|
85
|
+
name: name,
|
86
|
+
port: 80,
|
87
|
+
protocol: 'TCP',
|
88
|
+
vpc_id: @elb_v2_config.fetch('vpc_id'),
|
89
|
+
target_type: @elb_v2_config.fetch('target_type', nil),
|
90
|
+
).target_groups[0]
|
91
|
+
else
|
92
|
+
elb_client.create_target_group(
|
93
|
+
name: name,
|
94
|
+
port: 80,
|
95
|
+
protocol: 'HTTP',
|
96
|
+
vpc_id: @elb_v2_config.fetch('vpc_id'),
|
97
|
+
health_check_path: @elb_v2_config.fetch('health_check_path', nil),
|
98
|
+
target_type: @elb_v2_config.fetch('target_type', nil),
|
99
|
+
).target_groups[0]
|
100
|
+
end
|
101
|
+
|
76
102
|
Hako.logger.info "Created target group #{target_group.target_group_arn}"
|
77
103
|
end
|
78
104
|
|
data/lib/hako/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hako
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kohei Suzuki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-applicationautoscaling
|
@@ -226,14 +226,14 @@ dependencies:
|
|
226
226
|
requirements:
|
227
227
|
- - ">="
|
228
228
|
- !ruby/object:Gem::Version
|
229
|
-
version: 0.
|
229
|
+
version: 0.53.0
|
230
230
|
type: :development
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
234
|
- - ">="
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
version: 0.
|
236
|
+
version: 0.53.0
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
238
|
name: simplecov
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -285,23 +285,22 @@ files:
|
|
285
285
|
- bin/setup
|
286
286
|
- docs/ecs-task-notification.md
|
287
287
|
- docs/jsonnet.md
|
288
|
-
- examples/create_aws_cloud_watch_logs_log_group.
|
288
|
+
- examples/create_aws_cloud_watch_logs_log_group.libsonnet
|
289
289
|
- examples/front.libsonnet
|
290
290
|
- examples/front.yml
|
291
|
-
- examples/hello-autoscaling-group.
|
292
|
-
- examples/hello-autoscaling.
|
293
|
-
- examples/hello-awslogs-driver.
|
294
|
-
- examples/hello-cap-add-app.
|
295
|
-
- examples/hello-fargate-batch.
|
291
|
+
- examples/hello-autoscaling-group.jsonnet
|
292
|
+
- examples/hello-autoscaling.jsonnet
|
293
|
+
- examples/hello-awslogs-driver.jsonnet
|
294
|
+
- examples/hello-cap-add-app.jsonnet
|
295
|
+
- examples/hello-fargate-batch.jsonnet
|
296
296
|
- examples/hello-fargate.jsonnet
|
297
|
-
- examples/hello-
|
298
|
-
- examples/hello-lb-v2.
|
299
|
-
- examples/hello-lb.
|
300
|
-
- examples/hello-nofront.
|
301
|
-
- examples/hello-privileged-app.
|
297
|
+
- examples/hello-internal-nlb.jsonnet
|
298
|
+
- examples/hello-lb-v2.jsonnet
|
299
|
+
- examples/hello-lb.jsonnet
|
300
|
+
- examples/hello-nofront.jsonnet
|
301
|
+
- examples/hello-privileged-app.jsonnet
|
302
302
|
- examples/hello.env
|
303
303
|
- examples/hello.jsonnet
|
304
|
-
- examples/hello.yml
|
305
304
|
- examples/put-ecs-container-status-to-s3/index.js
|
306
305
|
- examples/put-ecs-container-status-to-s3/package.json
|
307
306
|
- exe/hako
|
@@ -1 +0,0 @@
|
|
1
|
-
type: create_aws_cloud_watch_logs_log_group
|
@@ -1,14 +0,0 @@
|
|
1
|
-
scheduler:
|
2
|
-
type: ecs
|
3
|
-
region: ap-northeast-1
|
4
|
-
cluster: eagletmt
|
5
|
-
role: ecsServiceRole
|
6
|
-
autoscaling_group_for_oneshot: hako-batch-cluster
|
7
|
-
app:
|
8
|
-
image: ryotarai/hello-sinatra
|
9
|
-
memory: 128
|
10
|
-
cpu: 256
|
11
|
-
env:
|
12
|
-
PORT: '3000'
|
13
|
-
MESSAGE: 'hello'
|
14
|
-
command: ['echo', 'heavy offline job']
|
@@ -1,56 +0,0 @@
|
|
1
|
-
scheduler:
|
2
|
-
type: ecs
|
3
|
-
region: ap-northeast-1
|
4
|
-
cluster: eagletmt
|
5
|
-
desired_count: 2
|
6
|
-
role: ecsServiceRole
|
7
|
-
elb:
|
8
|
-
listeners:
|
9
|
-
- load_balancer_port: 80
|
10
|
-
protocol: HTTP
|
11
|
-
subnets:
|
12
|
-
- subnet-XXXXXXXX
|
13
|
-
- subnet-YYYYYYYY
|
14
|
-
security_groups:
|
15
|
-
- sg-ZZZZZZZZ
|
16
|
-
autoscaling:
|
17
|
-
role_arn: arn:aws:iam::012345678901:role/ecsAutoscaleRole
|
18
|
-
min_capacity: 1
|
19
|
-
max_capacity: 4
|
20
|
-
policies:
|
21
|
-
# Add one task when ecs-scaling-out-hello-autoscaling-service is in alarm state
|
22
|
-
- alarms: [ecs-scaling-out-hello-autoscaling-service]
|
23
|
-
cooldown: 300
|
24
|
-
adjustment_type: ChangeInCapacity
|
25
|
-
scaling_adjustment: 1
|
26
|
-
metric_interval_lower_bound: 0
|
27
|
-
metric_aggregation_type: Average
|
28
|
-
# Remove one task when ecs-scaling-in-hello-autoscaling-service is in alarm state
|
29
|
-
- alarms: [ecs-scaling-in-hello-autoscaling-service]
|
30
|
-
cooldown: 300
|
31
|
-
adjustment_type: ChangeInCapacity
|
32
|
-
scaling_adjustment: -1
|
33
|
-
metric_interval_upper_bound: 0
|
34
|
-
metric_aggregation_type: Average
|
35
|
-
app:
|
36
|
-
image: ryotarai/hello-sinatra
|
37
|
-
memory: 128
|
38
|
-
cpu: 256
|
39
|
-
env:
|
40
|
-
$providers:
|
41
|
-
- type: file
|
42
|
-
path: hello.env
|
43
|
-
PORT: '3000'
|
44
|
-
MESSAGE: '#{username}-san'
|
45
|
-
additional_containers:
|
46
|
-
front:
|
47
|
-
image_tag: hako-nginx
|
48
|
-
memory: 32
|
49
|
-
cpu: 32
|
50
|
-
scripts:
|
51
|
-
- <<: !include front.yml
|
52
|
-
backend_port: 3000
|
53
|
-
locations:
|
54
|
-
/:
|
55
|
-
allow_only_from:
|
56
|
-
- 10.0.0.0/24
|
@@ -1,18 +0,0 @@
|
|
1
|
-
scheduler:
|
2
|
-
type: ecs
|
3
|
-
region: ap-northeast-1
|
4
|
-
cluster: eagletmt
|
5
|
-
desired_count: 1
|
6
|
-
app:
|
7
|
-
image: busybox
|
8
|
-
memory: 128
|
9
|
-
cpu: 256
|
10
|
-
command: ['echo', 'hello awslogs']
|
11
|
-
log_configuration:
|
12
|
-
log_driver: awslogs
|
13
|
-
options:
|
14
|
-
awslogs-group: my-logs
|
15
|
-
awslogs-region: ap-northeast-1
|
16
|
-
awslogs-stream-prefix: example
|
17
|
-
scripts:
|
18
|
-
- <<: !include create_aws_cloud_watch_logs_log_group.yml
|
@@ -1,31 +0,0 @@
|
|
1
|
-
scheduler:
|
2
|
-
type: ecs
|
3
|
-
region: us-east-1
|
4
|
-
cluster: eagletmt
|
5
|
-
# Fargate
|
6
|
-
execution_role_arn: arn:aws:iam::012345678901:role/ecsTaskExecutionRole
|
7
|
-
cpu: '1024'
|
8
|
-
memory: '2048'
|
9
|
-
requires_compatibilities: ['FARGATE']
|
10
|
-
network_mode: awsvpc
|
11
|
-
launch_type: FARGATE
|
12
|
-
network_configuration:
|
13
|
-
awsvpc_configuration:
|
14
|
-
subnets:
|
15
|
-
- subnet-XXXXXXXX
|
16
|
-
security_groups: []
|
17
|
-
assign_public_ip: DISABLED
|
18
|
-
|
19
|
-
app:
|
20
|
-
image: ryotarai/hello-sinatra
|
21
|
-
cpu: 1024
|
22
|
-
memory: 256
|
23
|
-
memory_reservation: 128
|
24
|
-
log_configuration:
|
25
|
-
log_driver: awslogs
|
26
|
-
options:
|
27
|
-
awslogs-group: /ecs/hello-fargate-batch
|
28
|
-
awslogs-region: us-east-1
|
29
|
-
awslogs-stream-prefix: ecs
|
30
|
-
scripts:
|
31
|
-
- type: create_aws_cloud_watch_logs_log_group
|
data/examples/hello-fargate.yml
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
scheduler:
|
2
|
-
type: ecs
|
3
|
-
region: us-east-1
|
4
|
-
cluster: eagletmt
|
5
|
-
desired_count: 1
|
6
|
-
task_role_arn: arn:aws:iam::012345678901:role/EcsDefault
|
7
|
-
elb_v2:
|
8
|
-
vpc_id: vpc-xxxxxxxx
|
9
|
-
health_check_path: /site/sha
|
10
|
-
listeners:
|
11
|
-
- port: 80
|
12
|
-
protocol: HTTP
|
13
|
-
- port: 443
|
14
|
-
protocol: HTTPS
|
15
|
-
certificate_arn: arn:aws:acm:us-east-1:012345678901:certificate/01234567-89ab-cdef-0123-456789abcdef
|
16
|
-
subnets:
|
17
|
-
- subnet-xxxxxxxx
|
18
|
-
- subnet-yyyyyyyy
|
19
|
-
security_groups:
|
20
|
-
- sg-xxxxxxxx
|
21
|
-
load_balancer_attributes:
|
22
|
-
access_logs.s3.enabled: 'true'
|
23
|
-
access_logs.s3.bucket: hako-access-logs
|
24
|
-
access_logs.s3.prefix: hako-hello-fargate
|
25
|
-
idle_timeout.timeout_seconds: '5'
|
26
|
-
target_group_attributes:
|
27
|
-
deregistration_delay.timeout_seconds: '20'
|
28
|
-
# Fargate
|
29
|
-
execution_role_arn: arn:aws:iam::012345678901:role/ecsTaskExecutionRole
|
30
|
-
cpu: '1024'
|
31
|
-
memory: '2048'
|
32
|
-
requires_compatibilities: ['FARGATE']
|
33
|
-
network_mode: awsvpc
|
34
|
-
launch_type: FARGATE
|
35
|
-
network_configuration:
|
36
|
-
awsvpc_configuration:
|
37
|
-
subnets:
|
38
|
-
- subnet-zzzzzzzz
|
39
|
-
- subnet-wwwwwwww
|
40
|
-
security_groups:
|
41
|
-
- sg-yyyyyyyy
|
42
|
-
- sg-zzzzzzzz
|
43
|
-
assign_public_ip: DISABLED
|
44
|
-
app:
|
45
|
-
image: ryotarai/hello-sinatra
|
46
|
-
cpu: 128
|
47
|
-
memory: 256
|
48
|
-
env:
|
49
|
-
PORT: '3000'
|
50
|
-
MESSAGE: 'Hello, Fargate'
|
51
|
-
log_configuration:
|
52
|
-
log_driver: awslogs
|
53
|
-
options:
|
54
|
-
awslogs-group: /ecs/hello-fargate
|
55
|
-
awslogs-region: us-east-1
|
56
|
-
awslogs-stream-prefix: ecs
|
57
|
-
additional_containers:
|
58
|
-
front:
|
59
|
-
image_tag: hako-nginx
|
60
|
-
log_configuration:
|
61
|
-
log_driver: awslogs
|
62
|
-
options:
|
63
|
-
awslogs-group: /ecs/hello-fargate
|
64
|
-
awslogs-region: us-east-1
|
65
|
-
awslogs-stream-prefix: ecs
|
66
|
-
scripts:
|
67
|
-
- <<: !include front.yml
|
68
|
-
backend_port: 3000
|
data/examples/hello-lb-v2.yml
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
scheduler:
|
2
|
-
type: ecs
|
3
|
-
region: ap-northeast-1
|
4
|
-
cluster: eagletmt
|
5
|
-
desired_count: 2
|
6
|
-
role: ecsServiceRole
|
7
|
-
# dynamic_port_mapping is enabled by default with elb_v2
|
8
|
-
# dynamic_port_mapping: false
|
9
|
-
elb_v2:
|
10
|
-
# VPC id where the target group is located
|
11
|
-
vpc_id: vpc-WWWWWWWW
|
12
|
-
# Health check path of the target group
|
13
|
-
health_check_path: /site/sha
|
14
|
-
listeners:
|
15
|
-
- port: 80
|
16
|
-
protocol: HTTP
|
17
|
-
- port: 443
|
18
|
-
protocol: HTTPS
|
19
|
-
certificate_arn: arn:aws:iam::012345678901:server-certificate/hello-lb-v2.example.com
|
20
|
-
subnets:
|
21
|
-
- subnet-XXXXXXXX
|
22
|
-
- subnet-YYYYYYYY
|
23
|
-
security_groups:
|
24
|
-
- sg-ZZZZZZZZ
|
25
|
-
load_balancer_attributes:
|
26
|
-
access_logs.s3.enabled: 'true'
|
27
|
-
access_logs.s3.bucket: hako-access-logs
|
28
|
-
access_logs.s3.prefix: hako-hello-lb-v2
|
29
|
-
target_group_attributes:
|
30
|
-
deregistration_delay.timeout_seconds: '20'
|
31
|
-
# http://docs.aws.amazon.com/en_us/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-group-attributes
|
32
|
-
app:
|
33
|
-
image: ryotarai/hello-sinatra
|
34
|
-
memory: 128
|
35
|
-
cpu: 256
|
36
|
-
env:
|
37
|
-
$providers:
|
38
|
-
- type: file
|
39
|
-
path: hello.env
|
40
|
-
PORT: '3000'
|
41
|
-
MESSAGE: '#{username}-san'
|
42
|
-
additional_containers:
|
43
|
-
front:
|
44
|
-
image_tag: hako-nginx
|
45
|
-
memory: 32
|
46
|
-
cpu: 32
|
47
|
-
scripts:
|
48
|
-
- <<: !include front.yml
|
49
|
-
backend_port: 3000
|
50
|
-
locations:
|
51
|
-
/:
|
52
|
-
allow_only_from:
|
53
|
-
- 10.0.0.0/24
|
data/examples/hello-lb.yml
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
scheduler:
|
2
|
-
type: ecs
|
3
|
-
region: ap-northeast-1
|
4
|
-
cluster: eagletmt
|
5
|
-
desired_count: 2
|
6
|
-
role: ecsServiceRole
|
7
|
-
# dynamic_port_mapping cannot be enabled with elb
|
8
|
-
elb:
|
9
|
-
listeners:
|
10
|
-
- load_balancer_port: 80
|
11
|
-
protocol: HTTP
|
12
|
-
subnets:
|
13
|
-
- subnet-XXXXXXXX
|
14
|
-
- subnet-YYYYYYYY
|
15
|
-
security_groups:
|
16
|
-
- sg-ZZZZZZZZ
|
17
|
-
app:
|
18
|
-
image: ryotarai/hello-sinatra
|
19
|
-
memory: 128
|
20
|
-
cpu: 256
|
21
|
-
env:
|
22
|
-
$providers:
|
23
|
-
- type: file
|
24
|
-
path: hello.env
|
25
|
-
PORT: '3000'
|
26
|
-
MESSAGE: '#{username}-san'
|
27
|
-
additional_containers:
|
28
|
-
front:
|
29
|
-
image_tag: hako-nginx
|
30
|
-
memory: 32
|
31
|
-
cpu: 32
|
32
|
-
scripts:
|
33
|
-
- <<: !include front.yml
|
34
|
-
backend_port: 3000
|
35
|
-
locations:
|
36
|
-
/:
|
37
|
-
allow_only_from:
|
38
|
-
- 10.0.0.0/24
|
data/examples/hello-nofront.yml
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
scheduler:
|
2
|
-
type: ecs
|
3
|
-
region: ap-northeast-1
|
4
|
-
cluster: eagletmt
|
5
|
-
desired_count: 2
|
6
|
-
role: ecsServiceRole
|
7
|
-
elb_v2:
|
8
|
-
# VPC id where the target group is located
|
9
|
-
vpc_id: vpc-WWWWWWWW
|
10
|
-
# Health check path of the target group
|
11
|
-
health_check_path: /site/sha
|
12
|
-
listeners:
|
13
|
-
- port: 80
|
14
|
-
protocol: HTTP
|
15
|
-
- port: 443
|
16
|
-
protocol: HTTPS
|
17
|
-
certificate_arn: arn:aws:iam::012345678901:server-certificate/hello-lb-v2.example.com
|
18
|
-
subnets:
|
19
|
-
- subnet-XXXXXXXX
|
20
|
-
- subnet-YYYYYYYY
|
21
|
-
security_groups:
|
22
|
-
- sg-ZZZZZZZZ
|
23
|
-
load_balancer_attributes:
|
24
|
-
access_logs.s3.enabled: 'true'
|
25
|
-
access_logs.s3.bucket: hako-access-logs
|
26
|
-
access_logs.s3.prefix: hako-hello-lb-v2
|
27
|
-
# Connect ELB to app container
|
28
|
-
container_name: app
|
29
|
-
container_port: 3000
|
30
|
-
app:
|
31
|
-
image: ryotarai/hello-sinatra
|
32
|
-
memory: 128
|
33
|
-
cpu: 256
|
34
|
-
env:
|
35
|
-
$providers:
|
36
|
-
- type: file
|
37
|
-
path: hello.env
|
38
|
-
PORT: '3000'
|
39
|
-
MESSAGE: '#{username}-san'
|
40
|
-
# Add port mapping to connect to ELB
|
41
|
-
port_mappings:
|
42
|
-
- container_port: 3000
|
43
|
-
host_port: 0
|
44
|
-
protocol: tcp
|
data/examples/hello.yml
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
scheduler:
|
2
|
-
type: ecs
|
3
|
-
region: ap-northeast-1
|
4
|
-
cluster: eagletmt
|
5
|
-
desired_count: 2
|
6
|
-
task_role_arn: arn:aws:iam::012345678901:role/HelloRole
|
7
|
-
# dynamic_port_mapping is enabled by default with no ELB option
|
8
|
-
# dynamic_port_mapping: false
|
9
|
-
deployment_configuration:
|
10
|
-
maximum_percent: 200
|
11
|
-
minimum_healthy_percent: 50
|
12
|
-
app:
|
13
|
-
image: ryotarai/hello-sinatra
|
14
|
-
memory: 128
|
15
|
-
cpu: 256
|
16
|
-
links:
|
17
|
-
- redis:redis
|
18
|
-
env:
|
19
|
-
$providers:
|
20
|
-
- type: file
|
21
|
-
path: hello.env
|
22
|
-
PORT: '3000'
|
23
|
-
MESSAGE: '#{username}-san'
|
24
|
-
additional_containers:
|
25
|
-
front:
|
26
|
-
image_tag: hako-nginx
|
27
|
-
memory: 32
|
28
|
-
cpu: 32
|
29
|
-
redis:
|
30
|
-
image_tag: redis:3.0
|
31
|
-
cpu: 64
|
32
|
-
memory: 512
|
33
|
-
scripts:
|
34
|
-
- <<: !include front.yml
|
35
|
-
backend_port: 3000
|