hako 2.4.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/examples/hello-lb-v2.jsonnet +4 -4
- data/hako.gemspec +1 -1
- data/lib/hako/container.rb +12 -0
- data/lib/hako/schedulers/ecs.rb +10 -1
- data/lib/hako/schedulers/ecs_definition_comparator.rb +8 -0
- data/lib/hako/schedulers/ecs_elb.rb +1 -1
- data/lib/hako/schedulers/ecs_elb_v2.rb +14 -9
- data/lib/hako/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 767220800b5dfd1061a252661ffbcbc906add32e8530ff6a995c0a7bd0ca8638
|
4
|
+
data.tar.gz: 2e55c3884f6fffd16c1be7c11d4d88bf25e92f8673d8879fe07bd0453fb60fb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 240ca907d82750a600bcb21b94df017fc4b10732b78ede4e0025042957a0b0eadb3636512a0a4c0fdb59cff31ebb0e541da067397bad6a8da0ffb3a3293cfbec
|
7
|
+
data.tar.gz: c9949c11c16665d5efebe91e92acf30df5ae0c5cdd4d229e0f2b8711e503d5e43267aa233f6830ad6e24fba6f9bc8dbcd4c3a4e4efddb67c31d8861c8558cc4a
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
local fileProvider = std.native('provide.file');
|
2
|
-
local provide(name) = fileProvider(std.toString({ path: 'hello.env' }), name);
|
3
|
-
|
4
1
|
{
|
5
2
|
scheduler: {
|
6
3
|
type: 'ecs',
|
@@ -48,8 +45,11 @@ local provide(name) = fileProvider(std.toString({ path: 'hello.env' }), name);
|
|
48
45
|
cpu: 256,
|
49
46
|
env: {
|
50
47
|
PORT: '3000',
|
51
|
-
MESSAGE: std.format('%s-san', provide('username')),
|
52
48
|
},
|
49
|
+
secrets: [{
|
50
|
+
name: 'MESSAGE',
|
51
|
+
value_from: 'arn:aws:ssm:ap-northeast-1:012345678901:parameter/hako/hello-lb-v2/secret-message',
|
52
|
+
}],
|
53
53
|
},
|
54
54
|
sidecars: {
|
55
55
|
front: {
|
data/hako.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency 'aws-sdk-cloudwatch'
|
27
27
|
spec.add_dependency 'aws-sdk-cloudwatchlogs'
|
28
28
|
spec.add_dependency 'aws-sdk-ec2'
|
29
|
-
spec.add_dependency 'aws-sdk-ecs', '>= 1.
|
29
|
+
spec.add_dependency 'aws-sdk-ecs', '>= 1.24.0'
|
30
30
|
spec.add_dependency 'aws-sdk-elasticloadbalancing'
|
31
31
|
spec.add_dependency 'aws-sdk-elasticloadbalancingv2'
|
32
32
|
spec.add_dependency 'aws-sdk-s3'
|
data/lib/hako/container.rb
CHANGED
@@ -46,6 +46,18 @@ module Hako
|
|
46
46
|
@expanded_env ||= expand_env(@definition.fetch('env'))
|
47
47
|
end
|
48
48
|
|
49
|
+
# @return [Array<Hash>, nil]
|
50
|
+
def secrets
|
51
|
+
if @definition['secrets']
|
52
|
+
@definition['secrets'].map do |secret|
|
53
|
+
{
|
54
|
+
name: secret.fetch('name'),
|
55
|
+
value_from: secret.fetch('value_from'),
|
56
|
+
}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
49
61
|
# @return [Array<Hash>]
|
50
62
|
def port_mappings
|
51
63
|
@definition['port_mappings'].map do |port_mapping|
|
data/lib/hako/schedulers/ecs.rb
CHANGED
@@ -155,7 +155,7 @@ module Hako
|
|
155
155
|
task_definition = ecs_client.describe_task_definition(task_definition: current_service.task_definition).task_definition
|
156
156
|
current_definition = "#{task_definition.family}:#{task_definition.revision}"
|
157
157
|
target_definition = find_rollback_target(task_definition)
|
158
|
-
Hako.logger.info "Current task
|
158
|
+
Hako.logger.info "Current task definition is #{current_definition}. Rolling back to #{target_definition}"
|
159
159
|
call_rollback_started(task_definition, target_definition)
|
160
160
|
|
161
161
|
if @dry_run
|
@@ -593,6 +593,7 @@ module Hako
|
|
593
593
|
port_mappings: container.port_mappings,
|
594
594
|
essential: true,
|
595
595
|
environment: environment,
|
596
|
+
secrets: container.secrets,
|
596
597
|
docker_labels: container.docker_labels,
|
597
598
|
mount_points: container.mount_points,
|
598
599
|
command: container.command,
|
@@ -1198,6 +1199,14 @@ module Hako
|
|
1198
1199
|
cmd << "\\\n "
|
1199
1200
|
end
|
1200
1201
|
end
|
1202
|
+
(definition[:secrets] || []).each do |secret|
|
1203
|
+
name = secret.fetch(:name)
|
1204
|
+
# additional_env (given in command line) has priority over secrets (declared in definition file)
|
1205
|
+
unless additional_env.key?(name)
|
1206
|
+
cmd << '--env' << "#{name}=secret:#{secret.fetch(:value_from)}"
|
1207
|
+
cmd << "\\\n "
|
1208
|
+
end
|
1209
|
+
end
|
1201
1210
|
additional_env.each do |name, value|
|
1202
1211
|
cmd << '--env' << "#{name}=#{value}"
|
1203
1212
|
cmd << "\\\n "
|
@@ -28,6 +28,7 @@ module Hako
|
|
28
28
|
struct.member(:links, Schema::UnorderedArray.new(Schema::String.new))
|
29
29
|
struct.member(:port_mappings, Schema::UnorderedArray.new(port_mapping_schema))
|
30
30
|
struct.member(:environment, Schema::UnorderedArray.new(environment_schema))
|
31
|
+
struct.member(:secrets, Schema::Nullable.new(Schema::UnorderedArray.new(secrets_schema)))
|
31
32
|
struct.member(:docker_labels, Schema::Table.new(Schema::String.new, Schema::String.new))
|
32
33
|
struct.member(:mount_points, Schema::UnorderedArray.new(mount_point_schema))
|
33
34
|
struct.member(:command, Schema::Nullable.new(Schema::OrderedArray.new(Schema::String.new)))
|
@@ -152,6 +153,13 @@ module Hako
|
|
152
153
|
struct.member(:ip_address, Schema::String.new)
|
153
154
|
end
|
154
155
|
end
|
156
|
+
|
157
|
+
def secrets_schema
|
158
|
+
Schema::Structure.new.tap do |struct|
|
159
|
+
struct.member(:name, Schema::String.new)
|
160
|
+
struct.member(:value_from, Schema::String.new)
|
161
|
+
end
|
162
|
+
end
|
155
163
|
end
|
156
164
|
end
|
157
165
|
end
|
@@ -31,14 +31,14 @@ module Hako
|
|
31
31
|
|
32
32
|
# @return [Aws::ElasticLoadBalancingV2::Types::LoadBalancer]
|
33
33
|
def describe_load_balancer
|
34
|
-
elb_client.describe_load_balancers(names: [
|
34
|
+
elb_client.describe_load_balancers(names: [elb_name]).load_balancers[0]
|
35
35
|
rescue Aws::ElasticLoadBalancingV2::Errors::LoadBalancerNotFound
|
36
36
|
nil
|
37
37
|
end
|
38
38
|
|
39
39
|
# @return [Aws::ElasticLoadBalancingV2::Types::TargetGroup]
|
40
40
|
def describe_target_group
|
41
|
-
elb_client.describe_target_groups(names: [
|
41
|
+
elb_client.describe_target_groups(names: [target_group_name]).target_groups[0]
|
42
42
|
rescue Aws::ElasticLoadBalancingV2::Errors::TargetGroupNotFound
|
43
43
|
nil
|
44
44
|
end
|
@@ -57,7 +57,7 @@ module Hako
|
|
57
57
|
elb_type = @elb_v2_config.fetch('type', nil)
|
58
58
|
if elb_type == 'network'
|
59
59
|
load_balancer = elb_client.create_load_balancer(
|
60
|
-
name:
|
60
|
+
name: elb_name,
|
61
61
|
subnets: @elb_v2_config.fetch('subnets'),
|
62
62
|
scheme: @elb_v2_config.fetch('scheme', nil),
|
63
63
|
type: 'network',
|
@@ -66,7 +66,7 @@ module Hako
|
|
66
66
|
Hako.logger.info "Created ELBv2(NLB) #{load_balancer.dns_name}"
|
67
67
|
else
|
68
68
|
load_balancer = elb_client.create_load_balancer(
|
69
|
-
name:
|
69
|
+
name: elb_name,
|
70
70
|
subnets: @elb_v2_config.fetch('subnets'),
|
71
71
|
security_groups: @elb_v2_config.fetch('security_groups'),
|
72
72
|
scheme: @elb_v2_config.fetch('scheme', nil),
|
@@ -82,7 +82,7 @@ module Hako
|
|
82
82
|
elb_type = @elb_v2_config.fetch('type', nil)
|
83
83
|
target_group = if elb_type == 'network'
|
84
84
|
elb_client.create_target_group(
|
85
|
-
name:
|
85
|
+
name: target_group_name,
|
86
86
|
port: 80,
|
87
87
|
protocol: 'TCP',
|
88
88
|
vpc_id: @elb_v2_config.fetch('vpc_id'),
|
@@ -90,7 +90,7 @@ module Hako
|
|
90
90
|
).target_groups[0]
|
91
91
|
else
|
92
92
|
elb_client.create_target_group(
|
93
|
-
name:
|
93
|
+
name: target_group_name,
|
94
94
|
port: 80,
|
95
95
|
protocol: 'HTTP',
|
96
96
|
vpc_id: @elb_v2_config.fetch('vpc_id'),
|
@@ -203,7 +203,7 @@ module Hako
|
|
203
203
|
Hako.logger.info "Deleted ELBv2 #{load_balancer.load_balancer_arn}"
|
204
204
|
end
|
205
205
|
else
|
206
|
-
Hako.logger.info "ELBv2 #{
|
206
|
+
Hako.logger.info "ELBv2 #{elb_name} doesn't exist"
|
207
207
|
end
|
208
208
|
|
209
209
|
target_group = describe_target_group
|
@@ -232,8 +232,13 @@ module Hako
|
|
232
232
|
end
|
233
233
|
|
234
234
|
# @return [String]
|
235
|
-
def
|
236
|
-
"hako-#{@app_id}"
|
235
|
+
def elb_name
|
236
|
+
@elb_v2_config.fetch('load_balancer_name', "hako-#{@app_id}")
|
237
|
+
end
|
238
|
+
|
239
|
+
# @return [String]
|
240
|
+
def target_group_name
|
241
|
+
@elb_v2_config.fetch('target_group_name', elb_name)
|
237
242
|
end
|
238
243
|
|
239
244
|
# @return [Hash]
|
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.
|
4
|
+
version: 2.5.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-
|
11
|
+
date: 2018-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-applicationautoscaling
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.24.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
96
|
+
version: 1.24.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: aws-sdk-elasticloadbalancing
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|