mirror of https://github.com/status-im/consul.git
Store GatewayKey in proxycfg snapshot for re-use
This commit is contained in:
parent
bbe46e9522
commit
90ce897456
|
@ -239,6 +239,7 @@ func TestManager_BasicLifecycle(t *testing.T) {
|
|||
IntentionsSet: true,
|
||||
},
|
||||
Datacenter: "dc1",
|
||||
Locality: GatewayKey{Datacenter: "dc1", Partition: structs.PartitionOrDefault("")},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -296,6 +297,7 @@ func TestManager_BasicLifecycle(t *testing.T) {
|
|||
IntentionsSet: true,
|
||||
},
|
||||
Datacenter: "dc1",
|
||||
Locality: GatewayKey{Datacenter: "dc1", Partition: structs.PartitionOrDefault("")},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
@ -144,7 +144,7 @@ func (s *handlerMeshGateway) handleUpdate(ctx context.Context, u cache.UpdateEve
|
|||
for dc, nodes := range dcIndexedNodes.DatacenterNodes {
|
||||
snap.MeshGateway.HostnameDatacenters[dc] = hostnameEndpoints(
|
||||
s.logger.Named(logging.MeshGateway),
|
||||
GatewayKey{Partition: snap.ProxyID.PartitionOrDefault(), Datacenter: snap.Datacenter},
|
||||
snap.Locality,
|
||||
nodes,
|
||||
)
|
||||
}
|
||||
|
@ -327,7 +327,7 @@ func (s *handlerMeshGateway) handleUpdate(ctx context.Context, u cache.UpdateEve
|
|||
snap.MeshGateway.GatewayGroups[key] = resp.Nodes
|
||||
snap.MeshGateway.HostnameDatacenters[key] = hostnameEndpoints(
|
||||
s.logger.Named(logging.MeshGateway),
|
||||
GatewayKey{Partition: snap.ProxyID.PartitionOrDefault(), Datacenter: snap.Datacenter},
|
||||
snap.Locality,
|
||||
resp.Nodes,
|
||||
)
|
||||
}
|
||||
|
|
|
@ -408,6 +408,7 @@ type ConfigSnapshot struct {
|
|||
Proxy structs.ConnectProxyConfig
|
||||
Datacenter string
|
||||
IntentionDefaultAllow bool
|
||||
Locality GatewayKey
|
||||
|
||||
ServerSNIFn ServerSNIFunc
|
||||
Roots *structs.IndexedCARoots
|
||||
|
|
|
@ -254,6 +254,7 @@ func newConfigSnapshotFromServiceInstance(s serviceInstance, config stateConfig)
|
|||
TaggedAddresses: s.taggedAddresses,
|
||||
Proxy: s.proxyCfg,
|
||||
Datacenter: config.source.Datacenter,
|
||||
Locality: GatewayKey{Datacenter: config.source.Datacenter, Partition: s.proxyID.PartitionOrDefault()},
|
||||
ServerSNIFn: config.serverSNIFn,
|
||||
IntentionDefaultAllow: config.intentionDefaultAllow,
|
||||
}
|
||||
|
|
|
@ -286,7 +286,7 @@ func (s *handlerTerminatingGateway) handleUpdate(ctx context.Context, u cache.Up
|
|||
snap.TerminatingGateway.ServiceGroups[sn] = resp.Nodes
|
||||
snap.TerminatingGateway.HostnameServices[sn] = hostnameEndpoints(
|
||||
s.logger,
|
||||
GatewayKey{Partition: snap.ProxyID.PartitionOrDefault(), Datacenter: snap.Datacenter},
|
||||
snap.Locality,
|
||||
resp.Nodes,
|
||||
)
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import (
|
|||
"github.com/mitchellh/go-testing-interface"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/hashicorp/consul/acl"
|
||||
"github.com/hashicorp/consul/agent/cache"
|
||||
cachetype "github.com/hashicorp/consul/agent/cache-types"
|
||||
"github.com/hashicorp/consul/agent/connect"
|
||||
|
@ -674,11 +675,12 @@ func TestConfigSnapshot(t testing.T) *ConfigSnapshot {
|
|||
upstreams := structs.TestUpstreams(t)
|
||||
|
||||
return &ConfigSnapshot{
|
||||
Kind: structs.ServiceKindConnectProxy,
|
||||
Service: "web-sidecar-proxy",
|
||||
ProxyID: structs.NewServiceID("web-sidecar-proxy", nil),
|
||||
Address: "0.0.0.0",
|
||||
Port: 9999,
|
||||
Locality: GatewayKey{Datacenter: "dc1", Partition: acl.DefaultPartitionName},
|
||||
Kind: structs.ServiceKindConnectProxy,
|
||||
Service: "web-sidecar-proxy",
|
||||
ProxyID: structs.NewServiceID("web-sidecar-proxy", nil),
|
||||
Address: "0.0.0.0",
|
||||
Port: 9999,
|
||||
Proxy: structs.ConnectProxyConfig{
|
||||
DestinationServiceID: "web",
|
||||
DestinationServiceName: "web",
|
||||
|
@ -798,11 +800,12 @@ func testConfigSnapshotDiscoveryChain(t testing.T, variation string, additionalE
|
|||
roots, leaf := TestCerts(t)
|
||||
|
||||
snap := &ConfigSnapshot{
|
||||
Kind: structs.ServiceKindConnectProxy,
|
||||
Service: "web-sidecar-proxy",
|
||||
ProxyID: structs.NewServiceID("web-sidecar-proxy", nil),
|
||||
Address: "0.0.0.0",
|
||||
Port: 9999,
|
||||
Locality: GatewayKey{Datacenter: "dc1", Partition: acl.DefaultPartitionName},
|
||||
Kind: structs.ServiceKindConnectProxy,
|
||||
Service: "web-sidecar-proxy",
|
||||
ProxyID: structs.NewServiceID("web-sidecar-proxy", nil),
|
||||
Address: "0.0.0.0",
|
||||
Port: 9999,
|
||||
Proxy: structs.ConnectProxyConfig{
|
||||
DestinationServiceID: "web",
|
||||
DestinationServiceName: "web",
|
||||
|
@ -1510,11 +1513,12 @@ func TestConfigSnapshotMeshGatewayNoServices(t testing.T) *ConfigSnapshot {
|
|||
func testConfigSnapshotMeshGateway(t testing.T, populateServices bool, useFederationStates bool) *ConfigSnapshot {
|
||||
roots, _ := TestCerts(t)
|
||||
snap := &ConfigSnapshot{
|
||||
Kind: structs.ServiceKindMeshGateway,
|
||||
Service: "mesh-gateway",
|
||||
ProxyID: structs.NewServiceID("mesh-gateway", nil),
|
||||
Address: "1.2.3.4",
|
||||
Port: 8443,
|
||||
Locality: GatewayKey{Datacenter: "dc1", Partition: acl.DefaultPartitionName},
|
||||
Kind: structs.ServiceKindMeshGateway,
|
||||
Service: "mesh-gateway",
|
||||
ProxyID: structs.NewServiceID("mesh-gateway", nil),
|
||||
Address: "1.2.3.4",
|
||||
Port: 8443,
|
||||
Proxy: structs.ConnectProxyConfig{
|
||||
Config: map[string]interface{}{},
|
||||
},
|
||||
|
@ -1721,6 +1725,7 @@ func testConfigSnapshotIngressGateway(
|
|||
roots, leaf := TestCerts(t)
|
||||
|
||||
snap := &ConfigSnapshot{
|
||||
Locality: GatewayKey{Datacenter: "dc1", Partition: acl.DefaultPartitionName},
|
||||
Kind: structs.ServiceKindIngressGateway,
|
||||
Service: "ingress-gateway",
|
||||
ProxyID: structs.NewServiceID("ingress-gateway", nil),
|
||||
|
@ -1760,11 +1765,12 @@ func testConfigSnapshotIngressGateway(
|
|||
|
||||
func TestConfigSnapshotExposeConfig(t testing.T) *ConfigSnapshot {
|
||||
return &ConfigSnapshot{
|
||||
Kind: structs.ServiceKindConnectProxy,
|
||||
Service: "web-proxy",
|
||||
ProxyID: structs.NewServiceID("web-proxy", nil),
|
||||
Address: "1.2.3.4",
|
||||
Port: 8080,
|
||||
Locality: GatewayKey{Datacenter: "dc1", Partition: acl.DefaultPartitionName},
|
||||
Kind: structs.ServiceKindConnectProxy,
|
||||
Service: "web-proxy",
|
||||
ProxyID: structs.NewServiceID("web-proxy", nil),
|
||||
Address: "1.2.3.4",
|
||||
Port: 8080,
|
||||
Proxy: structs.ConnectProxyConfig{
|
||||
DestinationServiceName: "web",
|
||||
DestinationServiceID: "web",
|
||||
|
@ -1801,10 +1807,11 @@ func testConfigSnapshotTerminatingGateway(t testing.T, populateServices bool) *C
|
|||
roots, _ := TestCerts(t)
|
||||
|
||||
snap := &ConfigSnapshot{
|
||||
Kind: structs.ServiceKindTerminatingGateway,
|
||||
Service: "terminating-gateway",
|
||||
ProxyID: structs.NewServiceID("terminating-gateway", nil),
|
||||
Address: "1.2.3.4",
|
||||
Locality: GatewayKey{Datacenter: "dc1", Partition: acl.DefaultPartitionName},
|
||||
Kind: structs.ServiceKindTerminatingGateway,
|
||||
Service: "terminating-gateway",
|
||||
ProxyID: structs.NewServiceID("terminating-gateway", nil),
|
||||
Address: "1.2.3.4",
|
||||
TaggedAddresses: map[string]structs.ServiceAddress{
|
||||
structs.TaggedAddressWAN: {
|
||||
Address: "198.18.0.1",
|
||||
|
@ -2035,11 +2042,12 @@ func testConfigSnapshotTerminatingGateway(t testing.T, populateServices bool) *C
|
|||
|
||||
func TestConfigSnapshotGRPCExposeHTTP1(t testing.T) *ConfigSnapshot {
|
||||
return &ConfigSnapshot{
|
||||
Kind: structs.ServiceKindConnectProxy,
|
||||
Service: "grpc-proxy",
|
||||
ProxyID: structs.NewServiceID("grpc-proxy", nil),
|
||||
Address: "1.2.3.4",
|
||||
Port: 8080,
|
||||
Locality: GatewayKey{Datacenter: "dc1", Partition: acl.DefaultPartitionName},
|
||||
Kind: structs.ServiceKindConnectProxy,
|
||||
Service: "grpc-proxy",
|
||||
ProxyID: structs.NewServiceID("grpc-proxy", nil),
|
||||
Address: "1.2.3.4",
|
||||
Port: 8080,
|
||||
Proxy: structs.ConnectProxyConfig{
|
||||
DestinationServiceName: "grpc",
|
||||
DestinationServiceID: "grpc",
|
||||
|
|
|
@ -299,10 +299,9 @@ func (s *ResourceGenerator) makeGatewayServiceClusters(
|
|||
hostnameEndpoints = cfgSnap.TerminatingGateway.HostnameServices[svc]
|
||||
}
|
||||
|
||||
localKey := proxycfg.GatewayKey{Partition: cfgSnap.ProxyID.PartitionOrDefault(), Datacenter: cfgSnap.Datacenter}
|
||||
var isRemote bool
|
||||
if len(services[svc]) > 0 {
|
||||
isRemote = !localKey.Matches(services[svc][0].Node.Datacenter, services[svc][0].Node.PartitionOrDefault())
|
||||
isRemote = !cfgSnap.Locality.Matches(services[svc][0].Node.Datacenter, services[svc][0].Node.PartitionOrDefault())
|
||||
}
|
||||
|
||||
opts := gatewayClusterOpts{
|
||||
|
|
|
@ -51,7 +51,7 @@ func (s *ResourceGenerator) endpointsFromSnapshotConnectProxy(cfgSnap *proxycfg.
|
|||
es := s.endpointsFromDiscoveryChain(
|
||||
id,
|
||||
chain,
|
||||
proxycfg.GatewayKey{Datacenter: cfgSnap.Datacenter, Partition: cfgSnap.ProxyID.PartitionOrDefault()},
|
||||
cfgSnap.Locality,
|
||||
cfgSnap.ConnectProxy.UpstreamConfig[id],
|
||||
cfgSnap.ConnectProxy.WatchedUpstreamEndpoints[id],
|
||||
cfgSnap.ConnectProxy.WatchedGatewayEndpoints[id],
|
||||
|
@ -79,7 +79,7 @@ func (s *ResourceGenerator) endpointsFromSnapshotConnectProxy(cfgSnap *proxycfg.
|
|||
[]loadAssignmentEndpointGroup{
|
||||
{Endpoints: endpoints},
|
||||
},
|
||||
proxycfg.GatewayKey{Datacenter: cfgSnap.Datacenter, Partition: cfgSnap.ProxyID.PartitionOrDefault()},
|
||||
cfgSnap.Locality,
|
||||
)
|
||||
resources = append(resources, la)
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ func (s *ResourceGenerator) endpointsFromSnapshotMeshGateway(cfgSnap *proxycfg.C
|
|||
[]loadAssignmentEndpointGroup{
|
||||
{Endpoints: endpoints},
|
||||
},
|
||||
proxycfg.GatewayKey{Datacenter: cfgSnap.Datacenter, Partition: cfgSnap.ProxyID.PartitionOrDefault()},
|
||||
cfgSnap.Locality,
|
||||
)
|
||||
resources = append(resources, la)
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ func (s *ResourceGenerator) endpointsFromSnapshotMeshGateway(cfgSnap *proxycfg.C
|
|||
[]loadAssignmentEndpointGroup{
|
||||
{Endpoints: endpoints},
|
||||
},
|
||||
proxycfg.GatewayKey{Datacenter: cfgSnap.Datacenter, Partition: cfgSnap.ProxyID.PartitionOrDefault()},
|
||||
cfgSnap.Locality,
|
||||
)
|
||||
resources = append(resources, la)
|
||||
}
|
||||
|
@ -256,7 +256,7 @@ func (s *ResourceGenerator) endpointsFromServicesAndResolvers(
|
|||
la := makeLoadAssignment(
|
||||
clusterName,
|
||||
groups,
|
||||
proxycfg.GatewayKey{Datacenter: cfgSnap.Datacenter, Partition: cfgSnap.ProxyID.PartitionOrDefault()},
|
||||
cfgSnap.Locality,
|
||||
)
|
||||
resources = append(resources, la)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue