diff --git a/modules/cloud-config-container/envoy-traffic-director/README.md b/modules/cloud-config-container/envoy-traffic-director/README.md index c18df6e445..a37e60810a 100644 --- a/modules/cloud-config-container/envoy-traffic-director/README.md +++ b/modules/cloud-config-container/envoy-traffic-director/README.md @@ -20,7 +20,7 @@ module "cos-envoy-td" { module "vm-cos" { source = "./modules/compute-vm" project_id = local.project_id - region = local.region + zone = local.zone name = "cos-envoy-td" network_interfaces = [{ network = local.vpc.self_link, @@ -28,7 +28,6 @@ module "vm-cos" { nat = false, addresses = null }] - instance_count = 1 tags = ["ssh", "http"] metadata = { @@ -51,7 +50,7 @@ module "vm-cos" { | name | description | type | required | default | |---|---|:---:|:---:|:---:| | [docker_logging](variables.tf#L23) | Log via the Docker gcplogs driver. Disable if you use the legacy Logging Agent instead. | bool | | true | -| [envoy_image](variables.tf#L17) | Envoy Proxy container image to use. | string | | "envoyproxy/envoy:v1.14.1" | +| [envoy_image](variables.tf#L17) | Envoy Proxy container image to use. | string | | "envoyproxy/envoy:v1.15.5" | ## Outputs diff --git a/modules/cloud-config-container/envoy-traffic-director/files/customize.sh b/modules/cloud-config-container/envoy-traffic-director/files/customize.sh index 85c8746ea0..eb9ae82d51 100644 --- a/modules/cloud-config-container/envoy-traffic-director/files/customize.sh +++ b/modules/cloud-config-container/envoy-traffic-director/files/customize.sh @@ -13,11 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -ENVOY_NODE_ID=$(uuidgen)~$(curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/ip) +ENVOY_NODE_ID=$(uuidgen) ENVOY_ZONE=$(curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/zone | cut -f 4 -d '/') CONFIG_PROJECT_NUMBER=$(curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/network | cut -f 2 -d '/') VPC_NETWORK_NAME=$(curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/network | cut -f 4 -d '/') -sed -i "s/_ENVOY_NODE_ID_/${ENVOY_NODE_ID}/" /etc/envoy/envoy.yaml -sed -i "s/_ENVOY_ZONE_/${ENVOY_ZONE}/" /etc/envoy/envoy.yaml -sed -i "s/_CONFIG_PROJECT_NUMBER_/${CONFIG_PROJECT_NUMBER}/" /etc/envoy/envoy.yaml -sed -i "s/_VPC_NETWORK_NAME_/${VPC_NETWORK_NAME}/" /etc/envoy/envoy.yaml +sed -i "s/ENVOY_NODE_ID/${ENVOY_NODE_ID}/" /etc/envoy/envoy.yaml +sed -i "s/ENVOY_ZONE/${ENVOY_ZONE}/" /etc/envoy/envoy.yaml +sed -i "s/CONFIG_PROJECT_NUMBER/${CONFIG_PROJECT_NUMBER}/" /etc/envoy/envoy.yaml +sed -i "s/VPC_NETWORK_NAME/${VPC_NETWORK_NAME}/" /etc/envoy/envoy.yaml diff --git a/modules/cloud-config-container/envoy-traffic-director/files/envoy.yaml b/modules/cloud-config-container/envoy-traffic-director/files/envoy.yaml index 2be4ef3c52..d9a14623db 100644 --- a/modules/cloud-config-container/envoy-traffic-director/files/envoy.yaml +++ b/modules/cloud-config-container/envoy-traffic-director/files/envoy.yaml @@ -13,47 +13,68 @@ # limitations under the License. node: - id: "_ENVOY_NODE_ID_" + # The id must be in the following format: projects//networks//nodes/ + id: "projects/CONFIG_PROJECT_NUMBER/networks/VPC_NETWORK_NAME/nodes/ENVOY_NODE_ID" cluster: cluster # unused locality: - zone: "_ENVOY_ZONE_" + zone: "ENVOY_ZONE" metadata: TRAFFICDIRECTOR_INTERCEPTION_PORT: "15001" - TRAFFICDIRECTOR_NETWORK_NAME: "_VPC_NETWORK_NAME_" - TRAFFICDIRECTOR_GCP_PROJECT_NUMBER: "_CONFIG_PROJECT_NUMBER_" TRAFFICDIRECTOR_ENABLE_TRACING: "false" TRAFFICDIRECTOR_ACCESS_LOG_PATH: "" TRAFFICDIRECTOR_INBOUND_BACKEND_PORTS: "" dynamic_resources: - lds_config: { ads: {} } - cds_config: { ads: {} } + lds_config: + ads: {} + resource_api_version: V3 + cds_config: + ads: {} + resource_api_version: V3 ads_config: api_type: GRPC + transport_api_version: V3 grpc_services: - - google_grpc: - target_uri: trafficdirector.googleapis.com:443 - stat_prefix: trafficdirector - channel_credentials: - ssl_credentials: - root_certs: - filename: /etc/ssl/certs/ca-certificates.crt - call_credentials: - google_compute_engine: {} + - google_grpc: + target_uri: trafficdirector.googleapis.com:443 + stat_prefix: trafficdirector + channel_credentials: + ssl_credentials: + root_certs: + filename: /etc/ssl/certs/ca-certificates.crt + call_credentials: + google_compute_engine: {} + channel_args: + args: + grpc.http2.max_pings_without_data: + int_value: 0 + grpc.keepalive_time_ms: + int_value: 10000 + grpc.keepalive_timeout_ms: + int_value: 20000 cluster_manager: load_stats_config: api_type: GRPC + transport_api_version: V3 grpc_services: - - google_grpc: - target_uri: trafficdirector.googleapis.com:443 - stat_prefix: trafficdirector - channel_credentials: - ssl_credentials: - root_certs: - filename: /etc/ssl/certs/ca-certificates.crt - call_credentials: - google_compute_engine: {} + - google_grpc: + target_uri: trafficdirector.googleapis.com:443 + stat_prefix: trafficdirector + channel_credentials: + ssl_credentials: + root_certs: + filename: /etc/ssl/certs/ca-certificates.crt + call_credentials: + google_compute_engine: {} + channel_args: + args: + grpc.http2.max_pings_without_data: + int_value: 0 + grpc.keepalive_time_ms: + int_value: 10000 + grpc.keepalive_timeout_ms: + int_value: 20000 admin: access_log_path: /dev/stdout @@ -66,89 +87,15 @@ tracing: http: name: envoy.tracers.opencensus typed_config: - "@type": type.googleapis.com/envoy.config.trace.v2.OpenCensusConfig + "@type": type.googleapis.com/envoy.config.trace.v3.OpenCensusConfig stackdriver_exporter_enabled: "false" stackdriver_project_id: "" layered_runtime: layers: - - name: rtds_layer - rtds_layer: - name: traffic_director_runtime - rtds_config: { ads: {} } - - name: static_layer - static_layer: - envoy: - deprecated_features: - cluster: - proto:ORIGINAL_DST_LB: "true" - proto:extension_protocol_options: "true" - proto:tls_context: "true" - health_check: - proto:use_http2: "true" - http_connection_manager: - proto:operation_name: "true" - listener: - proto:tls_context: "true" - listener_components: - proto:config: "true" - route_components: - proto:allow_origin: "true" - proto:method: "true" - proto:pattern: "true" - proto:regex: "true" - proto:regex_match: "true" - proto:value: "true" - string: - proto:regex: "true" - trace: - proto:HTTP_JSON_V1: "true" - deprecated_features:envoy: - api: - v2: - Cluster: - LbPolicy: - ORIGINAL_DST_LB: "true" - extension_protocol_options: "true" - tls_context: "true" - Listener: - tls_context: "true" - core: - HealthCheck: - HttpHealthCheck: - use_http2: "true" - listener: - Filter: - config: "true" - ListenerFilter: - config: "true" - route: - CorsPolicy: - allow_origin: "true" - HeaderMatcher: - regex_match: "true" - QueryParameterMatcher: - regex: "true" - value: "true" - RouteMatch: - regex: "true" - VirtualCluster: - method: "true" - pattern: "true" - config: - filter: - network: - http_connection_manager: - v2: - HttpConnectionManager: - Tracing: - operation_name: "true" - trace: - v2: - ZipkinConfig: - CollectorEndpointVersion: - HTTP_JSON_V1: "true" - type: - matcher: - StringMatcher: - regex: "true" + - name: rtds_layer + rtds_layer: + name: traffic_director_runtime + rtds_config: + ads: {} + resource_api_version: V3 diff --git a/modules/cloud-config-container/envoy-traffic-director/variables.tf b/modules/cloud-config-container/envoy-traffic-director/variables.tf index 8135a48a1e..7c97585de8 100644 --- a/modules/cloud-config-container/envoy-traffic-director/variables.tf +++ b/modules/cloud-config-container/envoy-traffic-director/variables.tf @@ -17,7 +17,7 @@ variable "envoy_image" { description = "Envoy Proxy container image to use." type = string - default = "envoyproxy/envoy:v1.14.1" + default = "envoyproxy/envoy:v1.15.5" } variable "docker_logging" {