MovableInkAWS 2.11.4 → 2.11.6
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/Gemfile.lock +1 -1
- data/lib/movable_ink/aws/ec2.rb +39 -1
- data/lib/movable_ink/version.rb +1 -1
- data/spec/ec2_spec.rb +95 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e435c7e7f7f63344b18f29da2e373d44bac9f990dc7514bc868deb1e18d0a01b
|
|
4
|
+
data.tar.gz: 7da29c9c9daf0ca24c0395422365f87c0ac596274620e98992fd5645ca053984
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3ee0936e7d71cfffe8bcbaaf861c0c2bfaf3e6d24e7288f485cd4f922abb430bf4a9c0ae8b400674ffaba46e4084c46493c26865340af1779cf2f901cdad8d3a
|
|
7
|
+
data.tar.gz: da6308796716af6dd1138dbb5c582da293f890247d1fe0de1f502ab668596be62485860795bc2c6d6046030261f718b86ec82aa186dae3790de285f7b97ce4f3
|
data/Gemfile.lock
CHANGED
data/lib/movable_ink/aws/ec2.rb
CHANGED
|
@@ -136,7 +136,11 @@ module MovableInk
|
|
|
136
136
|
# within MI configuration
|
|
137
137
|
Diplomat::Health.service(role.gsub('_', '-'), consul_service_options).map { |endpoint|
|
|
138
138
|
if endpoint.Node.dig('Meta', 'external-source') == 'kubernetes'
|
|
139
|
+
# Legacy catalog sync
|
|
139
140
|
map_k8s_consul_endpoint(endpoint, role)
|
|
141
|
+
elsif endpoint.Service && endpoint.Service.dig('Meta', 'managed-by') == 'consul-k8s-endpoints-controller'
|
|
142
|
+
# Consul mesh with service mesh sidecar
|
|
143
|
+
map_k8s_consul_mesh_endpoint(endpoint, role)
|
|
140
144
|
else
|
|
141
145
|
map_ec2_consul_endpoint(endpoint)
|
|
142
146
|
end
|
|
@@ -161,7 +165,41 @@ module MovableInk
|
|
|
161
165
|
value: role
|
|
162
166
|
}
|
|
163
167
|
],
|
|
164
|
-
placement: { availability_zone:
|
|
168
|
+
placement: { availability_zone: endpoint.Service.dig('Meta', 'external-k8s-topology-zone') }
|
|
169
|
+
})
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def map_k8s_consul_mesh_endpoint(endpoint, role)
|
|
173
|
+
OpenStruct.new ({
|
|
174
|
+
private_ip_address: endpoint.Service.dig('Address'),
|
|
175
|
+
instance_id: nil,
|
|
176
|
+
tags: [
|
|
177
|
+
{
|
|
178
|
+
key: 'Name',
|
|
179
|
+
value: endpoint.Service.dig('Meta', 'pod-name')
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
key: 'mi:roles',
|
|
183
|
+
value: role
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
key: 'mi:monitoring_roles',
|
|
187
|
+
value: role
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
key: 'k8s:namespace',
|
|
191
|
+
value: endpoint.Service.dig('Meta', 'k8s-namespace')
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
key: 'k8s:service',
|
|
195
|
+
value: endpoint.Service.dig('Meta', 'k8s-service-name')
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
key: 'k8s:pod-uid',
|
|
199
|
+
value: endpoint.Service.dig('Meta', 'pod-uid')
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
placement: { availability_zone: endpoint.Service.dig('Locality', 'Zone') }
|
|
165
203
|
})
|
|
166
204
|
end
|
|
167
205
|
|
data/lib/movable_ink/version.rb
CHANGED
data/spec/ec2_spec.rb
CHANGED
|
@@ -418,6 +418,7 @@ describe MovableInk::AWS::EC2 do
|
|
|
418
418
|
"Meta": {
|
|
419
419
|
"external-source": "kubernetes",
|
|
420
420
|
"external-k8s-ns": "default",
|
|
421
|
+
"external-k8s-topology-zone": "us-east-1a",
|
|
421
422
|
}
|
|
422
423
|
}
|
|
423
424
|
}
|
|
@@ -484,7 +485,100 @@ describe MovableInk::AWS::EC2 do
|
|
|
484
485
|
expect(roles_tag[:value]).to eq('kubernetes-service-name')
|
|
485
486
|
expect(backend.instance_id).to eq(nil)
|
|
486
487
|
expect(backend.private_ip_address).to eq('10.0.0.1')
|
|
487
|
-
expect(backend.
|
|
488
|
+
expect(backend.placement[:availability_zone]).to eq('us-east-1a')
|
|
489
|
+
end
|
|
490
|
+
|
|
491
|
+
it "returns backends that are synced from consul mesh with service mesh sidecar" do
|
|
492
|
+
consul_mesh_service_instances = [
|
|
493
|
+
{
|
|
494
|
+
"Node": {
|
|
495
|
+
"ID": "",
|
|
496
|
+
"Node": "k8s-mesh-virtual-node",
|
|
497
|
+
"Address": "10.0.0.10",
|
|
498
|
+
"Datacenter": my_datacenter,
|
|
499
|
+
"TaggedAddresses": nil,
|
|
500
|
+
"Meta": {
|
|
501
|
+
"synthetic-node": "true"
|
|
502
|
+
},
|
|
503
|
+
"CreateIndex": 12345,
|
|
504
|
+
"ModifyIndex": 12345
|
|
505
|
+
},
|
|
506
|
+
"Service": {
|
|
507
|
+
"ID": "test-service-abc123-xyz-test-service",
|
|
508
|
+
"Service": "test-service",
|
|
509
|
+
"Tags": [],
|
|
510
|
+
"Address": "10.0.0.11",
|
|
511
|
+
"Meta": {
|
|
512
|
+
"k8s-namespace": "default",
|
|
513
|
+
"k8s-service-name": "test-service",
|
|
514
|
+
"managed-by": "consul-k8s-endpoints-controller",
|
|
515
|
+
"pod-name": "test-service-abc123-xyz",
|
|
516
|
+
"pod-uid": "00000000-0000-0000-0000-000000000000",
|
|
517
|
+
"synthetic-node": "true"
|
|
518
|
+
},
|
|
519
|
+
"Port": 8080,
|
|
520
|
+
"Weights": {
|
|
521
|
+
"Passing": 1,
|
|
522
|
+
"Warning": 1
|
|
523
|
+
},
|
|
524
|
+
"EnableTagOverride": false,
|
|
525
|
+
"Locality": {
|
|
526
|
+
"Region": "us-east-1",
|
|
527
|
+
"Zone": "us-east-1b"
|
|
528
|
+
},
|
|
529
|
+
"Proxy": {
|
|
530
|
+
"Mode": "",
|
|
531
|
+
"MeshGateway": {},
|
|
532
|
+
"Expose": {}
|
|
533
|
+
},
|
|
534
|
+
"Connect": {},
|
|
535
|
+
"PeerName": "",
|
|
536
|
+
"CreateIndex": 12345,
|
|
537
|
+
"ModifyIndex": 12345
|
|
538
|
+
},
|
|
539
|
+
"Checks": [
|
|
540
|
+
{
|
|
541
|
+
"Node": "k8s-mesh-virtual-node",
|
|
542
|
+
"CheckID": "default/test-service-abc123-xyz-test-service",
|
|
543
|
+
"Name": "Kubernetes Readiness Check",
|
|
544
|
+
"Status": "passing",
|
|
545
|
+
"Notes": "",
|
|
546
|
+
"Output": "Kubernetes health checks passing",
|
|
547
|
+
"ServiceID": "test-service-abc123-xyz-test-service",
|
|
548
|
+
"ServiceName": "test-service",
|
|
549
|
+
"ServiceTags": [],
|
|
550
|
+
"Type": "kubernetes-readiness",
|
|
551
|
+
"Interval": "",
|
|
552
|
+
"Timeout": "",
|
|
553
|
+
"ExposedPort": 0,
|
|
554
|
+
"Definition": {},
|
|
555
|
+
"CreateIndex": 12345,
|
|
556
|
+
"ModifyIndex": 12345
|
|
557
|
+
}
|
|
558
|
+
]
|
|
559
|
+
}
|
|
560
|
+
]
|
|
561
|
+
|
|
562
|
+
json = JSON.generate(consul_mesh_service_instances)
|
|
563
|
+
stub_request(:get, "https://localhost:8501/v1/health/service/test-service?cached=true&dc=#{my_datacenter}&passing=true&stale=true")
|
|
564
|
+
.to_return(status: 200, body: json, headers: {})
|
|
565
|
+
|
|
566
|
+
resp_instances = aws.instances(role: 'test-service', discovery_type: 'consul')
|
|
567
|
+
backend = resp_instances.first
|
|
568
|
+
name_tag = backend.tags.find {|t| t[:key] == 'Name' }
|
|
569
|
+
roles_tag = backend.tags.find {|t| t[:key] == 'mi:roles' }
|
|
570
|
+
k8s_namespace_tag = backend.tags.find {|t| t[:key] == 'k8s:namespace' }
|
|
571
|
+
k8s_service_tag = backend.tags.find {|t| t[:key] == 'k8s:service' }
|
|
572
|
+
k8s_pod_uid_tag = backend.tags.find {|t| t[:key] == 'k8s:pod-uid' }
|
|
573
|
+
|
|
574
|
+
expect(name_tag[:value]).to eq('test-service-abc123-xyz')
|
|
575
|
+
expect(roles_tag[:value]).to eq('test-service')
|
|
576
|
+
expect(k8s_namespace_tag[:value]).to eq('default')
|
|
577
|
+
expect(k8s_service_tag[:value]).to eq('test-service')
|
|
578
|
+
expect(k8s_pod_uid_tag[:value]).to eq('00000000-0000-0000-0000-000000000000')
|
|
579
|
+
expect(backend.instance_id).to eq(nil)
|
|
580
|
+
expect(backend.private_ip_address).to eq('10.0.0.11')
|
|
581
|
+
expect(backend.placement[:availability_zone]).to eq('us-east-1b')
|
|
488
582
|
end
|
|
489
583
|
end
|
|
490
584
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: MovableInkAWS
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.11.
|
|
4
|
+
version: 2.11.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- MI SRE
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aws-sdk-core
|