MovableInkAWS 2.11.5 → 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 +38 -0
- data/lib/movable_ink/version.rb +1 -1
- data/spec/ec2_spec.rb +93 -0
- 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
|
|
@@ -165,6 +169,40 @@ module MovableInk
|
|
|
165
169
|
})
|
|
166
170
|
end
|
|
167
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') }
|
|
203
|
+
})
|
|
204
|
+
end
|
|
205
|
+
|
|
168
206
|
def map_ec2_consul_endpoint(endpoint)
|
|
169
207
|
OpenStruct.new ({
|
|
170
208
|
private_ip_address: endpoint.Node.dig('Address'),
|
data/lib/movable_ink/version.rb
CHANGED
data/spec/ec2_spec.rb
CHANGED
|
@@ -487,6 +487,99 @@ describe MovableInk::AWS::EC2 do
|
|
|
487
487
|
expect(backend.private_ip_address).to eq('10.0.0.1')
|
|
488
488
|
expect(backend.placement[:availability_zone]).to eq('us-east-1a')
|
|
489
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')
|
|
582
|
+
end
|
|
490
583
|
end
|
|
491
584
|
|
|
492
585
|
context "ordered roles" do
|
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
|