open-consul/agent/consul
R.B. Boyer 0b79707beb
grpc: ensure grpc resolver correctly uses lan/wan addresses on servers (#17270)
The grpc resolver implementation is fed from changes to the
router.Router. Within the router there is a map of various areas storing
the addressing information for servers in those areas. All map entries
are of the WAN variety except a single special entry for the LAN.

Addressing information in the LAN "area" are local addresses intended
for use when making a client-to-server or server-to-server request.

The client agent correctly updates this LAN area when receiving lan serf
events, so by extension the grpc resolver works fine in that scenario.

The server agent only initially populates a single entry in the LAN area
(for itself) on startup, and then never mutates that area map again.
For normal RPCs a different structure is used for LAN routing.

Additionally when selecting a server to contact in the local datacenter
it will randomly select addresses from either the LAN or WAN addressed
entries in the map.

Unfortunately this means that the grpc resolver stack as it exists on
server agents is either broken or only accidentally functions by having
servers dial each other over the WAN-accessible address. If the operator
disables the serf wan port completely likely this incidental functioning
would break.

This PR enforces that local requests for servers (both for stale reads
or leader forwarded requests) exclusively use the LAN "area" information
and also fixes it so that servers keep that area up to date in the
router.

A test for the grpc resolver logic was added, as well as a higher level
full-stack test to ensure the externally perceived bug does not return.
2023-05-11 11:08:57 -05:00
..
auth copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
authmethod copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
autopilotevents copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
controller controller: deduplicate items in queue (#17168) 2023-05-09 18:14:20 +01:00
discoverychain Add sameness group field to prepared queries (#17089) 2023-04-24 13:21:28 -07:00
fsm APIGW Normalize Status Conditions (#16994) 2023-04-24 16:22:55 -04:00
gateways controller: make the `WorkQueue` generic (#16982) 2023-05-05 15:38:22 +01:00
multilimiter copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
prepared_query Add sameness group field to prepared queries (#17089) 2023-04-24 13:21:28 -07:00
rate [COMPLIANCE] Add Copyright and License Headers (#16854) 2023-04-20 12:40:22 +00:00
reporting feat: add no-op reporting background routine (#17178) 2023-04-28 20:07:03 -04:00
servercert copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
state Add sameness group field to prepared queries (#17089) 2023-04-24 13:21:28 -07:00
stream copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
testdata ca: examine the full chain in newCARoot 2022-02-17 18:21:30 -05:00
usagemetrics [NET-3090] Add new JWT provider config entry (#17036) 2023-04-19 17:54:14 -04:00
wanfed copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
watch copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
xdscapacity copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_authmethod.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_authmethod_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_client.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_endpoint_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_endpoint_test.go Remove artificial ACLTokenMaxTTL limit for configuring acl token expiry (#17066) 2023-04-28 10:57:30 -05:00
acl_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_oss_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_replication.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_replication_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_replication_types.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_server.go Update HCP bootstrapping to support existing clusters (#16916) 2023-04-27 22:27:39 +02:00
acl_server_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_token_exp.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
acl_token_exp_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
auto_config_backend.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
auto_config_backend_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
auto_config_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
auto_config_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
auto_encrypt_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
auto_encrypt_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
autopilot.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
autopilot_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
autopilot_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
catalog_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
catalog_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
client.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
client_serf.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
client_test.go grpc: ensure grpc resolver correctly uses lan/wan addresses on servers (#17270) 2023-05-11 11:08:57 -05:00
cluster_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
config.go Remove artificial ACLTokenMaxTTL limit for configuring acl token expiry (#17066) 2023-04-28 10:57:30 -05:00
config_cloud.go Update HCP bootstrapping to support existing clusters (#16916) 2023-04-27 22:27:39 +02:00
config_endpoint.go Permissive mTLS: Config entry filtering and CLI warnings (#17183) 2023-04-28 12:51:36 -05:00
config_endpoint_test.go Permissive mTLS: Config entry filtering and CLI warnings (#17183) 2023-04-28 12:51:36 -05:00
config_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
config_replication.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
config_replication_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
config_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
connect_ca_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
connect_ca_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
context.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
context_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
coordinate_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
coordinate_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
discovery_chain_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
discovery_chain_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
enterprise_client_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
enterprise_config_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
enterprise_server_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
enterprise_server_oss_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
federation_state_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
federation_state_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
federation_state_replication.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
federation_state_replication_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
filter.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
filter_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
flood.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
gateway_locator.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
gateway_locator_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
grpc_integration_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
health_endpoint.go Fix ent bug caused by #17241. (#17278) 2023-05-09 16:36:29 -05:00
health_endpoint_test.go Fix multiple issues related to proxycfg health queries. (#17241) 2023-05-09 12:37:58 -05:00
helper_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
intention_endpoint.go Add sameness groups to service intentions. (#17064) 2023-04-20 12:16:04 -04:00
intention_endpoint_test.go Add sameness groups to service intentions. (#17064) 2023-04-20 12:16:04 -04:00
internal_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
internal_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
issue_test.go Raft storage backend (#16619) 2023-04-04 17:30:06 +01:00
kvs_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
kvs_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
leader.go Update HCP bootstrapping to support existing clusters (#16916) 2023-04-27 22:27:39 +02:00
leader_connect.go feat: set up reporting agent (#16991) 2023-04-18 11:03:05 -04:00
leader_connect_ca.go Connect CA Primary Provider refactor (#16749) 2023-04-03 11:40:33 -04:00
leader_connect_ca_test.go Connect CA Primary Provider refactor (#16749) 2023-04-03 11:40:33 -04:00
leader_connect_test.go Connect CA Primary Provider refactor (#16749) 2023-04-03 11:40:33 -04:00
leader_federation_state_ae.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
leader_federation_state_ae_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
leader_intentions.go feat: set up reporting agent (#16991) 2023-04-18 11:03:05 -04:00
leader_intentions_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
leader_intentions_oss_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
leader_intentions_test.go feat: set up reporting agent (#16991) 2023-04-18 11:03:05 -04:00
leader_log_verification.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
leader_metrics.go log warning about certificate expiring sooner and with more details 2023-04-07 20:38:07 +00:00
leader_metrics_test.go [COMPLIANCE] Add Copyright and License Headers (#16854) 2023-04-20 12:40:22 +00:00
leader_oss_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
leader_peering.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
leader_peering_test.go Allow dialer to re-establish terminated peering (#16776) 2023-04-03 12:07:45 -06:00
leader_test.go Update HCP bootstrapping to support existing clusters (#16916) 2023-04-27 22:27:39 +02:00
logging.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
logging_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
merge.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
merge_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
merge_oss_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
merge_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
operator_autopilot_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
operator_autopilot_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
operator_backend.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
operator_backend_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
operator_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
operator_raft_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
operator_raft_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
operator_usage_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
options.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
options_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
peering_backend.go Allow dialer to re-establish terminated peering (#16776) 2023-04-03 12:07:45 -06:00
peering_backend_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
peering_backend_oss_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
peering_backend_test.go Allow dialer to re-establish terminated peering (#16776) 2023-04-03 12:07:45 -06:00
prepared_query_endpoint.go Add sameness group field to prepared queries (#17089) 2023-04-24 13:21:28 -07:00
prepared_query_endpoint_oss.go Add sameness group field to prepared queries (#17089) 2023-04-24 13:21:28 -07:00
prepared_query_endpoint_oss_test.go Add sameness group field to prepared queries (#17089) 2023-04-24 13:21:28 -07:00
prepared_query_endpoint_test.go Add sameness group field to prepared queries (#17089) 2023-04-24 13:21:28 -07:00
raft_handle.go [COMPLIANCE] Add Copyright and License Headers (#16854) 2023-04-20 12:40:22 +00:00
raft_rpc.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
replication.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
replication_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
rpc.go Raft storage backend (#16619) 2023-04-04 17:30:06 +01:00
rpc_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
rtt.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
rtt_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
segment_oss.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
serf_filter.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
serf_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
server.go snapshot: some improvments to the snapshot process (#17236) 2023-05-09 15:28:52 -04:00
server_connect.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
server_log_verification.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
server_lookup.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
server_lookup_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
server_oss.go feat: set up reporting agent (#16991) 2023-04-18 11:03:05 -04:00
server_oss_test.go [COMPLIANCE] Add Copyright and License Headers (#16854) 2023-04-20 12:40:22 +00:00
server_overview.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
server_overview_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
server_register.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
server_serf.go grpc: ensure grpc resolver correctly uses lan/wan addresses on servers (#17270) 2023-05-11 11:08:57 -05:00
server_test.go add IP rate limiting config update (#16997) 2023-04-14 09:26:38 -04:00
session_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
session_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
session_timers.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
session_timers_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
session_ttl.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
session_ttl_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
snapshot_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
snapshot_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
stats_fetcher.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
stats_fetcher_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
status_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
status_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
subscribe_backend.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
subscribe_backend_test.go grpc: ensure grpc resolver correctly uses lan/wan addresses on servers (#17270) 2023-05-11 11:08:57 -05:00
system_metadata.go feat: set up reporting agent (#16991) 2023-04-18 11:03:05 -04:00
system_metadata_test.go feat: set up reporting agent (#16991) 2023-04-18 11:03:05 -04:00
txn_endpoint.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
txn_endpoint_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
util.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00
util_test.go copyright headers for agent folder (#16704) 2023-03-28 14:39:22 -04:00