From 8bb16567cd92c76080f0cc48a6e5405bfd068fad Mon Sep 17 00:00:00 2001 From: Eric Haberkorn Date: Fri, 12 May 2023 16:49:42 -0400 Subject: [PATCH 01/12] sidecar-proxy refactor (#17328) --- agent/consul/state/config_entry_exported_services.go | 1 + .../grpc-external/services/peerstream/subscription_manager.go | 2 +- agent/sidecar_service.go | 4 ++-- agent/structs/structs.go | 2 ++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/agent/consul/state/config_entry_exported_services.go b/agent/consul/state/config_entry_exported_services.go index 77b8ce78cf896..b758adc09eafb 100644 --- a/agent/consul/state/config_entry_exported_services.go +++ b/agent/consul/state/config_entry_exported_services.go @@ -33,6 +33,7 @@ func (e *SimplifiedExportedServices) ToPartitionMap() map[string]map[string][]st } } resp[svc.Namespace][svc.Name] = consumers + resp[svc.Namespace][svc.Name+structs.SidecarProxySuffix] = consumers } } return resp diff --git a/agent/grpc-external/services/peerstream/subscription_manager.go b/agent/grpc-external/services/peerstream/subscription_manager.go index 42a4d13925fd3..4fcd27635b81d 100644 --- a/agent/grpc-external/services/peerstream/subscription_manager.go +++ b/agent/grpc-external/services/peerstream/subscription_manager.go @@ -747,7 +747,7 @@ func (m *subscriptionManager) NotifyStandardService( // // This name was chosen to match existing "sidecar service" generation logic // and similar logic in the Service Identity synthetic ACL policies. -const syntheticProxyNameSuffix = "-sidecar-proxy" +const syntheticProxyNameSuffix = structs.SidecarProxySuffix func generateProxyNameForDiscoveryChain(sn structs.ServiceName) structs.ServiceName { return structs.NewServiceName(sn.Name+syntheticProxyNameSuffix, &sn.EnterpriseMeta) diff --git a/agent/sidecar_service.go b/agent/sidecar_service.go index e0b1fe1d2b017..1769e549e3614 100644 --- a/agent/sidecar_service.go +++ b/agent/sidecar_service.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/consul/agent/structs" ) -const sidecarIDSuffix = "-sidecar-proxy" +const sidecarIDSuffix = structs.SidecarProxySuffix func sidecarIDFromServiceID(serviceID string) string { return serviceID + sidecarIDSuffix @@ -96,7 +96,7 @@ func sidecarServiceFromNodeService(ns *structs.NodeService, token string) (*stru sidecar.Kind = structs.ServiceKindConnectProxy } if sidecar.Service == "" { - sidecar.Service = ns.Service + "-sidecar-proxy" + sidecar.Service = ns.Service + structs.SidecarProxySuffix } if sidecar.Address == "" { // Inherit address from the service if it's provided diff --git a/agent/structs/structs.go b/agent/structs/structs.go index 1771b18be03bb..f36a5b77c4a98 100644 --- a/agent/structs/structs.go +++ b/agent/structs/structs.go @@ -1270,6 +1270,8 @@ func (a ServiceAddress) ToAPIServiceAddress() api.ServiceAddress { return api.ServiceAddress{Address: a.Address, Port: a.Port} } +const SidecarProxySuffix = "-sidecar-proxy" + // NodeService is a service provided by a node type NodeService struct { // Kind is the kind of service this is. Different kinds of services may From 8dce0ba504222073ee98a9eeed558f26e116bf85 Mon Sep 17 00:00:00 2001 From: Jeff Boruszak <104028618+boruszak@users.noreply.github.com> Date: Fri, 12 May 2023 15:07:29 -0700 Subject: [PATCH 02/12] docs: connect-service-upstreams annotation fixes (#17312) * corrections * fixes * Update website/content/docs/k8s/annotations-and-labels.mdx Co-authored-by: Jared Kirschner <85913323+jkirschner-hashicorp@users.noreply.github.com> * Update website/content/docs/k8s/annotations-and-labels.mdx Co-authored-by: Jared Kirschner <85913323+jkirschner-hashicorp@users.noreply.github.com> * Update website/content/docs/k8s/annotations-and-labels.mdx Co-authored-by: Jared Kirschner <85913323+jkirschner-hashicorp@users.noreply.github.com> * Update website/content/docs/k8s/annotations-and-labels.mdx Co-authored-by: Jared Kirschner <85913323+jkirschner-hashicorp@users.noreply.github.com> * Update website/content/docs/k8s/annotations-and-labels.mdx Co-authored-by: Jared Kirschner <85913323+jkirschner-hashicorp@users.noreply.github.com> * Update website/content/docs/k8s/annotations-and-labels.mdx Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com> * Update website/content/docs/k8s/annotations-and-labels.mdx Co-authored-by: Jared Kirschner <85913323+jkirschner-hashicorp@users.noreply.github.com> * Update website/content/docs/k8s/annotations-and-labels.mdx Co-authored-by: Jared Kirschner <85913323+jkirschner-hashicorp@users.noreply.github.com> * Switching order of labeled/unlabeled --------- Co-authored-by: Jared Kirschner <85913323+jkirschner-hashicorp@users.noreply.github.com> Co-authored-by: trujillo-adam <47586768+trujillo-adam@users.noreply.github.com> --- .../docs/k8s/annotations-and-labels.mdx | 98 +++++++++++-------- 1 file changed, 55 insertions(+), 43 deletions(-) diff --git a/website/content/docs/k8s/annotations-and-labels.mdx b/website/content/docs/k8s/annotations-and-labels.mdx index eea3e620c1e8d..547a82a6ccb37 100644 --- a/website/content/docs/k8s/annotations-and-labels.mdx +++ b/website/content/docs/k8s/annotations-and-labels.mdx @@ -74,83 +74,95 @@ The following Kubernetes resource annotations could be used on a pod to control - `consul.hashicorp.com/connect-service-upstreams` - The list of upstream services that this pod needs to connect to via the service mesh along with a static local port to listen for those connections. When transparent proxy is enabled, - this annotation is optional. There are a few formats this annotation can take: - - - Unlabeled: - Use the unlabeled annotation format to specify a service name, Consul Enterprise namespaces and partitions, and - datacenters. To use [cluster peering](/consul/docs/k8s/connect/cluster-peering/tech-specs) with upstreams, use the following - labeled format. - - Service name: Place the service name at the beginning of the annotation to specify the upstream service. You can - also append the datacenter where the service is deployed (optional). - ```yaml - annotations: - "consul.hashicorp.com/connect-service-upstreams":"[service-name]:[port]:[optional datacenter]" - ``` - - - Namespace (requires Consul Enterprise 1.7+): Upstream services may be running in a different namespace. Place - the upstream namespace after the service name. For additional details about configuring the injector, refer to + this annotation is optional. This annotation can be either _labeled_ or _unlabeled_. We recommend the labeled format because it has a more consistent syntax and can be used to reference cluster peers as upstreams. - [Consul Enterprise Namespaces](#consul-enterprise-namespaces) . - ```yaml - annotations: - "consul.hashicorp.com/connect-service-upstreams":"[service-name].[service-namespace]:[port]:[optional datacenter]" - ``` - If the namespace is not specified, the annotation defaults to the namespace of the source service. - If you are not using Consul Enterprise 1.7+, Consul interprets the value placed in the namespace position as part of the service name. + - **Labeled** (requires Consul on Kubernetes v0.45.0+): - - Admin partitions (requires Consul Enterprise 1.11+): Upstream services may be running in a different - partition. You must specify the namespace when specifying a partition. Place the partition name after the namespace. If you specify the name of the datacenter (optional), it must be the local datacenter. Communicating across partitions using this method is only supported within a - datacenter. For cross partition communication across datacenters, refer to [cluster - peering](/consul/docs/k8s/connect/cluster-peering/tech-specs). - ```yaml - annotations: - "consul.hashicorp.com/connect-service-upstreams":"[service-name].[service-namespace].[service-partition]:[port]:[optional datacenter]" - ``` - - [Prepared queries](/consul/api-docs/query): Prepend the annotation - with `prepared_query` and place the name of the query at the beginning of the string. - ```yaml - annotations: - 'consul.hashicorp.com/connect-service-upstreams': 'prepared_query:[query name]:[port]' - ``` + The labeled annotation format allows you to reference any service as an upstream. You can specify a Consul Enterprise namespace. You can also specify an admin partition in the same datacenter, a cluster peer, or a WAN-federated datacenter. - - Labeled (requires Consul for Kubernetes v0.45.0+): - The labeled format is required when using the cluster peering feature and specifying an upstream in another - peer. You can specify a Consul Enterprise namespace, partition, or datacenter. The format supports only one peer, datacenter, or partition. - Service name: Place the service name at the beginning of the annotation followed by `.svc` to specify the upstream service. + ```yaml annotations: "consul.hashicorp.com/connect-service-upstreams":"[service-name].svc:[port]" ``` + - Peer or datacenter: Place the peer or datacenter after `svc.` followed by either `peer` or `dc` and the port number. + ```yaml annotations: "consul.hashicorp.com/connect-service-upstreams":"[service-name].svc.[service-peer].peer:[port]" ``` + ```yaml annotations: "consul.hashicorp.com/connect-service-upstreams":"[service-name].svc.[service-dc].dc:[port]" ``` - - Namespace (required Consul Enterprise): Place the namespace after `svc.` followed by `ns` and the port number. + + - Namespace (requires Consul Enterprise): Place the namespace after `svc.` followed by `ns` and the port number. + ```yaml annotations: "consul.hashicorp.com/connect-service-upstreams":"[service-name].svc.[service-namespace].ns:[port]" ``` - When specifying a peer, datacenter, or admin partition when namespaces are enabled, you must - provide the namespace . + + When namespaces are enabled, you must include the namespace in the annotation before specifying a cluster peer, WAN-federated datacenter, or admin partition in the same datacenter. + ```yaml annotations: "consul.hashicorp.com/connect-service-upstreams":"[service-name].svc.[service-namespace].ns.[service-peer].peer:[port]" ``` + ```yaml annotations: "consul.hashicorp.com/connect-service-upstreams":"[service-name].svc.[service-namespace].ns.[service-partition].ap:[port]" ``` + ```yaml annotations: "consul.hashicorp.com/connect-service-upstreams":"[service-name].svc.[service-namespace].ns.[service-dc].dc:[port]" ``` - - Multiple upstreams: Delimit multiple services or upstreams with commas. You can specify any of the unlabeled, labeled, or prepared query formats when using the supported versions for the formats. + - **Unlabeled**: + The unlabeled annotation format allows you to reference any service not in a cluster peer as an upstream. You can specify a Consul Enterprise namespace. You can also specify an admin partition in the same datacenter or a WAN-federated datacenter. Unlike the labeled annotation, you can also reference a prepared query as an upstream. + + - Service name: Place the service name at the beginning of the annotation to specify the upstream service. You also have the option to append the WAN federated datacenter where the service is deployed. + + ```yaml + annotations: + "consul.hashicorp.com/connect-service-upstreams":"[service-name]:[port]:[optional datacenter]" + ``` + + - Namespace (requires Consul Enterprise 1.7+): Upstream services may be running in a different namespace. Place + the upstream namespace after the service name. For additional details about configuring the injector, refer to [Consul Enterprise namespaces](#consul-enterprise-namespaces) . + + ```yaml + annotations: + "consul.hashicorp.com/connect-service-upstreams":"[service-name].[service-namespace]:[port]:[optional datacenter]" + ``` + + If the namespace is not specified, the annotation defaults to the namespace of the source service. + Consul Enterprise v1.7 and older interprets the value placed in the namespace position as part of the service name. + + - Admin partitions (requires Consul Enterprise 1.11+): Upstream services may be running in a different + partition. When specifying a partition, you must also specify a namespace. Place the partition name after the namespace. If you specify the name of the datacenter, it must be the local datacenter. Communicating across partitions using this method is only supported within a + datacenter. For cross partition communication across datacenters, [establish a cluster + peering connection](/consul/docs/k8s/connect/cluster-peering/usage/establish-peering) and set the upstream with a labeled annotation format. + + ```yaml + annotations: + "consul.hashicorp.com/connect-service-upstreams":"[service-name].[service-namespace].[service-partition]:[port]:[optional datacenter]" + ``` + + - Prepared queries: To reference a [prepared query](/consul/api-docs/query) in an upstream annotation, prepend the annotation + with `prepared_query` and then invoke the name of the query. + + ```yaml + annotations: + 'consul.hashicorp.com/connect-service-upstreams': 'prepared_query:[query name]:[port]' + ``` + + - **Multiple upstreams**: Delimit multiple services or upstreams with commas. You can specify any of the unlabeled, labeled, or prepared query formats when using the supported versions for the formats. ```yaml annotations: From b6097a99b865d271e4ad03ff4324c43fa17633d6 Mon Sep 17 00:00:00 2001 From: Hans Hasselberg Date: Sat, 13 May 2023 05:01:56 +0200 Subject: [PATCH 03/12] Add new fields to HCP bootstrap config request and push state request To support linking cluster, HCP needs to know the datacenter and if ACLs are enabled. Otherwise hosted Consul Core UI won't work properly. --- agent/consul/server.go | 3 +++ agent/hcp/client.go | 14 +++++++++++++- go.mod | 2 +- go.sum | 4 ++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/agent/consul/server.go b/agent/consul/server.go index 52236e8b5d004..d3c3044121b79 100644 --- a/agent/consul/server.go +++ b/agent/consul/server.go @@ -1995,6 +1995,7 @@ func (s *Server) hcpServerStatus(deps Deps) hcp.StatusCallback { status.LanAddress = s.config.RPCAdvertise.IP.String() status.GossipPort = s.config.SerfLANConfig.MemberlistConfig.AdvertisePort status.RPCPort = s.config.RPCAddr.Port + status.Datacenter = s.config.Datacenter tlsCert := s.tlsConfigurator.Cert() if tlsCert != nil { @@ -2036,6 +2037,8 @@ func (s *Server) hcpServerStatus(deps Deps) hcp.StatusCallback { status.ScadaStatus = deps.HCP.Provider.SessionStatus() } + status.ACL.Enabled = s.config.ACLsEnabled + return status, nil } } diff --git a/agent/hcp/client.go b/agent/hcp/client.go index c28e1b9c7f08b..bd6679a3312b4 100644 --- a/agent/hcp/client.go +++ b/agent/hcp/client.go @@ -80,10 +80,12 @@ func httpClient(c config.CloudConfig) (*httptransport.Runtime, error) { } func (c *hcpClient) FetchBootstrap(ctx context.Context) (*BootstrapConfig, error) { + version := version.GetHumanVersion() params := hcpgnm.NewAgentBootstrapConfigParamsWithContext(ctx). WithID(c.resource.ID). WithLocationOrganizationID(c.resource.Organization). - WithLocationProjectID(c.resource.Project) + WithLocationProjectID(c.resource.Project). + WithConsulVersion(&version) resp, err := c.gnm.AgentBootstrapConfig(params, nil) if err != nil { @@ -132,10 +134,12 @@ type ServerStatus struct { LanAddress string GossipPort int RPCPort int + Datacenter string Autopilot ServerAutopilot Raft ServerRaft TLS ServerTLSInfo + ACL ServerACLInfo ScadaStatus string } @@ -155,6 +159,10 @@ type ServerRaft struct { TimeSinceLastContact time.Duration } +type ServerACLInfo struct { + Enabled bool +} + type ServerTLSInfo struct { Enabled bool CertExpiry time.Time @@ -199,6 +207,10 @@ func serverStatusToHCP(s *ServerStatus) *gnmmod.HashicorpCloudGlobalNetworkManag }, Version: s.Version, ScadaStatus: s.ScadaStatus, + ACL: &gnmmod.HashicorpCloudGlobalNetworkManager20220215ACLInfo{ + Enabled: s.ACL.Enabled, + }, + Datacenter: s.Datacenter, } } diff --git a/go.mod b/go.mod index 333b699300f2d..2b672b7de12a9 100644 --- a/go.mod +++ b/go.mod @@ -61,7 +61,7 @@ require ( github.com/hashicorp/golang-lru v0.5.4 github.com/hashicorp/hcl v1.0.0 github.com/hashicorp/hcp-scada-provider v0.2.3 - github.com/hashicorp/hcp-sdk-go v0.40.1-0.20230404193545-846aea419cd1 + github.com/hashicorp/hcp-sdk-go v0.44.1-0.20230508124639-28da4c5b03f3 github.com/hashicorp/hil v0.0.0-20200423225030-a18a1cd20038 github.com/hashicorp/memberlist v0.5.0 github.com/hashicorp/raft v1.5.0 diff --git a/go.sum b/go.sum index 2bb892bc9ca35..127c1350bfbed 100644 --- a/go.sum +++ b/go.sum @@ -604,8 +604,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcp-scada-provider v0.2.3 h1:AarYR+/Pcv+cMvPdAlb92uOBmZfEH6ny4+DT+4NY2VQ= github.com/hashicorp/hcp-scada-provider v0.2.3/go.mod h1:ZFTgGwkzNv99PLQjTsulzaCplCzOTBh0IUQsPKzrQFo= -github.com/hashicorp/hcp-sdk-go v0.40.1-0.20230404193545-846aea419cd1 h1:C1des4/oIeUqQJVUWypnZth19Kg+k01q+V59OVNMB+Q= -github.com/hashicorp/hcp-sdk-go v0.40.1-0.20230404193545-846aea419cd1/go.mod h1:hZqky4HEzsKwvLOt4QJlZUrjeQmb4UCZUhDP2HyQFfc= +github.com/hashicorp/hcp-sdk-go v0.44.1-0.20230508124639-28da4c5b03f3 h1:9QstZdsLIS6iPyYxQoyymRz8nBw9jMdEbGy29gtgzVQ= +github.com/hashicorp/hcp-sdk-go v0.44.1-0.20230508124639-28da4c5b03f3/go.mod h1:hZqky4HEzsKwvLOt4QJlZUrjeQmb4UCZUhDP2HyQFfc= github.com/hashicorp/hil v0.0.0-20200423225030-a18a1cd20038 h1:n9J0rwVWXDpNd5iZnwY7w4WZyq53/rROeI7OVvLW8Ok= github.com/hashicorp/hil v0.0.0-20200423225030-a18a1cd20038/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= From d90e7d8126fb5d832995fe1091837975be72ceb5 Mon Sep 17 00:00:00 2001 From: Krastin Krastev Date: Mon, 15 May 2023 10:59:30 +0300 Subject: [PATCH 04/12] docs: update names in references to renamed tutorials (#17261) * docs: update names for tutorial references * docs: update more names for tutorial references --- website/content/api-docs/operator/index.mdx | 2 +- website/content/commands/operator/index.mdx | 2 +- .../content/docs/architecture/improving-consul-resilience.mdx | 2 +- website/content/docs/connect/cluster-peering/index.mdx | 2 +- website/content/docs/nia/index.mdx | 2 +- website/content/docs/upgrading/instructions/general-process.mdx | 2 +- website/content/docs/upgrading/upgrade-specific.mdx | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/website/content/api-docs/operator/index.mdx b/website/content/api-docs/operator/index.mdx index 3be515ac9ce7b..283a5023623c9 100644 --- a/website/content/api-docs/operator/index.mdx +++ b/website/content/api-docs/operator/index.mdx @@ -17,7 +17,7 @@ If ACLs are enabled then a token with operator privileges may be required in order to use this interface. Check the [ACL Rules documentation](/consul/docs/security/acl/acl-rules#operator-rules) for more information. -Check the [Outage Recovery](/consul/tutorials/datacenter-operations/recovery-outage) tutorial for some examples of +Check the [Disaster recovery for Consul clusters](/consul/tutorials/datacenter-operations/recovery-outage) tutorial for some examples of how these capabilities are used. Please choose a sub-section in the navigation for more information. diff --git a/website/content/commands/operator/index.mdx b/website/content/commands/operator/index.mdx index 060c422558806..7c9f3760ed6ff 100644 --- a/website/content/commands/operator/index.mdx +++ b/website/content/commands/operator/index.mdx @@ -20,7 +20,7 @@ order to use this command. Requests are forwarded internally to the leader if required, so this can be run from any Consul node in a cluster. See the [ACL Guide](/consul/tutorials/security/access-control-setup-production) for more information. -See the [Outage Recovery](/consul/tutorials/datacenter-operations/recovery-outage) guide for some examples of how +See the [Disaster recovery for Consul clusters](/consul/tutorials/datacenter-operations/recovery-outage) guide for some examples of how this command is used. For an API to perform these operations programmatically, please see the documentation for the [Operator](/consul/api-docs/operator) endpoint. diff --git a/website/content/docs/architecture/improving-consul-resilience.mdx b/website/content/docs/architecture/improving-consul-resilience.mdx index 31050f52ae5ce..bfcc9a8be4785 100644 --- a/website/content/docs/architecture/improving-consul-resilience.mdx +++ b/website/content/docs/architecture/improving-consul-resilience.mdx @@ -31,7 +31,7 @@ Without a quorum, Consul experiences an outage: it cannot provide most of its capabilities because they rely on the availability of this state information. If Consul has an outage, normal operation can be restored by following the -[outage recovery guide](/consul/tutorials/datacenter-operations/recovery-outage). +[Disaster recovery for Consul clusters guide](/consul/tutorials/datacenter-operations/recovery-outage). If Consul is deployed with 3 servers, the quorum size is 2. The deployment can lose 1 server and still maintain quorum, so it has a fault tolerance of 1. diff --git a/website/content/docs/connect/cluster-peering/index.mdx b/website/content/docs/connect/cluster-peering/index.mdx index f69f093330ef1..9c42bf5dc2745 100644 --- a/website/content/docs/connect/cluster-peering/index.mdx +++ b/website/content/docs/connect/cluster-peering/index.mdx @@ -53,7 +53,7 @@ The following resources are available to help you use Consul's cluster peering f ### Tutorials -- To learn how to peer clusters and connect services across peers in AWS Elastic Kubernetes Service (EKS) and Google Kubernetes Engine (GKE) environments, complete the [Consul Cluster Peering on Kubernetes tutorial](/consul/tutorials/developer-mesh/cluster-peering). +- To learn how to peer clusters and connect services across peers in AWS Elastic Kubernetes Service (EKS) and Google Kubernetes Engine (GKE) environments, complete the [Connect services between Consul datacenters with cluster peering tutorial](/consul/tutorials/developer-mesh/cluster-peering). ### Usage documentation diff --git a/website/content/docs/nia/index.mdx b/website/content/docs/nia/index.mdx index d24aaf2a5219e..f5368f036fa07 100644 --- a/website/content/docs/nia/index.mdx +++ b/website/content/docs/nia/index.mdx @@ -11,7 +11,7 @@ Network Infrastructure Automation (NIA) enables dynamic updates to network infra CTS executes one or more automation tasks with the most recent service variable values from the Consul service catalog. Each task consists of a runbook automation written as a CTS compatible Terraform module using resources and data sources for the underlying network infrastructure. The `consul-terraform-sync` daemon runs on the same node as a Consul agent. -CTS is available as an open source and enterprise distribution. Follow the [Network Infrastructure Automation introduction tutorial](/consul/tutorials/network-infrastructure-automation/consul-terraform-sync-intro?utm_source=docs) to get started with CTS OSS or read more about [CTS Enterprise](/consul/docs/nia/enterprise). +CTS is available as an open source and enterprise distribution. Follow the [Automate your network configuration with Consul-Terraform-Sync tutorial](/consul/tutorials/network-infrastructure-automation/consul-terraform-sync-intro?utm_source=docs) to get started with CTS OSS or read more about [CTS Enterprise](/consul/docs/nia/enterprise). ## Use Cases diff --git a/website/content/docs/upgrading/instructions/general-process.mdx b/website/content/docs/upgrading/instructions/general-process.mdx index 373256cc5478f..84da7327dc03f 100644 --- a/website/content/docs/upgrading/instructions/general-process.mdx +++ b/website/content/docs/upgrading/instructions/general-process.mdx @@ -173,7 +173,7 @@ all of your servers attempting to kick off leadership elections endlessly withou reaching a quorum and electing a leader. Most of these problems can be solved by following the steps outlined in our -[Outage Recovery](/consul/tutorials/datacenter-operations/recovery-outage) document. +[Disaster recovery for Consul clusters](/consul/tutorials/datacenter-operations/recovery-outage) document. If you are still having trouble after trying the recovery steps outlined there, then the following options for further assistance are available: diff --git a/website/content/docs/upgrading/upgrade-specific.mdx b/website/content/docs/upgrading/upgrade-specific.mdx index 38230034dd2b0..6a18a604be292 100644 --- a/website/content/docs/upgrading/upgrade-specific.mdx +++ b/website/content/docs/upgrading/upgrade-specific.mdx @@ -1408,7 +1408,7 @@ the file. Consul 0.7 also uses a new, automatically-created raft/peers.info file to avoid ingesting the `peers.json` file on the first start after upgrading (the `peers.json` file is simply deleted on the first start after upgrading). -Please be sure to review the [Outage Recovery tutorial](/consul/tutorials/datacenter-operations/recovery-outage) +Please be sure to review the [Disaster recovery for Consul clusters tutorial](/consul/tutorials/datacenter-operations/recovery-outage) before upgrading for more details. ## Consul 0.6.4 From f334fccb4f7d739a3f7918185da06d9131d5cc8c Mon Sep 17 00:00:00 2001 From: Jeremy Jacobson Date: Mon, 15 May 2023 03:52:57 -0700 Subject: [PATCH 05/12] [release/1.15.3] Add cloud stanza documentation (#17311) * [CC-4856] Add cloud stanza documentation * Add environment variables to cloud descriptions --- website/content/docs/agent/config/config-files.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/website/content/docs/agent/config/config-files.mdx b/website/content/docs/agent/config/config-files.mdx index e13cd6b4e3697..b19991fe04dbf 100644 --- a/website/content/docs/agent/config/config-files.mdx +++ b/website/content/docs/agent/config/config-files.mdx @@ -1088,6 +1088,16 @@ Refer to the [formatting specification](https://golang.org/pkg/time/#ParseDurati - `bootstrap_expect` Equivalent to the [`-bootstrap-expect` command-line flag](/consul/docs/agent/config/cli-flags#_bootstrap_expect). +## Self-managed HCP Parameters + +- `cloud` This object specifies settings for connecting self-managed clusters to HCP. This was added in Consul 1.14 + + - `client_id` The OAuth2 client ID for authentication with HCP. This can be overridden using the `HCP_CLIENT_ID` environment variable. + + - `client_secret` The OAuth2 client secret for authentication with HCP. This can be overridden using the `HCP_CLIENT_SECRET` environment variable. + + - `resource_id` The HCP resource identifier. This can be overridden using the `HCP_RESOURCE_ID` environment variable. + ## Service Mesh Parameters ((#connect-parameters)) The noun _connect_ is used throughout this documentation to refer to the connect From 95f462d5f10571494760b7e64478846dc8741806 Mon Sep 17 00:00:00 2001 From: Dan Bond Date: Mon, 15 May 2023 04:05:47 -0700 Subject: [PATCH 06/12] agent: prevent very old servers re-joining a cluster with stale data (#17171) * agent: configure server lastseen timestamp Signed-off-by: Dan Bond * use correct config Signed-off-by: Dan Bond * add comments Signed-off-by: Dan Bond * use default age in test golden data Signed-off-by: Dan Bond * add changelog Signed-off-by: Dan Bond * fix runtime test Signed-off-by: Dan Bond * agent: add server_metadata Signed-off-by: Dan Bond * update comments Signed-off-by: Dan Bond * correctly check if metadata file does not exist Signed-off-by: Dan Bond * follow instructions for adding new config Signed-off-by: Dan Bond * add comments Signed-off-by: Dan Bond * update comments Signed-off-by: Dan Bond * Update agent/agent.go Co-authored-by: Dan Upton * agent/config: add validation for duration with min Signed-off-by: Dan Bond * docs: add new server_rejoin_age_max config definition Signed-off-by: Dan Bond * agent: add unit test for checking server last seen Signed-off-by: Dan Bond * agent: log continually for 60s before erroring Signed-off-by: Dan Bond * pr comments Signed-off-by: Dan Bond * remove unneeded todo * agent: fix error message Signed-off-by: Dan Bond --------- Signed-off-by: Dan Bond Co-authored-by: Dan Upton --- .changelog/17171.txt | 3 + agent/agent.go | 96 +++++++++++++++++-- agent/agent_test.go | 65 +++++++++++++ agent/config/builder.go | 14 ++- agent/config/builder_test.go | 15 +++ agent/config/config.go | 1 + agent/config/default.go | 1 + agent/config/runtime.go | 12 +++ agent/config/runtime_test.go | 7 +- .../TestRuntimeConfig_Sanitize.golden | 1 + agent/config/testdata/full-config.hcl | 1 + agent/config/testdata/full-config.json | 1 + agent/consul/config.go | 6 ++ agent/consul/server_metadata.go | 71 ++++++++++++++ agent/consul/server_metadata_test.go | 68 +++++++++++++ .../docs/agent/config/config-files.mdx | 69 ++++++------- 16 files changed, 385 insertions(+), 46 deletions(-) create mode 100644 .changelog/17171.txt create mode 100644 agent/consul/server_metadata.go create mode 100644 agent/consul/server_metadata_test.go diff --git a/.changelog/17171.txt b/.changelog/17171.txt new file mode 100644 index 0000000000000..882b63587932e --- /dev/null +++ b/.changelog/17171.txt @@ -0,0 +1,3 @@ +```release-note:improvement +agent: add a configurable maximimum age (default: 7 days) to prevent servers re-joining a cluster with stale data +``` diff --git a/agent/agent.go b/agent/agent.go index 65467dc7ea604..73906f853fcc2 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -7,6 +7,7 @@ import ( "context" "crypto/tls" "encoding/json" + "errors" "fmt" "io" "net" @@ -22,8 +23,6 @@ import ( "github.com/armon/go-metrics" "github.com/armon/go-metrics/prometheus" - "github.com/hashicorp/consul/agent/rpcclient" - "github.com/hashicorp/consul/agent/rpcclient/configentry" "github.com/hashicorp/go-connlimit" "github.com/hashicorp/go-hclog" "github.com/hashicorp/go-memdb" @@ -50,12 +49,13 @@ import ( grpcDNS "github.com/hashicorp/consul/agent/grpc-external/services/dns" middleware "github.com/hashicorp/consul/agent/grpc-middleware" "github.com/hashicorp/consul/agent/hcp/scada" - libscada "github.com/hashicorp/consul/agent/hcp/scada" "github.com/hashicorp/consul/agent/local" "github.com/hashicorp/consul/agent/proxycfg" proxycfgglue "github.com/hashicorp/consul/agent/proxycfg-glue" catalogproxycfg "github.com/hashicorp/consul/agent/proxycfg-sources/catalog" localproxycfg "github.com/hashicorp/consul/agent/proxycfg-sources/local" + "github.com/hashicorp/consul/agent/rpcclient" + "github.com/hashicorp/consul/agent/rpcclient/configentry" "github.com/hashicorp/consul/agent/rpcclient/health" "github.com/hashicorp/consul/agent/structs" "github.com/hashicorp/consul/agent/systemd" @@ -575,11 +575,11 @@ func (a *Agent) Start(ctx context.Context) error { return err } - // copy over the existing node id, this cannot be - // changed while running anyways but this prevents - // breaking some existing behavior. then overwrite - // the configuration + // Copy over the existing node id. This cannot be + // changed while running, but this prevents + // breaking some existing behavior. c.NodeID = a.config.NodeID + // Overwrite the configuration. a.config = c if err := a.tlsConfigurator.Update(a.config.TLS); err != nil { @@ -625,6 +625,20 @@ func (a *Agent) Start(ctx context.Context) error { if c.ServerMode { serverLogger := a.baseDeps.Logger.NamedIntercept(logging.ConsulServer) + // Check for a last seen timestamp and exit if deemed stale before attempting to join + // Serf/Raft or listen for requests. + if err := a.checkServerLastSeen(consul.ReadServerMetadata); err != nil { + deadline := time.Now().Add(time.Minute) + for time.Now().Before(deadline) { + a.logger.Error("startup error", "error", err) + time.Sleep(10 * time.Second) + } + return err + } + + // periodically write server metadata to disk. + go a.persistServerMetadata() + incomingRPCLimiter := consul.ConfiguredIncomingRPCLimiter( &lib.StopChannelContext{StopCh: a.shutdownCh}, serverLogger, @@ -661,7 +675,6 @@ func (a *Agent) Start(ctx context.Context) error { return fmt.Errorf("failed to start server cert manager: %w", err) } } - } else { a.externalGRPCServer = external.NewServer( a.logger.Named("grpc.external"), @@ -1094,7 +1107,7 @@ func (a *Agent) listenHTTP() ([]apiServer, error) { MaxHeaderBytes: a.config.HTTPMaxHeaderBytes, } - if libscada.IsCapability(l.Addr()) { + if scada.IsCapability(l.Addr()) { // wrap in http2 server handler httpServer.Handler = h2c.NewHandler(srv.handler(a.config.EnableDebug), &http2.Server{}) } @@ -1521,6 +1534,8 @@ func newConsulConfig(runtimeCfg *config.RuntimeConfig, logger hclog.Logger) (*co cfg.Reporting.License.Enabled = runtimeCfg.Reporting.License.Enabled + cfg.ServerRejoinAgeMax = runtimeCfg.ServerRejoinAgeMax + enterpriseConsulConfig(cfg, runtimeCfg) return cfg, nil @@ -4529,7 +4544,70 @@ func (a *Agent) proxyDataSources() proxycfg.DataSources { a.fillEnterpriseProxyDataSources(&sources) return sources +} + +// persistServerMetadata periodically writes a server's metadata to a file +// in the configured data directory. +func (a *Agent) persistServerMetadata() { + file := filepath.Join(a.config.DataDir, consul.ServerMetadataFile) + + // Create a timer with no initial tick to allow metadata to be written immediately. + t := time.NewTimer(0) + defer t.Stop() + + for { + select { + case <-t.C: + // Reset the timer to the larger periodic interval. + t.Reset(1 * time.Hour) + + f, err := consul.OpenServerMetadata(file) + if err != nil { + a.logger.Error("failed to open existing server metadata: %w", err) + continue + } + + if err := consul.WriteServerMetadata(f); err != nil { + f.Close() + a.logger.Error("failed to write server metadata: %w", err) + continue + } + + f.Close() + case <-a.shutdownCh: + return + } + } +} +// checkServerLastSeen is a safety check that only occurs once of startup to prevent old servers +// with stale data from rejoining an existing cluster. +// +// It attempts to read a server's metadata file and check the last seen Unix timestamp against a +// configurable max age. If the metadata file does not exist, we treat this as an initial startup +// and return no error. +// +// Example: if the server recorded a last seen timestamp of now-7d, and we configure a max age +// of 3d, then we should prevent the server from rejoining. +func (a *Agent) checkServerLastSeen(readFn consul.ServerMetadataReadFunc) error { + filename := filepath.Join(a.config.DataDir, consul.ServerMetadataFile) + + // Read server metadata file. + md, err := readFn(filename) + if err != nil { + // Return early if it doesn't exist as this likely indicates the server is starting for the first time. + if errors.Is(err, os.ErrNotExist) { + return nil + } + return fmt.Errorf("error reading server metadata: %w", err) + } + + maxAge := a.config.ServerRejoinAgeMax + if md.IsLastSeenStale(maxAge) { + return fmt.Errorf("refusing to rejoin cluster because server has been offline for more than the configured server_rejoin_age_max (%s) - consider wiping your data dir", maxAge) + } + + return nil } func listenerPortKey(svcID structs.ServiceID, checkID structs.CheckID) string { diff --git a/agent/agent_test.go b/agent/agent_test.go index a0f688f5f59ed..b2f0ea32e3177 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -12,6 +12,7 @@ import ( "crypto/x509" "encoding/base64" "encoding/json" + "errors" "fmt" mathrand "math/rand" "net" @@ -6204,6 +6205,70 @@ cloud { require.NoError(t, err) } +func TestAgent_checkServerLastSeen(t *testing.T) { + bd := BaseDeps{ + Deps: consul.Deps{ + Logger: hclog.NewInterceptLogger(nil), + Tokens: new(token.Store), + GRPCConnPool: &fakeGRPCConnPool{}, + }, + RuntimeConfig: &config.RuntimeConfig{}, + Cache: cache.New(cache.Options{}), + } + agent, err := New(bd) + require.NoError(t, err) + + // Test that an ErrNotExist OS error is treated as ok. + t.Run("TestReadErrNotExist", func(t *testing.T) { + readFn := func(filename string) (*consul.ServerMetadata, error) { + return nil, os.ErrNotExist + } + + err := agent.checkServerLastSeen(readFn) + require.NoError(t, err) + }) + + // Test that an error reading server metadata is treated as an error. + t.Run("TestReadErr", func(t *testing.T) { + expected := errors.New("read error") + readFn := func(filename string) (*consul.ServerMetadata, error) { + return nil, expected + } + + err := agent.checkServerLastSeen(readFn) + require.ErrorIs(t, err, expected) + }) + + // Test that a server with a 7d old last seen timestamp is treated as an error. + t.Run("TestIsLastSeenStaleErr", func(t *testing.T) { + agent.config.ServerRejoinAgeMax = time.Hour + + readFn := func(filename string) (*consul.ServerMetadata, error) { + return &consul.ServerMetadata{ + LastSeenUnix: time.Now().Add(-24 * 7 * time.Hour).Unix(), + }, nil + } + + err := agent.checkServerLastSeen(readFn) + require.Error(t, err) + require.ErrorContains(t, err, "refusing to rejoin cluster because server has been offline for more than the configured server_rejoin_age_max") + }) + + // Test that a server with a 6h old last seen timestamp is not treated as an error. + t.Run("TestNoErr", func(t *testing.T) { + agent.config.ServerRejoinAgeMax = 24 * 7 * time.Hour + + readFn := func(filename string) (*consul.ServerMetadata, error) { + return &consul.ServerMetadata{ + LastSeenUnix: time.Now().Add(-6 * time.Hour).Unix(), + }, nil + } + + err := agent.checkServerLastSeen(readFn) + require.NoError(t, err) + }) +} + func getExpectedCaPoolByFile(t *testing.T) *x509.CertPool { pool := x509.NewCertPool() data, err := os.ReadFile("../test/ca/root.cer") diff --git a/agent/config/builder.go b/agent/config/builder.go index 513d5931c7b5b..87ee229406a74 100644 --- a/agent/config/builder.go +++ b/agent/config/builder.go @@ -28,8 +28,6 @@ import ( "github.com/hashicorp/memberlist" "golang.org/x/time/rate" - hcpconfig "github.com/hashicorp/consul/agent/hcp/config" - "github.com/hashicorp/consul/agent/cache" "github.com/hashicorp/consul/agent/checks" "github.com/hashicorp/consul/agent/connect/ca" @@ -37,6 +35,7 @@ import ( "github.com/hashicorp/consul/agent/consul/authmethod/ssoauth" consulrate "github.com/hashicorp/consul/agent/consul/rate" "github.com/hashicorp/consul/agent/dns" + hcpconfig "github.com/hashicorp/consul/agent/hcp/config" "github.com/hashicorp/consul/agent/rpc/middleware" "github.com/hashicorp/consul/agent/structs" "github.com/hashicorp/consul/agent/token" @@ -1090,6 +1089,7 @@ func (b *builder) build() (rt RuntimeConfig, err error) { ServerMode: serverMode, ServerName: stringVal(c.ServerName), ServerPort: serverPort, + ServerRejoinAgeMax: b.durationValWithDefaultMin("server_rejoin_age_max", c.ServerRejoinAgeMax, 24*7*time.Hour, 6*time.Hour), Services: services, SessionTTLMin: b.durationVal("session_ttl_min", c.SessionTTLMin), SkipLeaveOnInt: skipLeaveOnInt, @@ -1952,6 +1952,16 @@ func (b *builder) durationValWithDefault(name string, v *string, defaultVal time return d } +// durationValWithDefaultMin is equivalent to durationValWithDefault, but enforces a minimum duration. +func (b *builder) durationValWithDefaultMin(name string, v *string, defaultVal, minVal time.Duration) (d time.Duration) { + d = b.durationValWithDefault(name, v, defaultVal) + if d < minVal { + b.err = multierror.Append(b.err, fmt.Errorf("%s: duration '%s' cannot be less than: %s", name, *v, minVal)) + } + + return d +} + func (b *builder) durationVal(name string, v *string) (d time.Duration) { return b.durationValWithDefault(name, v, 0) } diff --git a/agent/config/builder_test.go b/agent/config/builder_test.go index 3fe6573ba0cde..28d5b2972c3d1 100644 --- a/agent/config/builder_test.go +++ b/agent/config/builder_test.go @@ -311,6 +311,21 @@ func TestBuilder_DurationVal_InvalidDuration(t *testing.T) { require.Contains(t, b.err.Error(), badDuration2) } +func TestBuilder_DurationValWithDefaultMin(t *testing.T) { + b := builder{} + + // Attempt to validate that a duration of 10 hours will not error when the min val is 1 hour. + dur := "10h0m0s" + b.durationValWithDefaultMin("field2", &dur, 24*7*time.Hour, time.Hour) + require.NoError(t, b.err) + + // Attempt to validate that a duration of 1 min will error when the min val is 1 hour. + dur = "0h1m0s" + b.durationValWithDefaultMin("field1", &dur, 24*7*time.Hour, time.Hour) + require.Error(t, b.err) + require.Contains(t, b.err.Error(), "1 error") +} + func TestBuilder_ServiceVal_MultiError(t *testing.T) { b := builder{} b.serviceVal(&ServiceDefinition{ diff --git a/agent/config/config.go b/agent/config/config.go index 4d41815550bf4..a1f41452924bc 100644 --- a/agent/config/config.go +++ b/agent/config/config.go @@ -228,6 +228,7 @@ type Config struct { SerfBindAddrWAN *string `mapstructure:"serf_wan" json:"serf_wan,omitempty"` ServerMode *bool `mapstructure:"server" json:"server,omitempty"` ServerName *string `mapstructure:"server_name" json:"server_name,omitempty"` + ServerRejoinAgeMax *string `mapstructure:"server_rejoin_age_max" json:"server_rejoin_age_max,omitempty"` Service *ServiceDefinition `mapstructure:"service" json:"-"` Services []ServiceDefinition `mapstructure:"services" json:"-"` SessionTTLMin *string `mapstructure:"session_ttl_min" json:"session_ttl_min,omitempty"` diff --git a/agent/config/default.go b/agent/config/default.go index 4c88c2ac3d86a..3af8d0867d4ce 100644 --- a/agent/config/default.go +++ b/agent/config/default.go @@ -58,6 +58,7 @@ func DefaultSource() Source { segment_limit = 64 server = false + server_rejoin_age_max = "168h" syslog_facility = "LOCAL0" tls = { diff --git a/agent/config/runtime.go b/agent/config/runtime.go index a8d6c62ebde91..dca9abe0e7f95 100644 --- a/agent/config/runtime.go +++ b/agent/config/runtime.go @@ -1358,6 +1358,18 @@ type RuntimeConfig struct { // hcl: ports { server = int } ServerPort int + // ServerRejoinAgeMax is used to specify the duration of time a server + // is allowed to be down/offline before a startup operation is refused. + // + // For example: if a server has been offline for 5 days, and this option + // is configured to 3 days, then any subsequent startup operation will fail + // and require an operator to manually intervene. + // + // The default is: 7 days + // + // hcl: server_rejoin_age_max = "duration" + ServerRejoinAgeMax time.Duration + // Services contains the provided service definitions: // // hcl: services = [ diff --git a/agent/config/runtime_test.go b/agent/config/runtime_test.go index 8b8ee4f86a103..1064829cd3a11 100644 --- a/agent/config/runtime_test.go +++ b/agent/config/runtime_test.go @@ -25,13 +25,12 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/time/rate" - hcpconfig "github.com/hashicorp/consul/agent/hcp/config" - "github.com/hashicorp/consul/acl" "github.com/hashicorp/consul/agent/cache" "github.com/hashicorp/consul/agent/checks" "github.com/hashicorp/consul/agent/consul" consulrate "github.com/hashicorp/consul/agent/consul/rate" + hcpconfig "github.com/hashicorp/consul/agent/hcp/config" "github.com/hashicorp/consul/agent/structs" "github.com/hashicorp/consul/agent/token" "github.com/hashicorp/consul/lib" @@ -6419,6 +6418,7 @@ func TestLoad_FullConfig(t *testing.T) { SerfPortWAN: 8302, ServerMode: true, ServerName: "Oerr9n1G", + ServerRejoinAgeMax: 604800 * time.Second, ServerPort: 3757, Services: []*structs.ServiceDefinition{ { @@ -7163,7 +7163,8 @@ func TestRuntimeConfig_Sanitize(t *testing.T) { }, }, }, - Locality: &Locality{Region: strPtr("us-west-1"), Zone: strPtr("us-west-1a")}, + Locality: &Locality{Region: strPtr("us-west-1"), Zone: strPtr("us-west-1a")}, + ServerRejoinAgeMax: 24 * 7 * time.Hour, } b, err := json.MarshalIndent(rt.Sanitized(), "", " ") diff --git a/agent/config/testdata/TestRuntimeConfig_Sanitize.golden b/agent/config/testdata/TestRuntimeConfig_Sanitize.golden index f2bd8f2f3ca5c..c17636eef730e 100644 --- a/agent/config/testdata/TestRuntimeConfig_Sanitize.golden +++ b/agent/config/testdata/TestRuntimeConfig_Sanitize.golden @@ -332,6 +332,7 @@ "ServerMode": false, "ServerName": "", "ServerPort": 0, + "ServerRejoinAgeMax": "168h0m0s", "Services": [ { "Address": "", diff --git a/agent/config/testdata/full-config.hcl b/agent/config/testdata/full-config.hcl index 718c879b29740..c29c334b95046 100644 --- a/agent/config/testdata/full-config.hcl +++ b/agent/config/testdata/full-config.hcl @@ -394,6 +394,7 @@ serf_lan = "99.43.63.15" serf_wan = "67.88.33.19" server = true server_name = "Oerr9n1G" +server_rejoin_age_max = "604800s" service = { id = "dLOXpSCI" name = "o1ynPkp0" diff --git a/agent/config/testdata/full-config.json b/agent/config/testdata/full-config.json index f98bfe4dab2b1..7640394a4fa0e 100644 --- a/agent/config/testdata/full-config.json +++ b/agent/config/testdata/full-config.json @@ -453,6 +453,7 @@ "serf_wan": "67.88.33.19", "server": true, "server_name": "Oerr9n1G", + "server_rejoin_age_max": "604800s", "service": { "id": "dLOXpSCI", "name": "o1ynPkp0", diff --git a/agent/consul/config.go b/agent/consul/config.go index e35fceb5560db..eef4bc4376f4e 100644 --- a/agent/consul/config.go +++ b/agent/consul/config.go @@ -447,6 +447,10 @@ type Config struct { // Embedded Consul Enterprise specific configuration *EnterpriseConfig + + // ServerRejoinAgeMax is used to specify the duration of time a server + // is allowed to be down/offline before a startup operation is refused. + ServerRejoinAgeMax time.Duration } func (c *Config) InPrimaryDatacenter() bool { @@ -574,6 +578,8 @@ func DefaultConfig() *Config { PeeringTestAllowPeerRegistrations: false, EnterpriseConfig: DefaultEnterpriseConfig(), + + ServerRejoinAgeMax: 24 * 7 * time.Hour, } // Increase our reap interval to 3 days instead of 24h. diff --git a/agent/consul/server_metadata.go b/agent/consul/server_metadata.go new file mode 100644 index 0000000000000..742391e0b6a1f --- /dev/null +++ b/agent/consul/server_metadata.go @@ -0,0 +1,71 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package consul + +import ( + "encoding/json" + "io" + "os" + "time" +) + +// ServerMetadataFile is the name of the file on disk that server metadata +// should be written to. +const ServerMetadataFile = "server_metadata.json" + +// ServerMetadata represents specific metadata about a running server. +type ServerMetadata struct { + // LastSeenUnix is the timestamp a server was last seen, in Unix format. + LastSeenUnix int64 `json:"last_seen_unix"` +} + +// IsLastSeenStale checks whether the last seen timestamp is older than a given duration. +func (md *ServerMetadata) IsLastSeenStale(d time.Duration) bool { + lastSeen := time.Unix(md.LastSeenUnix, 0) + maxAge := time.Now().Add(-d) + + return lastSeen.Before(maxAge) +} + +// OpenServerMetadata is a helper function for opening the server metadata file +// with the correct permissions. +func OpenServerMetadata(filename string) (io.WriteCloser, error) { + return os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) +} + +type ServerMetadataReadFunc func(filename string) (*ServerMetadata, error) + +// ReadServerMetadata is a helper function for reading the contents of a server +// metadata file and unmarshaling the data from JSON. +func ReadServerMetadata(filename string) (*ServerMetadata, error) { + b, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + + var md ServerMetadata + if err := json.Unmarshal(b, &md); err != nil { + return nil, err + } + + return &md, nil +} + +// WriteServerMetadata writes server metadata to a file in JSON format. +func WriteServerMetadata(w io.Writer) error { + md := &ServerMetadata{ + LastSeenUnix: time.Now().Unix(), + } + + b, err := json.Marshal(md) + if err != nil { + return err + } + + if _, err := w.Write(b); err != nil { + return err + } + + return nil +} diff --git a/agent/consul/server_metadata_test.go b/agent/consul/server_metadata_test.go new file mode 100644 index 0000000000000..d091bfdf3630e --- /dev/null +++ b/agent/consul/server_metadata_test.go @@ -0,0 +1,68 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package consul + +import ( + "bytes" + "errors" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +type mockServerMetadataWriter struct { + writeErr error +} + +func (m *mockServerMetadataWriter) Write(p []byte) (n int, err error) { + if m.writeErr != nil { + return 0, m.writeErr + } + + return 1, nil +} + +func TestServerMetadata(t *testing.T) { + now := time.Now() + + t.Run("TestIsLastSeenStaleTrue", func(t *testing.T) { + // Create a server that is 48 hours old. + md := &ServerMetadata{ + LastSeenUnix: now.Add(-48 * time.Hour).Unix(), + } + + stale := md.IsLastSeenStale(24 * time.Hour) + assert.True(t, stale) + }) + + t.Run("TestIsLastSeenStaleFalse", func(t *testing.T) { + // Create a server that is 1 hour old. + md := &ServerMetadata{ + LastSeenUnix: now.Add(-1 * time.Hour).Unix(), + } + + stale := md.IsLastSeenStale(24 * time.Hour) + assert.False(t, stale) + }) +} + +func TestWriteServerMetadata(t *testing.T) { + t.Run("TestWriteError", func(t *testing.T) { + m := &mockServerMetadataWriter{ + writeErr: errors.New("write error"), + } + + err := WriteServerMetadata(m) + assert.Error(t, err) + }) + + t.Run("TestOK", func(t *testing.T) { + b := new(bytes.Buffer) + + err := WriteServerMetadata(b) + assert.NoError(t, err) + assert.True(t, b.Len() > 0) + }) +} diff --git a/website/content/docs/agent/config/config-files.mdx b/website/content/docs/agent/config/config-files.mdx index b19991fe04dbf..ee5e273be9b71 100644 --- a/website/content/docs/agent/config/config-files.mdx +++ b/website/content/docs/agent/config/config-files.mdx @@ -7,7 +7,7 @@ description: >- # Agents Configuration File Reference ((#configuration_files)) -This topic describes the parameters for configuring Consul agents. For information about how to start Consul agents, refer to [Starting the Consul Agent](/consul/docs/agent#starting-the-consul-agent). +This topic describes the parameters for configuring Consul agents. For information about how to start Consul agents, refer to [Starting the Consul Agent](/consul/docs/agent#starting-the-consul-agent). ## Overview @@ -63,25 +63,25 @@ telemetry { -### Time-to-live values +### Time-to-live values Consul uses the Go `time` package to parse all time-to-live (TTL) values used in Consul agent configuration files. Specify integer and float values as a string and include one or more of the following units of time: - `ns` -- `us` -- `µs` +- `us` +- `µs` - `ms` -- `s` +- `s` - `m` - `h` -Examples: +Examples: -- `'300ms'` -- `'1.5h'` +- `'300ms'` +- `'1.5h'` - `'2h45m'` -Refer to the [formatting specification](https://golang.org/pkg/time/#ParseDuration) for additional information. +Refer to the [formatting specification](https://golang.org/pkg/time/#ParseDuration) for additional information. ## General parameters @@ -549,9 +549,9 @@ Refer to the [formatting specification](https://golang.org/pkg/time/#ParseDurati - `https_handshake_timeout` - Configures the limit for how long the HTTPS server in both client and server agents will wait for a client to complete a TLS handshake. This should be kept conservative as it limits how many connections an unauthenticated attacker can open if `verify_incoming` is being using to authenticate clients (strongly recommended in production). Default value is `5s`. - `request_limits` - This object specifies configurations that limit the rate of RPC and gRPC requests on the Consul server. Limiting the rate of gRPC and RPC requests also limits HTTP requests to the Consul server. - `mode` - String value that specifies an action to take if the rate of requests exceeds the limit. You can specify the following values: - - `permissive`: The server continues to allow requests and records an error in the logs. - - `enforcing`: The server stops accepting requests and records an error in the logs. - - `disabled`: Limits are not enforced or tracked. This is the default value for `mode`. + - `permissive`: The server continues to allow requests and records an error in the logs. + - `enforcing`: The server stops accepting requests and records an error in the logs. + - `disabled`: Limits are not enforced or tracked. This is the default value for `mode`. - `read_rate` - Integer value that specifies the number of read requests per second. Default is `100`. - `write_rate` - Integer value that specifies the number of write requests per second. Default is `100`. - `rpc_handshake_timeout` - Configures the limit for how long servers will wait after a client TCP connection is established before they complete the connection handshake. When TLS is used, the same timeout applies to the TLS handshake separately from the initial protocol negotiation. All Consul clients should perform this immediately on establishing a new connection. This should be kept conservative as it limits how many connections an unauthenticated attacker can open if `verify_incoming` is being using to authenticate clients (strongly recommended in production). When `verify_incoming` is true on servers, this limits how long the connection socket and associated goroutines will be held open before the client successfully authenticates. Default value is `5s`. @@ -736,6 +736,11 @@ Refer to the [formatting specification](https://golang.org/pkg/time/#ParseDurati - `server` Equivalent to the [`-server` command-line flag](/consul/docs/agent/config/cli-flags#_server). +- `server_rejoin_age_max` - controls the allowed maximum age of a stale server attempting to rejoin a cluster. + If a server is not running for this period, then it will refuse to start up again until an operator intervenes. This is to protect + clusters from instability caused by decommissioned servers accidentally being started again. + Note: the default value is 7d and the minimum value is 6h. + - `non_voting_server` - **This field is deprecated in Consul 1.9.1. See the [`read_replica`](#read_replica) field instead.** - `read_replica` - Equivalent to the [`-read-replica` command-line flag](/consul/docs/agent/config/cli-flags#_read_replica). @@ -924,7 +929,7 @@ Refer to the [formatting specification](https://golang.org/pkg/time/#ParseDurati [`acl.tokens.agent_recovery`](#acl_tokens_agent_recovery).** - `config_file_service_registration` ((#acl_tokens_config_file_service_registration)) - Specifies the ACL - token the agent uses to register services and checks from [service](/consul/docs/services/usage/define-services) and [check](/consul/docs/services/usage/checks) definitions + token the agent uses to register services and checks from [service](/consul/docs/services/usage/define-services) and [check](/consul/docs/services/usage/checks) definitions specified in configuration files or fragments passed to the agent using the `-hcl` flag. @@ -1626,12 +1631,12 @@ subsystem that provides Consul's service mesh capabilities. - `backend` ((#raft_logstore_backend)) Specifies which storage engine to use to persist logs. Valid options are `boltdb` or `wal`. Default - is `boltdb`. The `wal` option specifies an experimental backend that - should be used with caution. Refer to - [Experimental WAL LogStore backend](/consul/docs/agent/wal-logstore) + is `boltdb`. The `wal` option specifies an experimental backend that + should be used with caution. Refer to + [Experimental WAL LogStore backend](/consul/docs/agent/wal-logstore) for more information. - - `disable_log_cache` ((#raft_logstore_disable_log_cache)) Disables the in-memory cache for recent logs. We recommend using it for performance testing purposes, as no significant improvement has been measured when the cache is disabled. While the in-memory log cache theoretically prevents disk reads for recent logs, recent logs are also stored in the OS page cache, which does not slow either the `boltdb` or `wal` backend's ability to read them. + - `disable_log_cache` ((#raft_logstore_disable_log_cache)) Disables the in-memory cache for recent logs. We recommend using it for performance testing purposes, as no significant improvement has been measured when the cache is disabled. While the in-memory log cache theoretically prevents disk reads for recent logs, recent logs are also stored in the OS page cache, which does not slow either the `boltdb` or `wal` backend's ability to read them. - `verification` ((#raft_logstore_verification)) This is a nested object that allows configuring the online verification of the LogStore. Verification @@ -1652,43 +1657,43 @@ subsystem that provides Consul's service mesh capabilities. on that server. The only correct response is to stop the server, remove its data directory, and restart so it can be caught back up with a correct server again. Please report verification failures including details about - your hardware and workload via GitHub issues. Refer to - [Experimental WAL LogStore backend](/consul/docs/agent/wal-logstore) + your hardware and workload via GitHub issues. Refer to + [Experimental WAL LogStore backend](/consul/docs/agent/wal-logstore) for more information. - `enabled` ((#raft_logstore_verification_enabled)) - Set to `true` to - allow this Consul server to write and verify log verification checkpoints + allow this Consul server to write and verify log verification checkpoints when elected leader. - - `interval` ((#raft_logstore_verification_interval)) - Specifies the time - interval between checkpoints. There is no default value. You must - configure the `interval` and set [`enabled`](#raft_logstore_verification_enabled) - to `true` to correctly enable intervals. We recommend using an interval - between `30s` and `5m`. The performance overhead is insignificant when the + - `interval` ((#raft_logstore_verification_interval)) - Specifies the time + interval between checkpoints. There is no default value. You must + configure the `interval` and set [`enabled`](#raft_logstore_verification_enabled) + to `true` to correctly enable intervals. We recommend using an interval + between `30s` and `5m`. The performance overhead is insignificant when the interval is set to `5m` or less. - - `boltdb` ((#raft_logstore_boltdb)) - Object that configures options for + - `boltdb` ((#raft_logstore_boltdb)) - Object that configures options for Raft's `boltdb` backend. It has no effect if the `backend` is not `boltdb`. - - `no_freelist_sync` ((#raft_logstore_boltdb_no_freelist_sync)) - Set to + - `no_freelist_sync` ((#raft_logstore_boltdb_no_freelist_sync)) - Set to `true` to disable storing BoltDB's freelist to disk within the `raft.db` file. Disabling freelist syncs reduces the disk IO required for write operations, but could potentially increase start up time because Consul must scan the database to find free space within the file. - - - `wal` ((#raft_logstore_wal)) - Object that configures the `wal` backend. - Refer to [Experimental WAL LogStore backend](/consul/docs/agent/wal-logstore) + - - `wal` ((#raft_logstore_wal)) - Object that configures the `wal` backend. + Refer to [Experimental WAL LogStore backend](/consul/docs/agent/wal-logstore) for more information. - - `segment_size_mb` ((#raft_logstore_wal_segment_size_mb)) - Integer value + - `segment_size_mb` ((#raft_logstore_wal_segment_size_mb)) - Integer value that represents the target size in MB for each segment file before rolling to a new segment. The default value is `64` and is suitable for - most deployments. While a smaller value may use less disk space because you + most deployments. While a smaller value may use less disk space because you can reclaim space by deleting old segments sooner, the smaller segment that results may affect performance because safely rotating to a new file more frequently can impact tail latencies. Larger values are unlikely - to improve performance significantly. We recommend using this + to improve performance significantly. We recommend using this configuration for performance testing purposes. - `raft_protocol` ((#raft_protocol)) Equivalent to the [`-raft-protocol` From 879b7754598b157ad6019b24f4de190eb251ffa2 Mon Sep 17 00:00:00 2001 From: Dan Upton Date: Mon, 15 May 2023 12:34:36 +0100 Subject: [PATCH 07/12] docs: initial documentation for the new State Store (#17315) --- docs/README.md | 1 + docs/persistence/README.md | 5 + docs/resources/README.md | 111 +++++++++++++++++++++++ docs/resources/architecture-overview.png | Bin 0 -> 125060 bytes docs/resources/raft-backend.png | Bin 0 -> 307481 bytes internal/storage/raft/backend.go | 3 + proto-public/pbresource/resource.pb.go | 2 + proto-public/pbresource/resource.proto | 1 + 8 files changed, 123 insertions(+) create mode 100644 docs/resources/README.md create mode 100644 docs/resources/architecture-overview.png create mode 100644 docs/resources/raft-backend.png diff --git a/docs/README.md b/docs/README.md index 4a7523fd14bf8..d3483710b33bd 100644 --- a/docs/README.md +++ b/docs/README.md @@ -25,6 +25,7 @@ be found in the public [user documentation]. 1. [Agent Configuration](./config) 1. [RPC](./rpc) 1. [Cluster Persistence](./persistence) +1. [Resources and Controllers](./resources) 1. [Client Agent](./client-agent) 1. [Service Discovery](./service-discovery) 1. [Service Mesh (Connect)](./service-mesh) diff --git a/docs/persistence/README.md b/docs/persistence/README.md index bb907d7d133d8..f705539fa5764 100644 --- a/docs/persistence/README.md +++ b/docs/persistence/README.md @@ -1,5 +1,10 @@ # Cluster Persistence +> **Note** +> While the content of this document is still accurate, it doesn't cover the new +> generic resource-oriented storage layer introduced in Consul 1.16. Please see +> [Resources](../resources) for more information. + The cluser persistence subsystem runs entirely in Server Agents. It handles both read and write requests from the [RPC] subsystem. See the [Consul Architecture Guide] for an introduction to the Consul deployment architecture and the [Consensus Protocol] used by diff --git a/docs/resources/README.md b/docs/resources/README.md new file mode 100644 index 0000000000000..1356da207982e --- /dev/null +++ b/docs/resources/README.md @@ -0,0 +1,111 @@ +# Resources + +Consul 1.16 introduced a set of [generic APIs] for managing resources, and a +[controller runtime] for building functionality on top of them. + +[generic APIs]: ../../proto-public/pbresource/resource.proto +[controller runtime]: ../../internal/controller + +Previously, adding features to Consul involved making changes at every layer of +the stack, including: HTTP handlers, RPC handlers, MemDB tables, Raft +operations, and CLI commands. + +This architecture made sense when the product was maintained by a small core +group who could keep the entire system in their heads, but presented significant +collaboration, ownership, and onboarding challenges when our contributor base +expanded to many engineers, across several teams, and the product grew in +complexity. + +In the new model, teams can work with much greater autonomy by building on top +of a shared platform and own their resource types and controllers. + +## Architecture Overview + +![architecture diagram](./architecture-overview.png) + +[source](https://whimsical.com/state-store-v2-UKE6SaEPXNc4UrZBrZj4Kg) + +Our resource-oriented architecture comprises the following components: + +#### Resource Service + +[Resource Service](../../proto-public/pbresource/resource.proto) is a gRPC +service that contains the shared logic for creating, reading, updating, +deleting, and watching resources. It will be consumed by controllers, our +Kubernetes integration, the CLI, and mapped to an HTTP+JSON API. + +#### Type Registry + +[Type Registry](../../internal/resource/registry.go) is where teams register +their resource types, along with hooks for performing structural validation, +authorization, etc. + +#### Storage Backend + +[Storage Backend](../../internal/storage/storage.go) is an abstraction over +low-level storage primitives. Today, there are two implementations (Raft and +an in-memory backend for tests) but in the future, we envisage external storage +systems such as the Kubernetes API or an RDBMS could be supported which would +reduce operational complexity for our customers. + +#### Controllers + +[Controllers](../../internal/controller/api.go) implement Consul's business +logic using asynchronous control loops that respond to changes in resources. + +## Raft Storage Backend + +Our [Raft Storage Backend](../../internal/storage/raft/backend.go) integrates +with the existing Raft machinery (e.g. FSM) used by the [old state store]. It +also transparently forwards writes and strongly consistent reads to the leader +over gRPC. + +There's quite a lot going on here, so to dig into the details, let's take a look +at how a write operation is handled. + +[old state store]: ../persistence/ + +![raft storage backend diagram](./raft-backend.png) + +[source](https://whimsical.com/state-store-v2-UKE6SaEPXNc4UrZBrZj4Kg) + +#### Steps 1 & 2 + +User calls the resource service's `Write` endpoint, on a Raft follower, which +in-turn calls the storage backend's `WriteCAS` method. + +#### Steps 3 & 4 + +The storage backend determines that the current server is a Raft follower, and +forwards the operation to the leader via a gRPC [forwarding service] listening +on the multiplexed RPC port ([`ports.server`]). + +[forwarding service]: ../../proto/private/pbstorage/raft.proto +[`ports.server`]: https://developer.hashicorp.com/consul/docs/agent/config/config-files#server_rpc_port + +#### Step 5 + +The leader's storage backend serializes the operation to protobuf and applies it +to the Raft log. As we need to share the Raft log with the old state store, we go +through the [`consul.raftHandle`](../../agent/consul/raft_handle.go) and +[`consul.Server`](../../agent/consul/server/server.go) which applies a msgpack +envelope and type byte prefix. + +#### Step 6 + +Raft consensus happens! Once the log has been committed, it is applied to the +[FSM](../../agent/consul/fsm/fsm.go) which calls the storage backend's `Apply` +method to apply the protobuf-encoded operation to the [`inmem.Store`]. + +[`inmem.Store`]: ../../internal/storage/inmem/store.go + +#### Steps 7, 8, 9 + +At this point, the operation is complete. The forwarding service returns a +successful response, as does the follower's storage backend, and the user +gets a successful response too. + +#### Steps 10 & 11 + +Asynchronously, the log is replicated to followers and applied to their storage +backends. diff --git a/docs/resources/architecture-overview.png b/docs/resources/architecture-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..656844393e1c8ad7b41217adbad23886187139c1 GIT binary patch literal 125060 zcmeEuc_7ql`}bHQDH6(Fin2|TkhPqs6v~>hg%BZR9fm1d(5PfdSz2hZWnX4236ov2 zFJl?|GGlBrmND-==RD7O&hxy#!}ELpe*dXyn(uvI-|N2C&vo6`6GMGn&fNmLArJ`X zrHj8^hd|heArQuAY^>lL>fpsF@E3#kb=~uj>=vPE2t*8W>9=#n{?>DYyAslFy^`ES zpPv+({!KgP?Kv&4{nze`9jw}Ouufi;Fc+n&pgK#Q4?+|4&7B;b{Ax}rT)wV*;mYH8 zkHs$Exj!b8`*!+`y-9F4yv$(b^UQAI=NKIM%@FBJ#uo#1;u5ZvsBzuIiiSuoQWQKx z4%@}R$jrtirWFd=@q=NU)@z9M4Qp1O|LW&pN#y-dNHRa;jw}Cj_k+k#2#&4I^89~6 z%^%M&FJM^zOY*fstJs*C7j!}=_W#$fEEYPc_)p??erX*su}~$()A3wlhE~Yrv&FbAK}6d4>unb3+=u# zSir}4=m1wqqpi`)-)s*uAl0DUJH6>MeJuzyDdrk8+shNr&iKdsTD~e)dILcoW^QMl zYezk}y2H-Q7AAmd6IG8vW|!k9%|Ge)WIvormoR)=WqVWgFlP5nEBzf-xGD>1@0c%C zW?bPtc-%IAwRGKd#+{k%01NBxp0r@pk)5Q+*@uAvV;aI@u8EXlU*6XjyD=#hdsBds zxq)j+v_P8NdTXG;a3?;ry<}wczuIdWdBo5L`L^1(wzZc%r$XIRiSax8p29|}>B)y2 zUKR&Dn}}zjY`UYinnG5I)NqSV4KiWvy4~ zAd|d<);;9ns#;nU)3U8$y#3v;zGRX}vuJXuRB*hf!971Xs}p3vzn?B_gw^_7yNz?X z?OXa$-MMm1{P_f)iP`drv{6)pUzrJ+{%NMA9*P1DnvX z!nsFbNfT$3wtO2 z=(0=~vLZJF;|jOG1NNgGQQS{N*Hsd;o`B}qL3GB9fbgdT8z~|m?%u;!rI!p1?q6?{ zv@_j!@vv)V0_X(vD`vLmpm$CDI`abS?$Kiksu4v&Han8J1jtl0fM$hhSusD{J#>ua z0F(dV;Gp~(N#T7K+{$Xki-(c|^CwVF`cJf|i^#9pq%GS;6SFJ~A z(|l|elwIbhB)9{gxqdtXt81)(xXk#9`#9^uxH&DjcklI2JB%6ITYJ))F7L4Kfob7+~H>BD8@-2%WiF z&n$54q&Xz#-Y(22DSuFXP##}zBw+Go1DJ`oRSirbg7a?k+9KN0p=O8k8h2o^7#R>+ z>hYF^>r;xBe5l!a#lZ?`LZD=*StX)`2WheU1N-nXGW6lXT&P*2d&27-SeqvWSlik1 zDN>7-<>Bt(SdnuuigMswX#6)3sV7<%$fKd%d~V^w3wyQ?b=wJndK3Gr^rT&c zb`Y@B?}2qLYZ#oN#CCVNWTz0w0XSx;-k>1|at{aF@U0S+%i@MifZYPAi7$3|bRVoAC094hr{L_U+X6>Q9Lr?X}No9{V& zj-7cC1RU{?)N#p$-h4r=af4IZ7C&x+;#^aZfYMCGcE*b+G8S02w9cM=9B z@Vi6K_xH1nodf*XXLVg1Im6C2Y|`4kleuccfJdAAVbbD;CP*(vf2%>O=TRwZ9iL6I zzBvFrH4tMTE-Wm(pbOU>35LPpbbGkz-wnHdb$tRjvX=7LwO4U^cxK_U5olXXQ(z>XkYfZaCH{wc(~C=M8#V*UB$4(BT%37ow$ z+)v_}G}zvk=pA*vr zTw0rsy}W~{r+R|lJh|#z1EVa^$Zp1~MZYn20;$S) z_)djwOc$t&X8H9KI~g&$t?*nWToE$^+n2h;+p!yiSkg@XE&C1*C6xuR)grY%?qaF{ zc(l{-^e*Hk;Q9DRGpS?SQ;e(w+M?KkOJX0p49GN_zb=D}U}0X6k~qz<1HA>IfUO*- zd-t;&YXiy!A|}M1i2^QdE?-XD!GisNW&Quk`fuv%{GZC2uZUf5o+mXVwwULCR(HHI z7olQ=w%be~+~NJ4_>eBMQMji&sIizXPzDv3xa;hvuLA*nzTSx@mw`p8s*<%P#aB=! zf@fC~C{?BXqtuT%k@={BgYQ-0tQgXwk1%PZaiVTjSXGni5PSVJg z-dc&tsj0{>BA4nza%AcT_VQIVy3HQgDS!7l02UK3f^q-I2Xr9N#csN=H)Kt|Wfd>q z>I8y6ZMM7CbHn4w37#^$wLVnI^jmgPQoqE?jj5lJMKzT{qp{8&{nP^Rs13)sv0SJb zDlT^?^YH~7Y*t^utb}1Y*z=X`ApyjEQq1U5chgjs^S3BrQlUYGkbwkW&eFU+7mAamIpqhg~}8PP?uuU9wFEaB*#Jta)E_v}S3LuLmh5 zgczYrEEJToh=N#O2r4Z#hd`CGt{>lF#nXmhMI^=js+a*-F<_>PV3AX9e?4dmt{NS4 zRm3c4eO%ctC5u;92a775tdZ16`i$YzrFpoVp z>WQa4wx(o^T9Pa8J~w4va2GMB?xD~0#Y=B{4suK`<=7sN|v~wE4J*Y92LGly&{nxIY0I?Zqd}7p# z$-mn=#7J#zV-jqt#+MjI;+t2{+^cSTZLX4t3$VPOxV=ehy9XG2wfj295ko;Bn0+N( zfn7P9b}m8VlV~P?&5Z#LdH7|s3&p%u8IPe#{PBWS8>8bxPdEjY#vOwLpv%Kl@)LV& zZ)ce|no2~yYnt01tQSD$;%8S+Bx_MYd@)vS69J#-8`%qyz2sR^ygtOv2iY4@&D z5Vij7t=&Zw#R_>kH@#Mn7G=rUAv3xv0gRCYXQ2>dAqcTDV(++37BT_-dL6I|xHPm; z55<3WvT=5NaV2N|)AxNSrQ{&XC;@e;Up`W(?PKz0`pS2N3q=?e=__;JdHV4xzy$yV zppi|3LhIgqR+TEt5O7{n(z~=NrmdoX%A4`e;$am+}tkB z4HFDyF|ViOww`-e-<5EbsL~l6f^aC8j8SPWka0b{ZOo?S2xRS4zd$(mk2qkHiq@YO zCAzw&9H1@r9V-8xv)R<>Nx{K>S!)a{|4Y!_+}z4%XX~3U3&N&~-1_aP51-~D@ag82 z2%}8tAdGyMN6&%Qa*EeIAD^e6s*2wP2MYPNA;inNF6>~7pIHN=RUZ4C*}?*RNSUvk z{zfA8N;{GHXiD)i(fQE>=0EL#ZqT_M%evr|-?oRp%xfjlpF(mPeTz*&`OGT4w3-$) zP}e}Ix_I_>mu{V=jb_%NPNH7GxI7PmrP3XBYy^%NYftZ=RU8o5@> z#ACNPMNnQFZoZcH`Nqgu2F%U1L_5GR-@X!`{-X12#1XK2T8<1fk*tk=6ei}BF9f!nIAR)+g4HkL9Rc{M_Y z2i!9IbRRY*chNfD5PcF1{4Q(4Vr%6XgAtJP6pGa`*+zc+Vi#X7{jSW~@(nF2vfZw6W}lnVH|f-9|T3mAFBA1!3P1c{M>L*ky*q zx>GWG78s&?`a0as0rc3vg87WQTeK3D%<>!q)mTl;6W2hrB>K<4%aXr!-b}`(n_Efq zw1yn5^Q8vG%TVKf1*?7lv4^_igV)9|5WtXc_M!;ZiHRO#{d_JO$_IM+1q zQxRH?botphc6aGJ9&aEArLi>}4f6Z3If!kQ*iH2VCp0neUa5}eKSX$z1hFo?zXBYs zndszYV&1LUqLLYOcWr~B>!T!>%3!{l@X3n9XI1?~FR9O6VBH}fu6hOz&svO`?E^4S zdbKa7&s7FG2W?LCPM`PxCF#qH`V6qlSsKVZ@4e121-M}6@!3;9JqTq`gm*XfJ8t$z z?XKEVr#GkOl$o{{6M7{HVok3k6=1*zZwzx>HX+J`>gW}O?~d7JX}BMQrufW`R`YaW zUy=ryPyx41oGcf*Idt|c5{$ZPQ!3p|h%1u_#5oyQ{|(BLs)2o*V>cQ@M3t`_+RTy?@= z$`rcX??fMpDYI+o$WBlShTkht>bA&obO29?d%KRA^cNE!SJE0xzQ=u~JYyQYuV5hP z`vw5t+p_&6U;u7GM~4d}=%A*TIu7J$v3Joa87^P3gtyrP+k_9TruR5~8@P!*w5|OG z;-w8FCm@_l?Ahh2z5bsQ_8e(D4TxKF8_ywPl-$u9e%f-wz}G%4PJ!zn_&p%qZ3nZPdZA_5_q(zOpE0F|*iGv+oF@a;w}O@m|RMk0Ls zj3ad#ykKH>8sBfJX8>)5o{G}QOpt@zDpZ)B2^@VjIodbtA>g$z`d~GZqeVk~FidCr z1w*Ss!8+Cl|0%W(T*!1fh!Y~6Q#MiNKOH;%K+a*HN1pU~A4dADuFphBuIcuCM6%NJ zI5wOc``A^$0S{p#D6#=iEw$8G-APuXIB$-|sXmk$mz~6D>{Y#cjjzFkX?ut4MR&-J zMJE!qsK7eUco0y`0^qCei`1C`_-v6I$zy2!W+triW*fV(HcZ$xe_N4hD+4c_)eo1J zG^9J)8;VG=W{Cvm84$&pd64=BiK?1g7u1#pA|K#}$Lyn{x|1k_>BNV-fbMsvs39CH++6DB8b0fgRTXS*RZO3u3Kw zo)VJ#*k3}yD_7hw%_$+i#o`~n_7E(<1oJgLC0EQ}y&-F3wY{nMQ2^dJz5l&3V=rC4 z^`XY+Q$@hiD~8#v>dA=Ja0VYDufj*HC}uKiztu<9bx^Bry#pggOtUP=OC6n#96c`|%mYpS?f16+Rk7KH;e|(eUJG`RdkRWL{)va%Zqe-LW-6 zBu4V8^EnnhiNCjE&V1lF9j8C|aDAey$y4N212KEB*&)}9;p1$>Pldjs(W>qh!IuU$ zhV66hbK)_8~Q7NI!ZrTq4eo6*N#qI4ITsG!ayCdqUeN^x&1!m`>=fnU)le zDO(o|33ieR7=C^eOGJ|~{;jaqLp%7}yd&VmV)Z{g(5eG+bqXgo&iyG5Fevt%pjr|H z_d{Tz5k`zahmh}%j5@>@mF7FueA|FV$ij;2@CNFF8C}`4NfhD9lta7b(BvQPFJm%v z1ghYq@mroN9ob` ze~!_5KsS*CkYY(gC%~Sw54tJ7K;oH*J-OmrBN;=F9r!V0o?AC^`thH7QwD=z1GF}L zcx!8-yt>9Ft~f5_y^xhWfHHh4DL!h;lwaYo6k-Etqj8VnU@B--CWn)=-BnXJj<;F#<{j8-0%0>z`De*i7&O5=+4~6AnS3JA)vi^Wu2=^x-vxx7icEa>$5r6kGrQc z@}t8`bf3n$!$4p+H5c){?qUT>0^36bpF3&9jO7(SiF2CiUb1LhVIVlU2EUFflv0Uh$Dgi4BHO(_I(lX%C0O z3LV{oW*;dXm_{w86f= z=~WmVP|$w@Qjz1yu=UGPf(mCemI)lIJpoYms|e~)$N`w&ooMaVex;V6LH6?EOQ_Cr zQkN>elQ)9{cgcgCTx=#3vOK~ha^cOuZ1#}4(0kRh_-3baIe?D!+W`|5?kWlFg@^Kd znDSiJh4G4-sBQX>euM%QV@*tDW()whRHJr$$Hmk@a2B2UP1RR`Wc!V5Xi`nowwCk5 zIWz<7!{vi#Ugk-ZZlw>^Fh#4WOeuNs>4%Bl3tJmC{jI^; zDf0U?Nmn*0lf`=it@iIlPhpg57$W)j>eR@ijifBm&CCUomhLQ$GOKD|&lG(?gVq~u z)ramMxX9#B+xjjz+RGouH}P8CTL(jSo2)6xwZ9IJ6S=9{c7cd!>;=HvW}XcB#z`ed z{nrBY=x?Nq9+&co7TBbyyugRY*guTH9+DIll*IT>{w&?6zG`gghtGP@6*BNV694q0 z@X+Lv=K7i}=?72ifn+^YkF1EBrO;`Yj!%?d(N-_|YP9~|?;z)ZrM&f#U+VC)+d!VL z6zh62e*p-hnNRye{o|o#8Z^I<%}D?CQhpBpt)HS8C5fn^@&^NV^J7^DB2?cuC(El_ z2l!mTP#QAA8)LY-BsCYZ6O?aS67Nx&{2z&Y^|U=+5&&=AW#BpojhUfH!N%HOa z?k%b=X(l3;rJF{1PUiI`^q0B8Hh)zjGL*FZh7lb2P&&QU8-w-+I$mn-i~clK=;Hu* z^ITHS>Ckw!SIm%@70Fo`@TZui&HUYHk-%+&?J)yj0z=e|& zmlaC^La~;ahAyH$(hRb>p;|=uUAfD#+@FeLA!|#HmblYtD=`Wu)piraB+?9{&=Lk_y5E_peema;&W={`A}(EvKB(YNvE( zKxlB#NDmmVp zxm2+*E^QB7#KrTsQnrTCryfe1^dyE*ahMmW* zuH%yD)VYn7hu8=v0p2QUtJXdr!O^r^jrd-E>j-ReVA0($cM|EXU*)mY#6pEs(}F9g zS4pby*0#P#Xr+bnUf)rQCuv&K-+(A|q4C@KXSK-s=ehNJ@7I%6>OCt((GHW@KD9}t z7xo^sWjryu$cq0!3RFaPfEF7&cRyap=(U>028qm%YQ8Fx#(<$M*YEpH7Y<*8Uf!;A z(E$`mp)qdP4j|{~<)<7;sUwDZKyoZ*xRmG|+M2Y-Fkzod96 zPkfM8HWyLdqrI<33AdiEuv$WxAzFz-D=;$a#22P}p2o6%yA0jxhgw^+MXc-_&ax~& zQ$c;7f-PGSWX<#h28V=NY9$OFf^slm+Rw*828$63`JgtGSN%&@PD8mx9Y0o0KwM}X zS-?h#2-8UK`N?|)Tk`Hzv=8ppTtoU@fWd0`p)~!QKSm#rqd8gv2St|lni(vvX|6B8 z?W;?2!`}iXR8p27wOhLH`Fj9COCMklUhT(k?RTbUfbUg@x0q)@J;}_5XfbpZk`pvy z1A>_WD*6!ze+6|w>A-o9+oBhUO#HG@k+{t|bvg7RS`(GlXj)^dIvgtq3`iRf_dc~v zf3=P3cJqAq;7qGZ`7>^~b~rHxrE)}HbGoNGMUTnf1A+hSS@U++>St1&&Cnq|5&sVh zmR<+ky^gvs(n|!JLpi}23#3a}j0AWlq2TCu6s*wKDrn^kk+*JM-6N-jQoXcWlwUSR znDAn7lNAn}%?WEbth_R`d zNi@&*4IW|Zv$xLQKu~9A=B6GS87PDVTTuU?VVlLi=K;<4w0W8UGZUm^gX*P;y6 zmMksd)T`kfn<79mf1H}+ji!kJ?lUZili zB{_sP56ksjimRr0`ML?-*@gLL8XwlTH9q4?R<>RVPs^!M%BJ2P$@{)fMXW`0sX)W% z_u!JpK-0!Q8)QO9g?b9#XONYsE%F!=!PlWqgiV~e(I_i z{e64)GaH~;o2&ZcpbZd+n3=nhc-vj@)x+Y{FDz`sv8|={8z{=7kTspd7vt4%UM;iu zuT1+Qdgt?OCcS>Z0 zdr4c5Ed$1(xC~@jwVNvWtLDz~=5a#di9$~j)y@E?N84Npfd;7|20$}H_GFBvB(`FU z7_#PgI4VvJv^}5kcyd%NK@Fuc+NM0a%wzNov9zHnEmR6`@YJoX#|j@(#iN5o&8)qx zWP)!6jMOU_sA{0py-50v9+raj+~|7zyCodgE<(4TWcA17;KQcb7Ce%e)yEn7va~&k+s3=+96foOURvvP?XG>XA^Jo?UnSdM*boBk z)T)U7|1+mpwp6pM%=h6sjx?cE z2Lj*K7I{nOJE;(yn;wF{vI38*7TO@@i=ixn44YEWW|_`tPDeCmabn)K$^_z}tEC%S%FL<-nXP+vu(@D?r5EXPXJrgSDz!+`cE+ENH# zH#gAvm2wfaLIp)*!u(CUVoEC2uH#b+s8Yp`wrq$cYR2E^w14Iw zVt+P`{sX4-DTxL7|Ff9E;cQBa4?Vur)<4^p$RysK9XsF-P zyxu4ZE+Ujyaa4`+Tu&})+DL+oLI>9~c{U1@_iz{qROzwuN4Lsa`?t&IJo#mC*0C+% zj7P5pTgtI>Wv8S4-h?;`eI??8A8t)Od<}mP#?<_rc?sw9tv9#zerb7%NQ+l$K!w)| z*={A#C)@x;)Q%Wh68|1^ul<`Fq*jkZUI5Ybzw+kZoNFK!6pf}U97uZr1VU=QQeB8VFy zmPt}g*JXkFKi88ujIp6k5K2IGGSE+5x+P9%D6p;`TgMGjTrB5{!Epq7Y|DJH%Dx<1 z%0~-XO#HrAW=^ELVwR>`8(HaJ>t{z@e+r*VHr))$+pt_zTwMT8aj7-Xil`owv_dbK z<=$EQqCS&w#>We@_Vi=z{nC6g#d1Fmy@Y%8ZrL^Hltyn70jZlT6GfZD4h>Bn@8plG z*blOcr{%6^*LuY9K9Uu_=EF`l<^sh76-TXaRD5ZrM(|6J)o4w>>>9={!7T_=5io-J zevqQwJBq9r6<_mcw^sOAd%;6PT0;L|_hi|K%r2>td&Lz<6k4`?0{2KH@)%iND5Hz8 zXO0)HdV4giWH|Ge9WlUrePFaq(BtVN5%`ydp(agQ$F4^!r?#ok{;R|Dv@u8@-fp_< zrxNH;ie%0-C(DA=Q+RDBjd{yq+DOC1E;x~h5K6u|ME z0^hR!o2zyoKn$*jbO851R9V(VwP6F)?0fteUY;%BWt z3W7@!uc{vOYj7{|+gS8a<=DFlV};JWZnE@u?}m}|0bKm5d))5O+iPU zYiA2g3CYd2=RlQS`iVh?oCQxma*LMra?RAot&Y9kxsl)zd}73pqde z+*FzTkBy+)+dzR?yi8#czI*uTKuhf3TAAOY*MlHSX`OulL3S_#c%eT0yRbHTG#qY^ z>uL;JxGpVt5%e!#qPS1@7}Peg=TjVt$OZ zT-MVYTZb_Y;O>chLA{)Ry}LhDGsvguP~lO>r-)O1WnJU$gS#c#G8xr{W9(~JAB>K> zVQU6zPh)&*cQGAe$*kQjB5&+dXSt=xopdPjW{_QtF7?uZkjm@AaBP= z)ZAB5NOV-^yZ%RaRAQ{wuibm@?Qy$(Fz4>_9Rq_rMO=%$a|~Hsb%+?$@7;}I&bWt5 zugyQn$jNt{vuTC1V}77nF2L2pb!e@kTs#a{Qxd?7vxelTRqaX%s=#nWZC4O* zL5lCS?CF@zFZrXA>8*&28x9vtU^YQ2SZ;wL4pPj{^w%bR3M7?JJv zH#ZCv+FE?v+~5z1f!_lFK!1g2|E`faQ8FBI&hgkJ}ato_Dp(Z)y2P!ejvzn z{sdLHMbn#8pQpQTBgH|LUhviH47P$yx-K)PDc$WJwCZ8WX(bi>B(|!f4~5TJtRA~H z;&Wh1FtJ}4BONyTf)*P#|6-818~c+GD0d>ChOKRXw42)L8Q`uM212T`cIs(X#QVjw$NPXdF{e>1xt&4n=TtbjsWZ-g6y3+UJXPsxMMU{C zg%Mf%*0O1P1MAhphz+w>-|KJ;r^VQ;&&-&Y`UVq+j|LUrB{bdR7u@CwZJRM;YbEAL zmwQhKI{gp`sxZC35?!A183_ZAJfoZ#uBFFLzaGf79yaeg9~wUw)=l#c*TfR;B?&KB z%p7yb<=hY4dSudx@-5v)3DqG^zqw4jlVC^HZg=U>_`Ss5_&C5ZH0_wt{tCVG+m-{oC*AMN72EpGo--$X1vdHne$bdurNww#+rPfB96cDzOp0iYuMoXl zb~^K;I5XQGnP)=cssrz7a=zs^%i8fyyVxdrsqV_XcS1nlkyVID@I-CT&(1+rO525{ z_xbtagSFe${7=VLtewzlr+$JqjX1heQi6f0TxOgjnA~WJ`deDqt;p zhnDKZN=U`{IR;SGtFlG+a4v6ZVOu1|*@rqyE-5AeUJ8E^O>I{>^!GC5%u6RfR^O~h zp8?abX?ZnNtJ2nr@l?mpf;3xH^2*}jHf1F8{5>WX!g@4Mg{x(&RB1lw)KS;eqPHf| z4e?Qg<+p$K0{o9E)h5M=2lrT+Ne8V{`uHVXAx#=WvUpWVYI6O*7j`Z6r4vfyo50sf2Gt5+`c zdr|sb|NG?*GBBuuOY>_yT$o0i)`uD95D(?INhxF|V|o+S--b39 zSwEepO0WC)zog}VqV1riEw!#W_vWv-o;)`=y{cVAoT|PMs-?rMv#X&llONKNRLq}jdb@TNZ7a3-@F=Ja?=52ZVnGf7%DH{+RN?3Jt;x*zBc_9C&NXYVY z^I~@^HjXID%Cl*Xn1!yf`WXDM_P$8_XmvS#O*|*PTYNeZmQ{je^u3+pswh2s>=`c- zS>c!-EGO-1i2bA4?U*>AY8$ID$JbMG3#PVIEggK(Q9tQ`!bkn6OFVV83D>+ht)a|$ zN51-Opv)^hy)(`8HB2*m+dgJeS8>u3QNjxEu6qktZT#F<0f3mTLT=fC3(bcYko$s_ z<@{&+6Yb?yY%b7Jtx7{$))r$8#NrvL4}8bBRN^Duf4*Z`XjcR#?e`fF|FeKsxg&wj z)1x|Z_95XsqUCSQYz~&gbjQFx(wuPW#6)xQnRj2jLAUuPjckM8+8_x3d}q~R$*5Zi zF4#b6L>tBKcV0z_|Cp-)b-HTe{)^+!u?mXn#xXJg*0B-?v~0^C|A|^Nd;ElKxq(nY z>zf31w^K(LnNP_r%*^eiPp=0brVDwk@oqJ5i;OE6HG9wdV!$Uc1heOlI9BgKhs{O<#$#+?q83#$EJVJ{<+lR@#Xw&@rjV^&>~Ck#%8fA_SokH{j!hQ2n@= z$SwrmWGC^501wveFYEWLW(B3C?R@K>Vq(gRuY&Fq55H zVwH@tKqTAJh>!gn+at`tsKWDa z10>!kdOY(261j412kl^BP|IOuT;p}_h2T_izUL6=^uk__Kc1VUQ8FE2y#JzW3`e_O5YcRO)KIw4a@2V7E0RYgN zf&4SK?WSM7d02u@7m*5z-*bX>0YDP=i#$#`uPRSDoku;5nuHZg&1F__?E#)RCYqg%y(QaNuy0>J6%cQxr>V5_w0(!n-+Mpi0@c&lHp zQ=W*IJ&I)Ga>i68J|OlSD$>j4NETiY7|I!u0{NA`^W@}CrVGq*aS{6+^?z9o*v=mN z^CqKzugjH0yi<(u0?4*rkbfmBpMY`DuZewTF%`WBzX^;kKW22VKkDt(=J--1&@hW5 z|Mh95%>hi|@~5c1JfI8Do<7Rr^Vk0vW#Qz?@C8g8Dy;g#hl8XQ6Q~#em5Cl00;#X@<=HI7t=kgU?&%=_ zX_PTpg9#mkWI_UI>_o3cDCiKpDEmA91&3`s!?po)F>!~Y1*A|G(D+}f*Y#C^G#xY6 zdBi?^D?`2(0PBdnMQJCv9b)@2w34`R**PpUr}C+xp8-fOj18*D`#{@KBWODcn0|SdeU9Fk zy=VfQ?0%{D-$Cc=FHm8hTRwk`d4@iRVBh%qpf+G#;a`LRIl;Toxb^$23NYb_q0%@f z+bN@UV%8(0k})#{f;8n`plW;jSwM11H(Y(1fz6N4tNc?iRG(e~`3Wj{ei{tc@$F0B z&nV6Za&$e^8#j-k0HJv?-8KoO#qapXrLKs#U{|}pny6;UXRG|Q+gQbvXT02WJoGjV zB|cwbx|EN*$9TIkJ6$-Qko|ksqm{+nj<9*=Yne53+QSV5vMzWRQ^plKs`**wfAzB5 z2WR-#5xqld!SsgbFXAUVppDccd-$zoB^(q<@&Pq}s@O9RBoeWv+19#QYqEP}96j_!QY+O9`4$nNVK@v% zRCz5qzWLTY3ve0Qkero3_u6IvG{on{|K&_iNQQQI4)WGhz(AM8 zB$iJAP5oU@7Mbk+b9Tt7o74NAZ{07I87%`Bnf0);f6*2Y8EDVnHQO98yoqU#<(L>J z`=o+98mxR5;Wc+W2Mj|bM~N3P4G-57ReFXB`Exvf%j(_-T=Js$@W!Lf7RDuqdc(b)8UudI_MJ-L>gAm;I{Eu*T2fv+5s>WtXtDx$sA%ZESC~& zrpUl3&VNwGwp$Z~0%Fk83@+S{`Pb8zZ9-mue%%Eo;UPy@f@mi(*YZ&SWA19PFp~z2 zJ!x}!e_D5ad%8k##BzP2k6BWGIqSC%?AZ0!fNW9n*+e|;0Sjr}vj101WomHhzPKyP0SS&V_D0*F9aaIiUIL~ML6y67`H^>2e zEv#V*)VJqO>p-BY<%aCYKtNEZb}51k#NO%O7;VF-ONJSgc7A4Olup<0dFti@pW9WkWTL^ zF#i7=dcRZEQZgkD<&TjKYBe#N#%g(PMiqRYEPz$(xM540B9SDQ_D0#S4u(WSa9W4e z(8Haj=MI%x_2pEO)k$_i<6Fu8cFmunjI;O9ah6ZvRo{&KYOpAj@=O&=MaUMz3dcR!zXp#WQyxLY8JNC^x`dOfpt6pjHw#R`V2;z~wxk4-=gO1G zJtZ8;T-Fa>#~}OTmsZF;L&4W5a!l$*^m&alho6Nl$iXLrhBP~v&CWbSx_)BV!>h$TH9k4u_A>u=N`)EiJfW6bf}v z(Z!h9KlSrHhp1#L|9Ah|*~_#yUWXobg76i3Ec-8#{BT2$iS8LLAN$9In%cQ0dTPf1 zZ_+H@Msr%*qUE6}{6FHMrLtSC>1Ip$C+UN8K*gDMb90VTl`F}QAa&9BovD84uN>B_ z0;bsg?FcG$qB**@J2}xB+c5Au&L$wcuxnR#1UU)um?$bR_*h`T29m@2NjxEsLKeE@ zdpJOk@gA(`4!A^p<^b-D`@q51N*)Bx!DIF=)Qjf>0TW~~PenB~B(5YF`s-=vpAW2W z%*JlQLCl;MWCH&9?*&kl@jF$>X0sbt@4hNpiLWbh-KYzaxk9f9{dinOO2XqC zC6jpFsEqz;plmdp#AU4`V1_@{u(rO@OVku4=YW4jTrr>*#%}Cac3GdGRQL0*ZynaV z`uVynKvM6^cqiHoXP3YRyRu;R^L>T62#zYA+VEmSRZUcr<`TrTd~#Hp!IqB=ivH{%Q~^Ud*2{ z*HN(vfv(pzm=_m*M0J+((i5W77Ibx|;A$0uXl+wE9m89U{)$?{4h>@)S)<&!^#tDx z&{1oWVOrY|E6t(WKfd-nj38lICXx2p?;`#N_Ao@nWBQH)eL?2a9i1zhC%K@ij^cSb|ojQ&b1};DvxPU)q9px(k z$5UnvUhN-fG7z5%t-e9O-I|S{bJ4TdDxP}b^D`hNhj^SLAEWg(Di<1as@)Ixerq&; zG-IP*Y7^308e~F^yr)YyW6mX2oT6_C8;>6PyHL@}MUzA*qz;sTX80!OpXK zzS}9}niO4H>OfSC6P8Tk2UG0IL3WsH7;b-C4;PWv|M`gh)l4syaRgPJ9HD5EU3Kqw zUhhJtAZ))7MHkyXopJ^F2#-wd!cqTtA$hc2ZG``HTKsMXwdlv5_&VP6{@#-A!HWc~Ha6Llw)QrGqrpn{1^zbc_K5EVVKTmE!nU+UF&c1%>B@ z(a|YxL%emf{1t*z%6(C?x+*4I$H}wA0JH3@YOAZ~==vMLQ?f-h3ZgwLPEY#;CWx?H zZ#Y~}HommrKHd;Z+FWYoz;TYoF_T_!;V=P9fqpf5m+qKr(tQV%{V!_zkH&Vxec*or zk9QMAfQn}RHCuJCu}y_&kxF{cb3uF8+`9>W^>F(AKI3oz^BJTb1Y;G;r3YDZK=SCR zg!$kF{%<9Rk2iK>#SD_eXLV8%=w=@D8S?@lm8ua71AHsBV~RHLEr(Sig4LFq6vFY2 z>JRxZ`hJ6z+`W0z3?pw}cVKH{^csC|&1L9+()#p^!>_JY|B23PKXH7XRd3wn%kn>7 zODpjZrbn5fmRJ}N>+k;-Wda%;m6QGw+2l*0mO6xKqTaT z{Llem;b6ZiL4fjPYO_Hj2QxA0&x5GyG|<)1Fy0IbaL7$|OTT)DA1apnHuas*%!9lkh?Pu#Fs4Ae zrPQ_#MbQ+s=G$mlY&KlAJ|>=X@%Q_&nCk!_Hv21p?f?^WgQRAlT_@!W2Gs%U-9OKO z!~6s$Rd(ZWrad>`y)PHh?(BkF|@wIjO{L3=>{L5!XfKihh zkKUZ|c$^1DrQ&{#5hYA>tcA&gel~Z21dQ>N=7~KM(tRDaP!}y~a5RlBw8#HbXlpMw za1P4`1l|b(Q=-;o#v%+Vh3Y}8o@jlGpXlafDQSVj{<>^X%8h>fmsX4r54MjT%4@!t zm3??T_0p}E0A|?>1nEx@UaJU9$b=jX`8;UEHt3`4*V;m^-|PQzAXvMIKaDQ54u)W6 zB6Xs~+m~P)!%Xb+4JWd)kMPEWeB_&>>Dv$BjLU}wwQ2S^a_ps=jxGynY-G7r!lh;WZ(g?#WMpQ~tMn z?|?K&!^rJlTKroznQ`iR+ayL#;KGg`1HoN zXfWUP+blO|`_VJe1yKVF=*4%~^%}&Mhd~R>{)le?N{TvDP@Si~$XXeLx%{`VCK>-87<3+));7#?N(EbPagrcmpk{?>Jgy8S^uHH&zT`$1nPY97Ze0}hkijnANur* z%Tb#UmIZ-MSu&X4_m8{WHW_H}4p)5p!Tnxv-yG}Rs;-pBZmF26wI8E8_w~Eo>RfNw zb$V{7b@}0c1~tb`Ur2;@5Au*wa*}x~{cX<^8Lcb*jew_% zvW8#%EExS@`PD@$ls-DCWOU+0c?x>1Qe89#tMc#+JST2ZdViJlkW8Z)*k%^>SJ37T z#|KWxJs(N*(7f9H)sADDt*h_oeOkypyTK?{ShPBt%vOq8MOAYfxG{lNtCt?TFniAA zMjU%OHcNz6s4Pq$HIZpF{@r(WROsw;!~z3_s))1Z6o7k>1*D0b^S% zO4xJkxo+LN3z5gSIlQY7qK(HJf%w6bg~b%=YM+SN=Fdj?n@z)qODD~uB8sW=n>g34 zS+r>lELxBPeSj!%u-oh`c3MT1Pvk={ctxL%&g$>CGj=j4kPLxMKUV>V*;M%9-F+aa zq`%e}e-wc}v(Te=%#(dZ*e`V^COl#eWdk->~`JH!(#;>i7MC9}05SH6FfL zu?70Q9`{|KJE3y$uo|$!XnK3??Em5IJ)@%BmbFo70TEP^faDAkTR}i1gV;!vEU8gR zB1wr&ZbU>;auN|xqGZXb2_|xooP&~clO^BzHm-g4*?aACzcJ2t?~gUsu)Bfz&RO-; zQ%_aR9v>>PndFw)y{(!k>2AJ{xFG*mF92ovBU!(;c(H~~1hdKY=Y3`|1$lMs3kE%Jw)q_ijJA)$vZXXVTF(ahqT4R(Z5! z6XW)8DNGOMi^n=f_r{Y#&zhaNu#-DDKt5jX;yALgIe=Q9)+~6k*e>vUJFY~Ex^0Xp zU&c%OT>(m4wa_2Qg|r1%$v#x*4FW;{g6E&pfMFQ>*;7E<9G21r8!`yW*)5i)bh^E` zEfC2vT2Yxewpx{(n96FdKU`_u9<{w)IJl`y{7ik0ML;Kw=rS>z;vKS2UJtDD_gVu85oFgVJ+K?AW+52Xlqbr=W!Gis_)>!j8@MRFY0J zo6x?*$h!;*KBvrWg6o@K%!#-S8}sB=Ov;B_!^8_J!6k)coFv)mKIqr^Lf*Rk@B zf)V_S8xLPnVk08^qiSL;5vrn@dP5$3uu%XHA2YJv(X&K^vNSJq7#DOKb%}k=EQ2H_ zIdjw=XETN0mt(*l$l&;5srLAYow@Z4J9ti2Ay}fyofuIC@Pt>1P}@^%7jLuSIUtN= z+mCl|8kE^#fwv|V>8cx%9bXzm@m2l&+_~OhMW}Mfbfe6q=CCtYOTTyVT0gIQ|B-tR zzkwe0icjZN2?lq;ZNuI>Q!hL+jWtZFZe_JlGDpTY-z^qlN29Ik+xn11s1+f9^lS)a zF3TxAB3bYRpW@Npr3-L50ww=2hq@E3@=RgGYS(=3lqv4Jy)7^uY>FG&(LAiuHMQD7Rs)Xu#Y71xhgky*W{Pi z_UF@vQ&r5vbY-LKYTwtlD<6n&p{aR(B;9kIjyeTHs;_}ECBCGa5;=C{Nir4wA5(Cp zyh45o96&oyC-4DR3fa0MVR%JQ^VIGuaPzV4RXF&d-w1fQMc`PqEd*_KOOF7f_=>to z1zyduG27u5qN?~s*er8>G)p&oYC6_5CM4uS#dbh#(Eaa!uigS-x&#zeB!L30B6-K4nQfP1t^zJwJ{v=C`!V$c2husUI48D&Ic4 zWdLov?g(wtIpDVs!1KI&NN{4)kVUHEpZX_529MRMl9w#xe#AC0&1=+30zUZPvFZF- zlu8VLctivR;>)n-YIRy+q1MyS?+4#YFQt7MUFgl8j@Czpg9#QT7Z(v2l6W6L11JB# zo9weYFr#iQh$A;dE1J{A?E9BiNxgNK^5@l#zx-Ud=8wK4wfjP zUi=hb6y(Eo_Ao9Ou%l6N&Kuxg>cFX7XE^mW<0O5_v5wIKGXda(VMgHPis_`xL2_(s z<1J#;4S7w?aMgqxy4xd88nj~e@1kO367NP1?QCbXw{H8Cdy_R-EQX@t|` zT3(R1@IsYEerAHuhtdY=AJV}@cpXMB0ba*y{BO@Zmx}~|f zl?(eYKQWQX+RiQ-=#Y&Ps~GlpQ9Fw0HF+Aa56~ZOBKdbi4oB~dhT27wGX3~<&1U&r z7KVx(mRPp_5N@Adr@|2QN>@_@-MT>V(R7?e+XDOo6+JGzF zJ_o{c1(70!MqL&54dZ%+b}53O>UWy*?zV~9*VSc_Tf|2sD9k<<2@$fp1|g3}BkVA4Duc`S5SV zD8$N`piISMr{8Y|?np=pZd1x6U2f^438Z;4+ECWavrnqi^s2hX!zkfkc?(a|-q|AG zDQD?%|6socMX(|~_$P35^#RO%t2;5d@bDcms+T_1mNwy-(n5}fa--#gE#a~z#09%j z(#lXa`MM3gLIB*;l>b|{GD?K{5Kcl&{4V8ThDMU0cDiafP>Ymq-+npwq~!Z|e_v92 z>X#kq{Lg-0}InD{~AQ zMy95#BfOKqDCCiIqOUHCRd0GW-HEQs%M-M=w|6y{pjs`pAH88)QiURCpGb>A08GUE zJ89J-#};d(-p#13F~1+_wf!xfm1KX-KV^E`iZJxOH`Zp+yz5P3`6*Ems%D;JVex}O z3+`)88KKNK(&;^pT^6tJHW*E-cY9~JHLvCk%%#)Y3Eez}2Uob~bZsfPY>cx_!0xP7 z?bL{{`O@4FgQ8VOF~lODD*XxNWLLOxyd`cUog1HJ!W4l2QJXg=Iv$D%0}9YK9oz

N-&EIJ(b2DKs2a=d4;;S;1!e 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ⅅ2q#b=iO)6>@jH^s2sy^Shi}x79fA)D7n<>TJ}HJ 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

~ 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�~1*blyH%A}P)5tV?5Cx`ic|t*zg=v%G4ECJM#% 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

*=->Qr1X`6iOS7f(2 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 R5C;BTP}4q_d&cVC{{cg)^tJ#1 literal 0 HcmV?d00001 diff --git a/internal/storage/raft/backend.go b/internal/storage/raft/backend.go index 387e35973c710..4e1cd05bbb18a 100644 --- a/internal/storage/raft/backend.go +++ b/internal/storage/raft/backend.go @@ -44,6 +44,9 @@ import ( // intended to communicate over Consul's multiplexed server port (which handles // TLS). // +// For more information, see here: +// https://github.com/hashicorp/consul/tree/main/docs/resources#raft-storage-backend +// // You must call Run before using the backend. func NewBackend(h Handle, l hclog.Logger) (*Backend, error) { s, err := inmem.NewStore() diff --git a/proto-public/pbresource/resource.pb.go b/proto-public/pbresource/resource.pb.go index 76bf1be45c562..4a46d1ea8bdf7 100644 --- a/proto-public/pbresource/resource.pb.go +++ b/proto-public/pbresource/resource.pb.go @@ -7,6 +7,8 @@ // protoc (unknown) // source: pbresource/resource.proto +// For more information, see: https://github.com/hashicorp/consul/tree/main/docs/resources + package pbresource import ( diff --git a/proto-public/pbresource/resource.proto b/proto-public/pbresource/resource.proto index 038f96c7a5bd0..9e65647587b76 100644 --- a/proto-public/pbresource/resource.proto +++ b/proto-public/pbresource/resource.proto @@ -3,6 +3,7 @@ syntax = "proto3"; +// For more information, see: https://github.com/hashicorp/consul/tree/main/docs/resources package hashicorp.consul.resource; import "annotations/ratelimit/ratelimit.proto"; From 0a38fc1a2a9589963fc86fcf915385f36ad9e7eb Mon Sep 17 00:00:00 2001 From: Dan Upton Date: Mon, 15 May 2023 12:35:10 +0100 Subject: [PATCH 08/12] resource: handle `ErrWatchClosed` in `WatchList` endpoint (#17289) --- agent/grpc-external/services/resource/watch.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/agent/grpc-external/services/resource/watch.go b/agent/grpc-external/services/resource/watch.go index 2fd943a6c946a..35ec14513ac37 100644 --- a/agent/grpc-external/services/resource/watch.go +++ b/agent/grpc-external/services/resource/watch.go @@ -4,6 +4,8 @@ package resource import ( + "errors" + "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -51,7 +53,10 @@ func (s *Server) WatchList(req *pbresource.WatchListRequest, stream pbresource.R for { event, err := watch.Next(stream.Context()) - if err != nil { + switch { + case errors.Is(err, storage.ErrWatchClosed): + return status.Error(codes.Aborted, "watch closed by the storage backend (possibly due to snapshot restoration)") + case err != nil: return status.Errorf(codes.Internal, "failed next: %v", err) } From 17f06b88081de742a5ee652050396ce41b0e8224 Mon Sep 17 00:00:00 2001 From: cskh Date: Mon, 15 May 2023 09:33:05 -0400 Subject: [PATCH 09/12] upgrade test: fix on-the-fly-image build and downsize runner (#17331) --- .github/workflows/test-integrations.yml | 6 ++++-- .../test/upgrade/ingress_gateway_sds_test.go | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-integrations.yml b/.github/workflows/test-integrations.yml index ccafc68a69681..e75e9df2a4ea4 100644 --- a/.github/workflows/test-integrations.yml +++ b/.github/workflows/test-integrations.yml @@ -514,7 +514,7 @@ jobs: } >> "$GITHUB_OUTPUT" upgrade-integration-test: - runs-on: ${{ fromJSON(needs.setup.outputs.compute-xl) }} + runs-on: ${{ fromJSON(needs.setup.outputs.compute-large) }} needs: - setup - dev-build @@ -548,6 +548,8 @@ jobs: run: docker build -t consul-envoy:latest-version --build-arg CONSUL_IMAGE=docker.mirror.hashicorp.services/${{ env.CONSUL_LATEST_IMAGE_NAME }}:${{ env.CONSUL_LATEST_VERSION }} --build-arg ENVOY_VERSION=${{ env.ENVOY_VERSION }} -f ./test/integration/consul-container/assets/Dockerfile-consul-envoy ./test/integration/consul-container/assets - name: Build consul-envoy:target-version image run: docker build -t consul-envoy:target-version --build-arg CONSUL_IMAGE=${{ env.CONSUL_LATEST_IMAGE_NAME }}:local --build-arg ENVOY_VERSION=${{ env.ENVOY_VERSION }} -f ./test/integration/consul-container/assets/Dockerfile-consul-envoy ./test/integration/consul-container/assets + - name: Build sds image + run: docker build -t consul-sds-server ./test/integration/connect/envoy/test-sds-server/ - name: Configure GH workaround for ipv6 loopback if: ${{ !endsWith(github.repository, '-enterprise') }} run: | @@ -566,7 +568,7 @@ jobs: --raw-command \ --format=short-verbose \ --debug \ - --rerun-fails=3 \ + --rerun-fails=2 \ --packages="./..." \ -- \ go test \ diff --git a/test/integration/consul-container/test/upgrade/ingress_gateway_sds_test.go b/test/integration/consul-container/test/upgrade/ingress_gateway_sds_test.go index 52ee91bac8fcc..c31f8007b2e3f 100644 --- a/test/integration/consul-container/test/upgrade/ingress_gateway_sds_test.go +++ b/test/integration/consul-container/test/upgrade/ingress_gateway_sds_test.go @@ -22,6 +22,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/testcontainers/testcontainers-go" + "github.com/testcontainers/testcontainers-go/wait" ) const sdsServerPort = 1234 @@ -313,10 +314,8 @@ func createSDSServer(t *testing.T, cluster *libcluster.Cluster) (containerName s _, err = testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ Started: true, ContainerRequest: testcontainers.ContainerRequest{ - FromDockerfile: testcontainers.FromDockerfile{ - Context: sdsServerFilesPath, - }, - Name: containerName, + Image: "consul-sds-server", + Name: containerName, Networks: []string{ cluster.NetworkName, }, @@ -332,6 +331,7 @@ func createSDSServer(t *testing.T, cluster *libcluster.Cluster) (containerName s ReadOnly: true, }, }, + WaitingFor: wait.ForLog("").WithStartupTimeout(60 * time.Second), }, }) require.NoError(t, err, "create SDS server container") From d37572bd442b1bd9f5e92778c83718ff14e87df3 Mon Sep 17 00:00:00 2001 From: Matt Keeler Date: Mon, 15 May 2023 09:55:03 -0400 Subject: [PATCH 10/12] Add a Node health controller (#17214) This will aggregate all HealthStatus objects owned by the Node and update the status of the Node with an overall health. --- agent/consul/server.go | 2 + internal/catalog/exports.go | 8 + .../controllers/nodehealth/controller.go | 120 ++++++ .../controllers/nodehealth/controller_test.go | 365 ++++++++++++++++++ .../internal/controllers/nodehealth/status.go | 12 + .../catalog/internal/controllers/register.go | 13 + internal/controller/api.go | 23 ++ internal/controller/api_test.go | 74 ++++ internal/resource/resourcetest/builder.go | 136 +++++++ 9 files changed, 753 insertions(+) create mode 100644 internal/catalog/internal/controllers/nodehealth/controller.go create mode 100644 internal/catalog/internal/controllers/nodehealth/controller_test.go create mode 100644 internal/catalog/internal/controllers/nodehealth/status.go create mode 100644 internal/catalog/internal/controllers/register.go create mode 100644 internal/resource/resourcetest/builder.go diff --git a/agent/consul/server.go b/agent/consul/server.go index d3c3044121b79..46adbd9955c5c 100644 --- a/agent/consul/server.go +++ b/agent/consul/server.go @@ -844,6 +844,8 @@ func NewServer(config *Config, flat Deps, externalGRPCServer *grpc.Server, incom func (s *Server) registerResources() { catalog.RegisterTypes(s.typeRegistry) + catalog.RegisterControllers(s.controllerManager) + mesh.RegisterTypes(s.typeRegistry) reaper.RegisterControllers(s.controllerManager) diff --git a/internal/catalog/exports.go b/internal/catalog/exports.go index 4f3ddb6a9d8d7..39d6c44e66596 100644 --- a/internal/catalog/exports.go +++ b/internal/catalog/exports.go @@ -4,7 +4,9 @@ package catalog import ( + "github.com/hashicorp/consul/internal/catalog/internal/controllers" "github.com/hashicorp/consul/internal/catalog/internal/types" + "github.com/hashicorp/consul/internal/controller" "github.com/hashicorp/consul/internal/resource" ) @@ -43,3 +45,9 @@ var ( func RegisterTypes(r resource.Registry) { types.Register(r) } + +// RegisterControllers registers controllers for the catalog types with +// the given controller Manager. +func RegisterControllers(mgr *controller.Manager) { + controllers.Register(mgr) +} diff --git a/internal/catalog/internal/controllers/nodehealth/controller.go b/internal/catalog/internal/controllers/nodehealth/controller.go new file mode 100644 index 0000000000000..342eed02e84fb --- /dev/null +++ b/internal/catalog/internal/controllers/nodehealth/controller.go @@ -0,0 +1,120 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package nodehealth + +import ( + "context" + "fmt" + + "github.com/hashicorp/consul/internal/catalog/internal/types" + "github.com/hashicorp/consul/internal/controller" + "github.com/hashicorp/consul/internal/resource" + pbcatalog "github.com/hashicorp/consul/proto-public/pbcatalog/v1alpha1" + "github.com/hashicorp/consul/proto-public/pbresource" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func NodeHealthController() controller.Controller { + return controller.ForType(types.NodeType). + WithWatch(types.HealthStatusType, controller.MapOwnerFiltered(types.NodeType)). + WithReconciler(&nodeHealthReconciler{}) +} + +type nodeHealthReconciler struct{} + +func (r *nodeHealthReconciler) Reconcile(ctx context.Context, rt controller.Runtime, req controller.Request) error { + // The runtime is passed by value so replacing it here for the remaineder of this + // reconciliation request processing will not affect future invocations. + rt.Logger = rt.Logger.With("resource-id", req.ID) + + rt.Logger.Trace("reconciling node health") + + // read the node + rsp, err := rt.Client.Read(ctx, &pbresource.ReadRequest{Id: req.ID}) + switch { + case status.Code(err) == codes.NotFound: + rt.Logger.Trace("node has been deleted") + return nil + case err != nil: + rt.Logger.Error("the resource service has returned an unexpected error", "error", err) + return err + } + + res := rsp.Resource + + health, err := getNodeHealth(ctx, rt, req.ID) + if err != nil { + rt.Logger.Error("failed to calculate the nodes health", "error", err) + return err + } + + message := NodeHealthyMessage + statusState := pbresource.Condition_STATE_TRUE + if health != pbcatalog.Health_HEALTH_PASSING { + statusState = pbresource.Condition_STATE_FALSE + message = NodeUnhealthyMessage + } + + newStatus := &pbresource.Status{ + ObservedGeneration: res.Generation, + Conditions: []*pbresource.Condition{ + { + Type: StatusConditionHealthy, + State: statusState, + Reason: health.String(), + Message: message, + }, + }, + } + + if resource.EqualStatus(res.Status[StatusKey], newStatus, false) { + rt.Logger.Trace("resources node health status is unchanged", "health", health.String()) + return nil + } + + _, err = rt.Client.WriteStatus(ctx, &pbresource.WriteStatusRequest{ + Id: res.Id, + Key: StatusKey, + Status: newStatus, + }) + + if err != nil { + rt.Logger.Error("error encountered when attempting to update the resources node health status", "error", err) + return err + } + + rt.Logger.Trace("resources node health status was updated", "health", health.String()) + return nil +} + +func getNodeHealth(ctx context.Context, rt controller.Runtime, nodeRef *pbresource.ID) (pbcatalog.Health, error) { + rsp, err := rt.Client.ListByOwner(ctx, &pbresource.ListByOwnerRequest{ + Owner: nodeRef, + }) + + if err != nil { + return pbcatalog.Health_HEALTH_CRITICAL, err + } + + health := pbcatalog.Health_HEALTH_PASSING + + for _, res := range rsp.Resources { + if resource.EqualType(res.Id.Type, types.HealthStatusType) { + var hs pbcatalog.HealthStatus + if err := res.Data.UnmarshalTo(&hs); err != nil { + // This should be impossible as the resource service + type validations the + // catalog is performing will ensure that no data gets written where unmarshalling + // to this type will error. + return pbcatalog.Health_HEALTH_CRITICAL, fmt.Errorf("error unmarshalling health status data: %w", err) + } + + if hs.Status > health { + health = hs.Status + } + } + } + + return health, nil +} diff --git a/internal/catalog/internal/controllers/nodehealth/controller_test.go b/internal/catalog/internal/controllers/nodehealth/controller_test.go new file mode 100644 index 0000000000000..8150fe0bdda3a --- /dev/null +++ b/internal/catalog/internal/controllers/nodehealth/controller_test.go @@ -0,0 +1,365 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package nodehealth + +import ( + "context" + "fmt" + "testing" + + svctest "github.com/hashicorp/consul/agent/grpc-external/services/resource/testing" + "github.com/hashicorp/consul/internal/catalog/internal/types" + "github.com/hashicorp/consul/internal/controller" + "github.com/hashicorp/consul/internal/resource/resourcetest" + pbcatalog "github.com/hashicorp/consul/proto-public/pbcatalog/v1alpha1" + "github.com/hashicorp/consul/proto-public/pbresource" + "github.com/hashicorp/consul/proto/private/prototest" + "github.com/hashicorp/consul/sdk/testutil" + "github.com/hashicorp/consul/sdk/testutil/retry" + "github.com/oklog/ulid/v2" + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +var ( + nodeData = &pbcatalog.Node{ + Addresses: []*pbcatalog.NodeAddress{ + { + Host: "127.0.0.1", + }, + }, + } + + dnsPolicyData = &pbcatalog.DNSPolicy{ + Workloads: &pbcatalog.WorkloadSelector{ + Prefixes: []string{""}, + }, + Weights: &pbcatalog.Weights{ + Passing: 1, + Warning: 1, + }, + } +) + +func resourceID(rtype *pbresource.Type, name string) *pbresource.ID { + return &pbresource.ID{ + Type: rtype, + Tenancy: &pbresource.Tenancy{ + Partition: "default", + Namespace: "default", + PeerName: "local", + }, + Name: name, + } +} + +type nodeHealthControllerTestSuite struct { + suite.Suite + + resourceClient pbresource.ResourceServiceClient + runtime controller.Runtime + + ctl nodeHealthReconciler + + nodeNoHealth *pbresource.ID + nodePassing *pbresource.ID + nodeWarning *pbresource.ID + nodeCritical *pbresource.ID + nodeMaintenance *pbresource.ID +} + +func (suite *nodeHealthControllerTestSuite) SetupTest() { + suite.resourceClient = svctest.RunResourceService(suite.T(), types.Register) + suite.runtime = controller.Runtime{Client: suite.resourceClient, Logger: testutil.Logger(suite.T())} + + // The rest of the setup will be to prime the resource service with some data + suite.nodeNoHealth = resourcetest.Resource(types.NodeType, "test-node-no-health"). + WithData(suite.T(), nodeData). + Write(suite.T(), suite.resourceClient).Id + + suite.nodePassing = resourcetest.Resource(types.NodeType, "test-node-passing"). + WithData(suite.T(), nodeData). + Write(suite.T(), suite.resourceClient).Id + + suite.nodeWarning = resourcetest.Resource(types.NodeType, "test-node-warning"). + WithData(suite.T(), nodeData). + Write(suite.T(), suite.resourceClient).Id + + suite.nodeCritical = resourcetest.Resource(types.NodeType, "test-node-critical"). + WithData(suite.T(), nodeData). + Write(suite.T(), suite.resourceClient).Id + + suite.nodeMaintenance = resourcetest.Resource(types.NodeType, "test-node-maintenance"). + WithData(suite.T(), nodeData). + Write(suite.T(), suite.resourceClient).Id + + nodeHealthDesiredStatus := map[string]pbcatalog.Health{ + suite.nodePassing.Name: pbcatalog.Health_HEALTH_PASSING, + suite.nodeWarning.Name: pbcatalog.Health_HEALTH_WARNING, + suite.nodeCritical.Name: pbcatalog.Health_HEALTH_CRITICAL, + suite.nodeMaintenance.Name: pbcatalog.Health_HEALTH_MAINTENANCE, + } + + // In order to exercise the behavior to ensure that its not a last-status-wins sort of thing + // we are strategically naming health statuses so that they will be returned in an order with + // the most precedent status being in the middle of the list. This will ensure that statuses + // seen later can overide a previous status and that statuses seen later do not override if + // they would lower the overall status such as going from critical -> warning. + precedenceHealth := []pbcatalog.Health{ + pbcatalog.Health_HEALTH_PASSING, + pbcatalog.Health_HEALTH_WARNING, + pbcatalog.Health_HEALTH_CRITICAL, + pbcatalog.Health_HEALTH_MAINTENANCE, + pbcatalog.Health_HEALTH_CRITICAL, + pbcatalog.Health_HEALTH_WARNING, + pbcatalog.Health_HEALTH_PASSING, + } + + for _, node := range []*pbresource.ID{suite.nodePassing, suite.nodeWarning, suite.nodeCritical, suite.nodeMaintenance} { + for idx, health := range precedenceHealth { + if nodeHealthDesiredStatus[node.Name] >= health { + resourcetest.Resource(types.HealthStatusType, fmt.Sprintf("test-check-%s-%d", node.Name, idx)). + WithData(suite.T(), &pbcatalog.HealthStatus{Type: "tcp", Status: health}). + WithOwner(node). + Write(suite.T(), suite.resourceClient) + } + } + } + + // create a DNSPolicy to be owned by the node. The type doesn't really matter it just needs + // to be something that doesn't care about its owner. All we want to prove is that we are + // filtering out non-HealthStatus types appropriately. + resourcetest.Resource(types.DNSPolicyType, "test-policy"). + WithData(suite.T(), dnsPolicyData). + WithOwner(suite.nodeNoHealth). + Write(suite.T(), suite.resourceClient) +} + +func (suite *nodeHealthControllerTestSuite) TestGetNodeHealthListError() { + // This resource id references a resource type that will not be + // registered with the resource service. The ListByOwner call + // should produce an InvalidArgument error. This test is meant + // to validate how that error is handled (its propagated back + // to the caller) + ref := resourceID( + &pbresource.Type{Group: "not", GroupVersion: "v1", Kind: "found"}, + "irrelevant", + ) + health, err := getNodeHealth(context.Background(), suite.runtime, ref) + require.Equal(suite.T(), pbcatalog.Health_HEALTH_CRITICAL, health) + require.Error(suite.T(), err) + require.Equal(suite.T(), codes.InvalidArgument, status.Code(err)) +} + +func (suite *nodeHealthControllerTestSuite) TestGetNodeHealthNoNode() { + // This test is meant to ensure that when the node doesn't exist + // no error is returned but also no data is. The default passing + // status should then be returned in the same manner as the node + // existing but with no associated HealthStatus resources. + ref := resourceID(types.NodeType, "foo") + ref.Uid = ulid.Make().String() + health, err := getNodeHealth(context.Background(), suite.runtime, ref) + + require.NoError(suite.T(), err) + require.Equal(suite.T(), pbcatalog.Health_HEALTH_PASSING, health) +} + +func (suite *nodeHealthControllerTestSuite) TestGetNodeHealthNoStatus() { + health, err := getNodeHealth(context.Background(), suite.runtime, suite.nodeNoHealth) + require.NoError(suite.T(), err) + require.Equal(suite.T(), pbcatalog.Health_HEALTH_PASSING, health) +} + +func (suite *nodeHealthControllerTestSuite) TestGetNodeHealthPassingStatus() { + health, err := getNodeHealth(context.Background(), suite.runtime, suite.nodePassing) + require.NoError(suite.T(), err) + require.Equal(suite.T(), pbcatalog.Health_HEALTH_PASSING, health) +} + +func (suite *nodeHealthControllerTestSuite) TestGetNodeHealthCriticalStatus() { + health, err := getNodeHealth(context.Background(), suite.runtime, suite.nodeCritical) + require.NoError(suite.T(), err) + require.Equal(suite.T(), pbcatalog.Health_HEALTH_CRITICAL, health) +} + +func (suite *nodeHealthControllerTestSuite) TestGetNodeHealthWarningStatus() { + health, err := getNodeHealth(context.Background(), suite.runtime, suite.nodeWarning) + require.NoError(suite.T(), err) + require.Equal(suite.T(), pbcatalog.Health_HEALTH_WARNING, health) +} + +func (suite *nodeHealthControllerTestSuite) TestGetNodeHealthMaintenanceStatus() { + health, err := getNodeHealth(context.Background(), suite.runtime, suite.nodeMaintenance) + require.NoError(suite.T(), err) + require.Equal(suite.T(), pbcatalog.Health_HEALTH_MAINTENANCE, health) +} + +func (suite *nodeHealthControllerTestSuite) TestReconcileNodeNotFound() { + // This test ensures that removed nodes are ignored. In particular we don't + // want to propagate the error and indefinitely keep re-reconciling in this case. + err := suite.ctl.Reconcile(context.Background(), suite.runtime, controller.Request{ + ID: resourceID(types.NodeType, "not-found"), + }) + require.NoError(suite.T(), err) +} + +func (suite *nodeHealthControllerTestSuite) TestReconcilePropagateReadError() { + // This test aims to ensure that errors other than NotFound errors coming + // from the initial resource read get propagated. This case is very unrealistic + // as the controller should not have given us a request ID for a resource type + // that doesn't exist but this was the easiest way I could think of to synthesize + // a Read error. + ref := resourceID( + &pbresource.Type{Group: "not", GroupVersion: "v1", Kind: "found"}, + "irrelevant", + ) + + err := suite.ctl.Reconcile(context.Background(), suite.runtime, controller.Request{ + ID: ref, + }) + require.Error(suite.T(), err) + require.Equal(suite.T(), codes.InvalidArgument, status.Code(err)) +} + +func (suite *nodeHealthControllerTestSuite) testReconcileStatus(id *pbresource.ID, expectedStatus *pbresource.Condition) *pbresource.Resource { + suite.T().Helper() + + err := suite.ctl.Reconcile(context.Background(), suite.runtime, controller.Request{ + ID: id, + }) + require.NoError(suite.T(), err) + + rsp, err := suite.resourceClient.Read(context.Background(), &pbresource.ReadRequest{ + Id: id, + }) + require.NoError(suite.T(), err) + + nodeHealthStatus, found := rsp.Resource.Status[StatusKey] + require.True(suite.T(), found) + require.Equal(suite.T(), rsp.Resource.Generation, nodeHealthStatus.ObservedGeneration) + require.Len(suite.T(), nodeHealthStatus.Conditions, 1) + prototest.AssertDeepEqual(suite.T(), + nodeHealthStatus.Conditions[0], + expectedStatus) + + return rsp.Resource +} + +func (suite *nodeHealthControllerTestSuite) TestReconcile_StatusPassing() { + suite.testReconcileStatus(suite.nodePassing, &pbresource.Condition{ + Type: StatusConditionHealthy, + State: pbresource.Condition_STATE_TRUE, + Reason: "HEALTH_PASSING", + Message: NodeHealthyMessage, + }) +} + +func (suite *nodeHealthControllerTestSuite) TestReconcile_StatusWarning() { + suite.testReconcileStatus(suite.nodeWarning, &pbresource.Condition{ + Type: StatusConditionHealthy, + State: pbresource.Condition_STATE_FALSE, + Reason: "HEALTH_WARNING", + Message: NodeUnhealthyMessage, + }) +} + +func (suite *nodeHealthControllerTestSuite) TestReconcile_StatusCritical() { + suite.testReconcileStatus(suite.nodeCritical, &pbresource.Condition{ + Type: StatusConditionHealthy, + State: pbresource.Condition_STATE_FALSE, + Reason: "HEALTH_CRITICAL", + Message: NodeUnhealthyMessage, + }) +} + +func (suite *nodeHealthControllerTestSuite) TestReconcile_StatusMaintenance() { + suite.testReconcileStatus(suite.nodeMaintenance, &pbresource.Condition{ + Type: StatusConditionHealthy, + State: pbresource.Condition_STATE_FALSE, + Reason: "HEALTH_MAINTENANCE", + Message: NodeUnhealthyMessage, + }) +} + +func (suite *nodeHealthControllerTestSuite) TestReconcile_AvoidRereconciliationWrite() { + res1 := suite.testReconcileStatus(suite.nodeWarning, &pbresource.Condition{ + Type: StatusConditionHealthy, + State: pbresource.Condition_STATE_FALSE, + Reason: "HEALTH_WARNING", + Message: NodeUnhealthyMessage, + }) + + res2 := suite.testReconcileStatus(suite.nodeWarning, &pbresource.Condition{ + Type: StatusConditionHealthy, + State: pbresource.Condition_STATE_FALSE, + Reason: "HEALTH_WARNING", + Message: NodeUnhealthyMessage, + }) + + // If another status write was performed then the versions would differ. This + // therefore proves that after a second reconciliation without any change in status + // that we are not making subsequent status writes. + require.Equal(suite.T(), res1.Version, res2.Version) +} + +func (suite *nodeHealthControllerTestSuite) waitForReconciliation(id *pbresource.ID, reason string) { + suite.T().Helper() + + retry.Run(suite.T(), func(r *retry.R) { + rsp, err := suite.resourceClient.Read(context.Background(), &pbresource.ReadRequest{ + Id: id, + }) + require.NoError(r, err) + + nodeHealthStatus, found := rsp.Resource.Status[StatusKey] + require.True(r, found) + require.Equal(r, rsp.Resource.Generation, nodeHealthStatus.ObservedGeneration) + require.Len(r, nodeHealthStatus.Conditions, 1) + require.Equal(r, reason, nodeHealthStatus.Conditions[0].Reason) + }) +} +func (suite *nodeHealthControllerTestSuite) TestController() { + // create the controller manager + mgr := controller.NewManager(suite.resourceClient, testutil.Logger(suite.T())) + + // register our controller + mgr.Register(NodeHealthController()) + mgr.SetRaftLeader(true) + ctx, cancel := context.WithCancel(context.Background()) + suite.T().Cleanup(cancel) + + // run the manager + go mgr.Run(ctx) + + // ensure that the node health eventually gets set. + suite.waitForReconciliation(suite.nodePassing, "HEALTH_PASSING") + + // rewrite the resource - this will cause the nodes health + // to be rereconciled but wont result in any health change + resourcetest.Resource(types.NodeType, suite.nodePassing.Name). + WithData(suite.T(), &pbcatalog.Node{ + Addresses: []*pbcatalog.NodeAddress{ + { + Host: "198.18.0.1", + }, + }, + }). + Write(suite.T(), suite.resourceClient) + + // wait for rereconciliation to happen + suite.waitForReconciliation(suite.nodePassing, "HEALTH_PASSING") + + resourcetest.Resource(types.HealthStatusType, "failure"). + WithData(suite.T(), &pbcatalog.HealthStatus{Type: "fake", Status: pbcatalog.Health_HEALTH_CRITICAL}). + WithOwner(suite.nodePassing). + Write(suite.T(), suite.resourceClient) + + suite.waitForReconciliation(suite.nodePassing, "HEALTH_CRITICAL") +} + +func TestNodeHealthController(t *testing.T) { + suite.Run(t, new(nodeHealthControllerTestSuite)) +} diff --git a/internal/catalog/internal/controllers/nodehealth/status.go b/internal/catalog/internal/controllers/nodehealth/status.go new file mode 100644 index 0000000000000..8cb989101dad6 --- /dev/null +++ b/internal/catalog/internal/controllers/nodehealth/status.go @@ -0,0 +1,12 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package nodehealth + +const ( + StatusKey = "consul.io/node-health" + StatusConditionHealthy = "healthy" + + NodeHealthyMessage = "All node health checks are passing" + NodeUnhealthyMessage = "One or more node health checks are not passing" +) diff --git a/internal/catalog/internal/controllers/register.go b/internal/catalog/internal/controllers/register.go new file mode 100644 index 0000000000000..b4b6f190f74b8 --- /dev/null +++ b/internal/catalog/internal/controllers/register.go @@ -0,0 +1,13 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package controllers + +import ( + "github.com/hashicorp/consul/internal/catalog/internal/controllers/nodehealth" + "github.com/hashicorp/consul/internal/controller" +) + +func Register(mgr *controller.Manager) { + mgr.Register(nodehealth.NodeHealthController()) +} diff --git a/internal/controller/api.go b/internal/controller/api.go index 7a2e89be46412..c2cc0925da1b4 100644 --- a/internal/controller/api.go +++ b/internal/controller/api.go @@ -169,6 +169,29 @@ func MapOwner(_ context.Context, _ Runtime, res *pbresource.Resource) ([]Request return reqs, nil } +func MapOwnerFiltered(filter *pbresource.Type) DependencyMapper { + return func(_ context.Context, _ Runtime, res *pbresource.Resource) ([]Request, error) { + if res.Owner == nil { + return nil, nil + } + + ownerType := res.Owner.GetType() + if ownerType.Group != filter.Group { + return nil, nil + } + + if ownerType.GroupVersion != filter.GroupVersion { + return nil, nil + } + + if ownerType.Kind != filter.Kind { + return nil, nil + } + + return []Request{{ID: res.Owner}}, nil + } +} + // Placement determines where and how many replicas of the controller will run. type Placement int diff --git a/internal/controller/api_test.go b/internal/controller/api_test.go index 2006664b20fb7..51bb62843f7df 100644 --- a/internal/controller/api_test.go +++ b/internal/controller/api_test.go @@ -9,6 +9,7 @@ import ( "testing" "time" + "github.com/google/go-cmp/cmp/cmpopts" "github.com/stretchr/testify/require" svctest "github.com/hashicorp/consul/agent/grpc-external/services/resource/testing" @@ -266,3 +267,76 @@ func testContext(t *testing.T) context.Context { return ctx } + +func resourceID(group string, version string, kind string, name string) *pbresource.ID { + return &pbresource.ID{ + Type: &pbresource.Type{ + Group: group, + GroupVersion: version, + Kind: kind, + }, + Tenancy: &pbresource.Tenancy{ + Partition: "default", + Namespace: "default", + PeerName: "local", + }, + Name: name, + } +} + +func TestMapOwnerFiltered(t *testing.T) { + mapper := controller.MapOwnerFiltered(&pbresource.Type{ + Group: "foo", + GroupVersion: "v1", + Kind: "bar", + }) + + type testCase struct { + owner *pbresource.ID + matches bool + } + + cases := map[string]testCase{ + "nil-owner": { + owner: nil, + matches: false, + }, + "group-mismatch": { + owner: resourceID("other", "v1", "bar", "irrelevant"), + matches: false, + }, + "group-version-mismatch": { + owner: resourceID("foo", "v2", "bar", "irrelevant"), + matches: false, + }, + "kind-mismatch": { + owner: resourceID("foo", "v1", "baz", "irrelevant"), + matches: false, + }, + "match": { + owner: resourceID("foo", "v1", "bar", "irrelevant"), + matches: true, + }, + } + + for name, tcase := range cases { + t.Run(name, func(t *testing.T) { + // the runtime is not used by the mapper so its fine to pass an empty struct + req, err := mapper(context.Background(), controller.Runtime{}, &pbresource.Resource{ + Id: resourceID("foo", "v1", "other", "x"), + Owner: tcase.owner, + }) + + // The mapper has no error paths at present + require.NoError(t, err) + + if tcase.matches { + require.NotNil(t, req) + require.Len(t, req, 1) + prototest.AssertDeepEqual(t, req[0].ID, tcase.owner, cmpopts.EquateEmpty()) + } else { + require.Nil(t, req) + } + }) + } +} diff --git a/internal/resource/resourcetest/builder.go b/internal/resource/resourcetest/builder.go new file mode 100644 index 0000000000000..46039e209a70f --- /dev/null +++ b/internal/resource/resourcetest/builder.go @@ -0,0 +1,136 @@ +package resourcetest + +import ( + "context" + "testing" + + "github.com/hashicorp/consul/proto-public/pbresource" + "github.com/oklog/ulid/v2" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/types/known/anypb" +) + +type resourceBuilder struct { + resource *pbresource.Resource + statuses map[string]*pbresource.Status + dontCleanup bool +} + +func Resource(rtype *pbresource.Type, name string) *resourceBuilder { + return &resourceBuilder{ + resource: &pbresource.Resource{ + Id: &pbresource.ID{ + Type: &pbresource.Type{ + Group: rtype.Group, + GroupVersion: rtype.GroupVersion, + Kind: rtype.Kind, + }, + Tenancy: &pbresource.Tenancy{ + Partition: "default", + Namespace: "default", + PeerName: "local", + }, + Name: name, + }, + }, + } +} + +func (b *resourceBuilder) WithData(t *testing.T, data protoreflect.ProtoMessage) *resourceBuilder { + anyData, err := anypb.New(data) + require.NoError(t, err) + b.resource.Data = anyData + return b +} + +func (b *resourceBuilder) WithOwner(id *pbresource.ID) *resourceBuilder { + b.resource.Owner = id + return b +} + +func (b *resourceBuilder) WithStatus(key string, status *pbresource.Status) *resourceBuilder { + if b.statuses == nil { + b.statuses = make(map[string]*pbresource.Status) + } + b.statuses[key] = status + return b +} + +func (b *resourceBuilder) WithoutCleanup() *resourceBuilder { + b.dontCleanup = true + return b +} + +func (b *resourceBuilder) WithGeneration(gen string) *resourceBuilder { + b.resource.Generation = gen + return b +} + +func (b *resourceBuilder) Build() *pbresource.Resource { + // clone the resource so we can add on status information + res := proto.Clone(b.resource).(*pbresource.Resource) + + // fill in the generation if empty to make it look like + // a real managed resource + if res.Generation == "" { + res.Generation = ulid.Make().String() + } + + // Now create the status map + res.Status = make(map[string]*pbresource.Status) + for key, original := range b.statuses { + status := &pbresource.Status{ + ObservedGeneration: res.Generation, + Conditions: original.Conditions, + } + res.Status[key] = status + } + + return res +} + +func (b *resourceBuilder) Write(t *testing.T, client pbresource.ResourceServiceClient) *pbresource.Resource { + res := b.resource + + rsp, err := client.Write(context.Background(), &pbresource.WriteRequest{ + Resource: res, + }) + + require.NoError(t, err) + + if !b.dontCleanup { + t.Cleanup(func() { + _, err := client.Delete(context.Background(), &pbresource.DeleteRequest{ + Id: rsp.Resource.Id, + }) + require.NoError(t, err) + }) + } + + if len(b.statuses) == 0 { + return rsp.Resource + } + + for key, original := range b.statuses { + status := &pbresource.Status{ + ObservedGeneration: rsp.Resource.Generation, + Conditions: original.Conditions, + } + _, err := client.WriteStatus(context.Background(), &pbresource.WriteStatusRequest{ + Id: rsp.Resource.Id, + Key: key, + Status: status, + }) + require.NoError(t, err) + } + + readResp, err := client.Read(context.Background(), &pbresource.ReadRequest{ + Id: rsp.Resource.Id, + }) + + require.NoError(t, err) + + return readResp.Resource +} From abeccb4c760c40dff5f3b6584d1d7319288c61f6 Mon Sep 17 00:00:00 2001 From: Semir Patel Date: Mon, 15 May 2023 09:42:01 -0500 Subject: [PATCH 11/12] Support update resource with change in GroupVersion (#17330) --- .../grpc-external/services/resource/write.go | 7 ++++- .../services/resource/write_test.go | 31 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/agent/grpc-external/services/resource/write.go b/agent/grpc-external/services/resource/write.go index d50ca1dd8bcd7..3a365cee3713a 100644 --- a/agent/grpc-external/services/resource/write.go +++ b/agent/grpc-external/services/resource/write.go @@ -107,6 +107,7 @@ func (s *Server) Write(ctx context.Context, req *pbresource.WriteRequest) (*pbre // // - CAS failures will be retried by retryCAS anyway. So the read-modify-write // cycle should eventually succeed. + var mismatchError storage.GroupVersionMismatchError existing, err := s.Backend.Read(ctx, storage.EventualConsistency, input.Id) switch { // Create path. @@ -146,7 +147,11 @@ func (s *Server) Write(ctx context.Context, req *pbresource.WriteRequest) (*pbre // TODO(spatel): Revisit owner<->resource tenancy rules post-1.16 // Update path. - case err == nil: + case err == nil || errors.As(err, &mismatchError): + // Allow writes that update GroupVersion. + if mismatchError.Stored != nil { + existing = mismatchError.Stored + } // Use the stored ID because it includes the Uid. // // Generally, users won't provide the Uid but controllers will, because diff --git a/agent/grpc-external/services/resource/write_test.go b/agent/grpc-external/services/resource/write_test.go index b2960a9243d7f..9b94ecae8bb94 100644 --- a/agent/grpc-external/services/resource/write_test.go +++ b/agent/grpc-external/services/resource/write_test.go @@ -19,6 +19,7 @@ import ( "github.com/hashicorp/consul/internal/resource/demo" "github.com/hashicorp/consul/internal/storage" "github.com/hashicorp/consul/proto-public/pbresource" + pbdemov1 "github.com/hashicorp/consul/proto/private/pbdemo/v1" pbdemov2 "github.com/hashicorp/consul/proto/private/pbdemo/v2" ) @@ -392,6 +393,36 @@ func TestWrite_Update_NoUid(t *testing.T) { require.NoError(t, err) } +func TestWrite_Update_GroupVersion(t *testing.T) { + server := testServer(t) + client := testClient(t, server) + + demo.RegisterTypes(server.Registry) + + res, err := demo.GenerateV2Artist() + require.NoError(t, err) + + rsp1, err := client.Write(testContext(t), &pbresource.WriteRequest{Resource: res}) + require.NoError(t, err) + + res = rsp1.Resource + res.Id.Type = demo.TypeV1Artist + + // translate artistV2 to artistV1 + var artistV2 pbdemov2.Artist + require.NoError(t, res.Data.UnmarshalTo(&artistV2)) + artistV1 := &pbdemov1.Artist{ + Name: artistV2.Name, + Description: "some awesome band", + Genre: pbdemov1.Genre_GENRE_JAZZ, + GroupMembers: int32(len(artistV2.GroupMembers)), + } + res.Data.MarshalFrom(artistV1) + + _, err = client.Write(testContext(t), &pbresource.WriteRequest{Resource: res}) + require.NoError(t, err) +} + func TestWrite_NonCASUpdate_Success(t *testing.T) { server := testServer(t) client := testClient(t, server) From be7d2a4d842a8cbab7ce6161e88807a1f0a946b0 Mon Sep 17 00:00:00 2001 From: Dan Stough Date: Mon, 15 May 2023 10:45:16 -0400 Subject: [PATCH 12/12] =?UTF-8?q?fix(connect=20envoy):=20set=20initial=5Ff?= =?UTF-8?q?etch=5Ftimeout=20to=20wait=20for=20initial=20xDS=E2=80=A6=20(#1?= =?UTF-8?q?7317)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(connect envoy): set initial_fetch_timeout to wait for initial xDS indefinitely --------- Co-authored-by: Kiril Angov --- .changelog/17317.txt | 3 +++ command/connect/envoy/bootstrap_tpl.go | 2 ++ .../CONSUL_GRPC_ADDR-with-https-scheme-enables-tls.golden | 2 ++ ...HTTP_ADDR-with-https-scheme-does-not-affect-grpc-tls.golden | 2 ++ command/connect/envoy/testdata/access-log-path.golden | 2 ++ .../connect/envoy/testdata/access-logs-enabled-custom.golden | 2 ++ command/connect/envoy/testdata/access-logs-enabled.golden | 2 ++ command/connect/envoy/testdata/acl-enabled-and-token.golden | 2 ++ command/connect/envoy/testdata/acl-enabled-but-no-token.golden | 2 ++ ...NSUL_HTTP_ADDR-PLAIN-and-CONSUL_GRPC_ADDR-TLS-is-tls.golden | 2 ++ ...UL_HTTP_ADDR-TLS-and-CONSUL_GRPC_ADDR-PLAIN-is-plain.golden | 2 ++ command/connect/envoy/testdata/defaults-nodemeta.golden | 2 ++ command/connect/envoy/testdata/defaults.golden | 2 ++ .../connect/envoy/testdata/deprecated-grpc-addr-config.golden | 2 ++ command/connect/envoy/testdata/envoy-readiness-probe.golden | 2 ++ command/connect/envoy/testdata/existing-ca-file.golden | 2 ++ command/connect/envoy/testdata/existing-ca-path.golden | 2 ++ command/connect/envoy/testdata/extra_-multiple.golden | 2 ++ command/connect/envoy/testdata/extra_-single.golden | 2 ++ command/connect/envoy/testdata/grpc-addr-env.golden | 2 ++ command/connect/envoy/testdata/grpc-addr-flag.golden | 2 ++ command/connect/envoy/testdata/grpc-addr-unix-with-tls.golden | 2 ++ command/connect/envoy/testdata/grpc-addr-unix.golden | 2 ++ command/connect/envoy/testdata/grpc-tls-addr-config.golden | 2 ++ command/connect/envoy/testdata/hcp-metrics.golden | 2 ++ .../envoy/testdata/ingress-gateway-address-specified.golden | 2 ++ .../envoy/testdata/ingress-gateway-no-auto-register.golden | 2 ++ command/connect/envoy/testdata/ingress-gateway-nodemeta.golden | 2 ++ .../ingress-gateway-register-with-service-and-proxy-id.golden | 2 ++ ...gress-gateway-register-with-service-without-proxy-id.golden | 2 ++ command/connect/envoy/testdata/ingress-gateway.golden | 2 ++ .../envoy/testdata/prometheus-metrics-tls-ca-file.golden | 2 ++ .../envoy/testdata/prometheus-metrics-tls-ca-path.golden | 2 ++ command/connect/envoy/testdata/prometheus-metrics.golden | 2 ++ command/connect/envoy/testdata/stats-config-override.golden | 2 ++ command/connect/envoy/testdata/token-arg.golden | 2 ++ command/connect/envoy/testdata/token-env.golden | 2 ++ command/connect/envoy/testdata/token-file-arg.golden | 2 ++ command/connect/envoy/testdata/token-file-env.golden | 2 ++ command/connect/envoy/testdata/xds-addr-config.golden | 2 ++ command/connect/envoy/testdata/zipkin-tracing-config.golden | 2 ++ 41 files changed, 83 insertions(+) create mode 100644 .changelog/17317.txt diff --git a/.changelog/17317.txt b/.changelog/17317.txt new file mode 100644 index 0000000000000..76c86a0a28eb0 --- /dev/null +++ b/.changelog/17317.txt @@ -0,0 +1,3 @@ +```release-note:bug +connect: fix a bug with Envoy potentially starting with incomplete configuration by not waiting enough for initial xDS configuration. +``` diff --git a/command/connect/envoy/bootstrap_tpl.go b/command/connect/envoy/bootstrap_tpl.go index 78d88f9b1d11f..26b8e2118b1ef 100644 --- a/command/connect/envoy/bootstrap_tpl.go +++ b/command/connect/envoy/bootstrap_tpl.go @@ -281,10 +281,12 @@ const bootstrapTemplate = `{ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/CONSUL_GRPC_ADDR-with-https-scheme-enables-tls.golden b/command/connect/envoy/testdata/CONSUL_GRPC_ADDR-with-https-scheme-enables-tls.golden index a8ba4704f5e37..c8144ac72fa23 100644 --- a/command/connect/envoy/testdata/CONSUL_GRPC_ADDR-with-https-scheme-enables-tls.golden +++ b/command/connect/envoy/testdata/CONSUL_GRPC_ADDR-with-https-scheme-enables-tls.golden @@ -197,10 +197,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/CONSUL_HTTP_ADDR-with-https-scheme-does-not-affect-grpc-tls.golden b/command/connect/envoy/testdata/CONSUL_HTTP_ADDR-with-https-scheme-does-not-affect-grpc-tls.golden index 5485256b4f99d..a89575d2c1679 100644 --- a/command/connect/envoy/testdata/CONSUL_HTTP_ADDR-with-https-scheme-does-not-affect-grpc-tls.golden +++ b/command/connect/envoy/testdata/CONSUL_HTTP_ADDR-with-https-scheme-does-not-affect-grpc-tls.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/access-log-path.golden b/command/connect/envoy/testdata/access-log-path.golden index 18a28a491e868..184a290b245fe 100644 --- a/command/connect/envoy/testdata/access-log-path.golden +++ b/command/connect/envoy/testdata/access-log-path.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/access-logs-enabled-custom.golden b/command/connect/envoy/testdata/access-logs-enabled-custom.golden index 6af720bdaccbe..50531f89c2579 100644 --- a/command/connect/envoy/testdata/access-logs-enabled-custom.golden +++ b/command/connect/envoy/testdata/access-logs-enabled-custom.golden @@ -197,10 +197,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/access-logs-enabled.golden b/command/connect/envoy/testdata/access-logs-enabled.golden index 892cf46324b4f..ea2e15060718b 100644 --- a/command/connect/envoy/testdata/access-logs-enabled.golden +++ b/command/connect/envoy/testdata/access-logs-enabled.golden @@ -219,10 +219,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/acl-enabled-and-token.golden b/command/connect/envoy/testdata/acl-enabled-and-token.golden index 3342f03904718..a5427c7f24546 100644 --- a/command/connect/envoy/testdata/acl-enabled-and-token.golden +++ b/command/connect/envoy/testdata/acl-enabled-and-token.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/acl-enabled-but-no-token.golden b/command/connect/envoy/testdata/acl-enabled-but-no-token.golden index 5485256b4f99d..a89575d2c1679 100644 --- a/command/connect/envoy/testdata/acl-enabled-but-no-token.golden +++ b/command/connect/envoy/testdata/acl-enabled-but-no-token.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/both-CONSUL_HTTP_ADDR-PLAIN-and-CONSUL_GRPC_ADDR-TLS-is-tls.golden b/command/connect/envoy/testdata/both-CONSUL_HTTP_ADDR-PLAIN-and-CONSUL_GRPC_ADDR-TLS-is-tls.golden index a8ba4704f5e37..c8144ac72fa23 100644 --- a/command/connect/envoy/testdata/both-CONSUL_HTTP_ADDR-PLAIN-and-CONSUL_GRPC_ADDR-TLS-is-tls.golden +++ b/command/connect/envoy/testdata/both-CONSUL_HTTP_ADDR-PLAIN-and-CONSUL_GRPC_ADDR-TLS-is-tls.golden @@ -197,10 +197,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/both-CONSUL_HTTP_ADDR-TLS-and-CONSUL_GRPC_ADDR-PLAIN-is-plain.golden b/command/connect/envoy/testdata/both-CONSUL_HTTP_ADDR-TLS-and-CONSUL_GRPC_ADDR-PLAIN-is-plain.golden index 5485256b4f99d..a89575d2c1679 100644 --- a/command/connect/envoy/testdata/both-CONSUL_HTTP_ADDR-TLS-and-CONSUL_GRPC_ADDR-PLAIN-is-plain.golden +++ b/command/connect/envoy/testdata/both-CONSUL_HTTP_ADDR-TLS-and-CONSUL_GRPC_ADDR-PLAIN-is-plain.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/defaults-nodemeta.golden b/command/connect/envoy/testdata/defaults-nodemeta.golden index 41788c3c42e43..ea65421109f3b 100644 --- a/command/connect/envoy/testdata/defaults-nodemeta.golden +++ b/command/connect/envoy/testdata/defaults-nodemeta.golden @@ -185,10 +185,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/defaults.golden b/command/connect/envoy/testdata/defaults.golden index 5485256b4f99d..a89575d2c1679 100644 --- a/command/connect/envoy/testdata/defaults.golden +++ b/command/connect/envoy/testdata/defaults.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/deprecated-grpc-addr-config.golden b/command/connect/envoy/testdata/deprecated-grpc-addr-config.golden index ab87aa9b438f2..e604c61d5063c 100644 --- a/command/connect/envoy/testdata/deprecated-grpc-addr-config.golden +++ b/command/connect/envoy/testdata/deprecated-grpc-addr-config.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/envoy-readiness-probe.golden b/command/connect/envoy/testdata/envoy-readiness-probe.golden index 444528e8808e7..18680a3206b3b 100644 --- a/command/connect/envoy/testdata/envoy-readiness-probe.golden +++ b/command/connect/envoy/testdata/envoy-readiness-probe.golden @@ -273,10 +273,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/existing-ca-file.golden b/command/connect/envoy/testdata/existing-ca-file.golden index a8ba4704f5e37..c8144ac72fa23 100644 --- a/command/connect/envoy/testdata/existing-ca-file.golden +++ b/command/connect/envoy/testdata/existing-ca-file.golden @@ -197,10 +197,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/existing-ca-path.golden b/command/connect/envoy/testdata/existing-ca-path.golden index e246dbb324eb0..c0566ab351d76 100644 --- a/command/connect/envoy/testdata/existing-ca-path.golden +++ b/command/connect/envoy/testdata/existing-ca-path.golden @@ -197,10 +197,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/extra_-multiple.golden b/command/connect/envoy/testdata/extra_-multiple.golden index 038e65d8d9fb7..819994f0c0ffc 100644 --- a/command/connect/envoy/testdata/extra_-multiple.golden +++ b/command/connect/envoy/testdata/extra_-multiple.golden @@ -206,10 +206,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/extra_-single.golden b/command/connect/envoy/testdata/extra_-single.golden index 14b8f0820500b..b1fb71997b3fd 100644 --- a/command/connect/envoy/testdata/extra_-single.golden +++ b/command/connect/envoy/testdata/extra_-single.golden @@ -197,10 +197,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/grpc-addr-env.golden b/command/connect/envoy/testdata/grpc-addr-env.golden index ab87aa9b438f2..e604c61d5063c 100644 --- a/command/connect/envoy/testdata/grpc-addr-env.golden +++ b/command/connect/envoy/testdata/grpc-addr-env.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/grpc-addr-flag.golden b/command/connect/envoy/testdata/grpc-addr-flag.golden index ab87aa9b438f2..e604c61d5063c 100644 --- a/command/connect/envoy/testdata/grpc-addr-flag.golden +++ b/command/connect/envoy/testdata/grpc-addr-flag.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/grpc-addr-unix-with-tls.golden b/command/connect/envoy/testdata/grpc-addr-unix-with-tls.golden index 89764c310a477..2b902d48d4762 100644 --- a/command/connect/envoy/testdata/grpc-addr-unix-with-tls.golden +++ b/command/connect/envoy/testdata/grpc-addr-unix-with-tls.golden @@ -196,10 +196,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/grpc-addr-unix.golden b/command/connect/envoy/testdata/grpc-addr-unix.golden index eb8841ae993fe..88e6e46bfb952 100644 --- a/command/connect/envoy/testdata/grpc-addr-unix.golden +++ b/command/connect/envoy/testdata/grpc-addr-unix.golden @@ -183,10 +183,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/grpc-tls-addr-config.golden b/command/connect/envoy/testdata/grpc-tls-addr-config.golden index e79cf0455d2bd..e65fc5f09cd6c 100644 --- a/command/connect/envoy/testdata/grpc-tls-addr-config.golden +++ b/command/connect/envoy/testdata/grpc-tls-addr-config.golden @@ -197,10 +197,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/hcp-metrics.golden b/command/connect/envoy/testdata/hcp-metrics.golden index 0739ab531daca..4871c1cb6a2fa 100644 --- a/command/connect/envoy/testdata/hcp-metrics.golden +++ b/command/connect/envoy/testdata/hcp-metrics.golden @@ -221,10 +221,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/ingress-gateway-address-specified.golden b/command/connect/envoy/testdata/ingress-gateway-address-specified.golden index cc2e504eaf95a..038c8fcc5dd21 100644 --- a/command/connect/envoy/testdata/ingress-gateway-address-specified.golden +++ b/command/connect/envoy/testdata/ingress-gateway-address-specified.golden @@ -273,10 +273,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/ingress-gateway-no-auto-register.golden b/command/connect/envoy/testdata/ingress-gateway-no-auto-register.golden index cddaa490dd2cf..80f1f9a8b7c61 100644 --- a/command/connect/envoy/testdata/ingress-gateway-no-auto-register.golden +++ b/command/connect/envoy/testdata/ingress-gateway-no-auto-register.golden @@ -273,10 +273,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/ingress-gateway-nodemeta.golden b/command/connect/envoy/testdata/ingress-gateway-nodemeta.golden index d79739ed72803..8a2d5f62768e8 100644 --- a/command/connect/envoy/testdata/ingress-gateway-nodemeta.golden +++ b/command/connect/envoy/testdata/ingress-gateway-nodemeta.golden @@ -274,10 +274,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/ingress-gateway-register-with-service-and-proxy-id.golden b/command/connect/envoy/testdata/ingress-gateway-register-with-service-and-proxy-id.golden index 3149fc4b33a52..6192f674ac17a 100644 --- a/command/connect/envoy/testdata/ingress-gateway-register-with-service-and-proxy-id.golden +++ b/command/connect/envoy/testdata/ingress-gateway-register-with-service-and-proxy-id.golden @@ -273,10 +273,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/ingress-gateway-register-with-service-without-proxy-id.golden b/command/connect/envoy/testdata/ingress-gateway-register-with-service-without-proxy-id.golden index f8eb44754117d..92d80e033e9b5 100644 --- a/command/connect/envoy/testdata/ingress-gateway-register-with-service-without-proxy-id.golden +++ b/command/connect/envoy/testdata/ingress-gateway-register-with-service-without-proxy-id.golden @@ -273,10 +273,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/ingress-gateway.golden b/command/connect/envoy/testdata/ingress-gateway.golden index c4fba520ed992..40a5c74d1bc2f 100644 --- a/command/connect/envoy/testdata/ingress-gateway.golden +++ b/command/connect/envoy/testdata/ingress-gateway.golden @@ -273,10 +273,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/prometheus-metrics-tls-ca-file.golden b/command/connect/envoy/testdata/prometheus-metrics-tls-ca-file.golden index 71b82250e30df..c93286e64e812 100644 --- a/command/connect/envoy/testdata/prometheus-metrics-tls-ca-file.golden +++ b/command/connect/envoy/testdata/prometheus-metrics-tls-ca-file.golden @@ -310,10 +310,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/prometheus-metrics-tls-ca-path.golden b/command/connect/envoy/testdata/prometheus-metrics-tls-ca-path.golden index 07e56ae878a70..272175f70733e 100644 --- a/command/connect/envoy/testdata/prometheus-metrics-tls-ca-path.golden +++ b/command/connect/envoy/testdata/prometheus-metrics-tls-ca-path.golden @@ -310,10 +310,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/prometheus-metrics.golden b/command/connect/envoy/testdata/prometheus-metrics.golden index 5adc8a9485ee2..5806dd671f760 100644 --- a/command/connect/envoy/testdata/prometheus-metrics.golden +++ b/command/connect/envoy/testdata/prometheus-metrics.golden @@ -273,10 +273,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/stats-config-override.golden b/command/connect/envoy/testdata/stats-config-override.golden index d2a2371f20ea7..dd4ff53dd194e 100644 --- a/command/connect/envoy/testdata/stats-config-override.golden +++ b/command/connect/envoy/testdata/stats-config-override.golden @@ -62,10 +62,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/token-arg.golden b/command/connect/envoy/testdata/token-arg.golden index ac057e9a60b1c..816bf74875720 100644 --- a/command/connect/envoy/testdata/token-arg.golden +++ b/command/connect/envoy/testdata/token-arg.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/token-env.golden b/command/connect/envoy/testdata/token-env.golden index ac057e9a60b1c..816bf74875720 100644 --- a/command/connect/envoy/testdata/token-env.golden +++ b/command/connect/envoy/testdata/token-env.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/token-file-arg.golden b/command/connect/envoy/testdata/token-file-arg.golden index ac057e9a60b1c..816bf74875720 100644 --- a/command/connect/envoy/testdata/token-file-arg.golden +++ b/command/connect/envoy/testdata/token-file-arg.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/token-file-env.golden b/command/connect/envoy/testdata/token-file-env.golden index ac057e9a60b1c..816bf74875720 100644 --- a/command/connect/envoy/testdata/token-file-env.golden +++ b/command/connect/envoy/testdata/token-file-env.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/xds-addr-config.golden b/command/connect/envoy/testdata/xds-addr-config.golden index ab87aa9b438f2..e604c61d5063c 100644 --- a/command/connect/envoy/testdata/xds-addr-config.golden +++ b/command/connect/envoy/testdata/xds-addr-config.golden @@ -184,10 +184,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": { diff --git a/command/connect/envoy/testdata/zipkin-tracing-config.golden b/command/connect/envoy/testdata/zipkin-tracing-config.golden index fd52f5ae3f572..dc4779a7753d4 100644 --- a/command/connect/envoy/testdata/zipkin-tracing-config.golden +++ b/command/connect/envoy/testdata/zipkin-tracing-config.golden @@ -217,10 +217,12 @@ "dynamic_resources": { "lds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "cds_config": { "ads": {}, + "initial_fetch_timeout": "0s", "resource_api_version": "V3" }, "ads_config": {