mirror of
https://github.com/status-im/consul.git
synced 2025-01-22 19:50:36 +00:00
peering: always send the mesh gateway SpiffeID even for tcp services (#13728)
If someone were to switch a peer-exported service from L4 to L7 there would be a brief SAN validation hiccup as traffic shifted to the mesh gateway for termination. This PR sends the mesh gateway SpiffeID down all the time so the clients always expect a switch.
This commit is contained in:
parent
f0e6e4e697
commit
c5c216008d
@ -720,6 +720,7 @@ func TestStreamResources_Server_ServiceUpdates(t *testing.T) {
|
|||||||
require.Equal(t, "tcp", pm.Protocol)
|
require.Equal(t, "tcp", pm.Protocol)
|
||||||
spiffeIDs := []string{
|
spiffeIDs := []string{
|
||||||
"spiffe://11111111-2222-3333-4444-555555555555.consul/ns/default/dc/dc1/svc/mysql",
|
"spiffe://11111111-2222-3333-4444-555555555555.consul/ns/default/dc/dc1/svc/mysql",
|
||||||
|
"spiffe://11111111-2222-3333-4444-555555555555.consul/gateway/mesh/dc/dc1",
|
||||||
}
|
}
|
||||||
require.Equal(t, spiffeIDs, pm.SpiffeID)
|
require.Equal(t, spiffeIDs, pm.SpiffeID)
|
||||||
},
|
},
|
||||||
|
@ -558,6 +558,12 @@ func createDiscoChainHealth(
|
|||||||
trustDomain,
|
trustDomain,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
gwSpiffeID := connect.SpiffeIDMeshGateway{
|
||||||
|
Host: trustDomain,
|
||||||
|
Partition: sn.PartitionOrDefault(),
|
||||||
|
Datacenter: datacenter,
|
||||||
|
}
|
||||||
|
|
||||||
// Create common peer meta.
|
// Create common peer meta.
|
||||||
//
|
//
|
||||||
// TODO(peering): should this be replicated by service and not by instance?
|
// TODO(peering): should this be replicated by service and not by instance?
|
||||||
@ -565,19 +571,14 @@ func createDiscoChainHealth(
|
|||||||
SNI: []string{sni},
|
SNI: []string{sni},
|
||||||
SpiffeID: []string{
|
SpiffeID: []string{
|
||||||
mainSpiffeIDString,
|
mainSpiffeIDString,
|
||||||
|
// Always include the gateway id here to facilitate error-free
|
||||||
|
// L4/L7 upgrade/downgrade scenarios.
|
||||||
|
gwSpiffeID.URI().String(),
|
||||||
},
|
},
|
||||||
Protocol: info.Protocol,
|
Protocol: info.Protocol,
|
||||||
}
|
}
|
||||||
|
|
||||||
if structs.IsProtocolHTTPLike(info.Protocol) {
|
if !structs.IsProtocolHTTPLike(info.Protocol) {
|
||||||
gwSpiffeID := connect.SpiffeIDMeshGateway{
|
|
||||||
Host: trustDomain,
|
|
||||||
Partition: sn.PartitionOrDefault(),
|
|
||||||
Datacenter: datacenter,
|
|
||||||
}
|
|
||||||
|
|
||||||
peerMeta.SpiffeID = append(peerMeta.SpiffeID, gwSpiffeID.URI().String())
|
|
||||||
} else {
|
|
||||||
for _, target := range info.TCPTargets {
|
for _, target := range info.TCPTargets {
|
||||||
targetSpiffeID := connect.SpiffeIDService{
|
targetSpiffeID := connect.SpiffeIDService{
|
||||||
Host: trustDomain,
|
Host: trustDomain,
|
||||||
|
@ -275,6 +275,7 @@ func TestSubscriptionManager_RegisterDeregister(t *testing.T) {
|
|||||||
},
|
},
|
||||||
SpiffeID: []string{
|
SpiffeID: []string{
|
||||||
"spiffe://11111111-2222-3333-4444-555555555555.consul/ns/default/dc/dc1/svc/mysql",
|
"spiffe://11111111-2222-3333-4444-555555555555.consul/ns/default/dc/dc1/svc/mysql",
|
||||||
|
"spiffe://11111111-2222-3333-4444-555555555555.consul/gateway/mesh/dc/dc1",
|
||||||
"spiffe://11111111-2222-3333-4444-555555555555.consul/ns/default/dc/dc1/svc/failover",
|
"spiffe://11111111-2222-3333-4444-555555555555.consul/ns/default/dc/dc1/svc/failover",
|
||||||
},
|
},
|
||||||
Protocol: "tcp",
|
Protocol: "tcp",
|
||||||
@ -335,6 +336,7 @@ func TestSubscriptionManager_RegisterDeregister(t *testing.T) {
|
|||||||
},
|
},
|
||||||
SpiffeID: []string{
|
SpiffeID: []string{
|
||||||
"spiffe://11111111-2222-3333-4444-555555555555.consul/ns/default/dc/dc1/svc/mysql",
|
"spiffe://11111111-2222-3333-4444-555555555555.consul/ns/default/dc/dc1/svc/mysql",
|
||||||
|
"spiffe://11111111-2222-3333-4444-555555555555.consul/gateway/mesh/dc/dc1",
|
||||||
},
|
},
|
||||||
Protocol: "tcp",
|
Protocol: "tcp",
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user