Skip to content

Commit

Permalink
Merge branch 'main' into least_request_lb_enable_full_scan_mode
Browse files Browse the repository at this point in the history
Signed-off-by: Jared Kirschner <jkirschner@hashicorp.com>
  • Loading branch information
jkirschner-hashicorp committed Jan 31, 2024
2 parents 53ebe90 + 0edcdf8 commit 209a620
Show file tree
Hide file tree
Showing 238 changed files with 5,931 additions and 2,339 deletions.
4 changes: 3 additions & 1 deletion OWNERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ This page lists all active maintainers and their areas of expertise. This can be
routing PRs, questions, etc. to the right place.

# Senior maintainers
<!--- If you modify senior maintainers list, please update the core-maintainers section of SECURITY-INSIGHTS.yml -->

* Matt Klein ([mattklein123](https://github.com/mattklein123)) (mattklein123@gmail.com)
* Catch-all, "all the things", and generally trying to make himself obsolete as fast as
Expand Down Expand Up @@ -33,6 +34,7 @@ routing PRs, questions, etc. to the right place.
* Upstream, LB, tracing, logging, performance, and generic/dubbo proxy.

# Maintainers
<!--- If you modify maintainers list, please update the core-maintainers section of SECURITY-INSIGHTS.yml -->

* Joshua Marantz ([jmarantz](https://github.com/jmarantz)) (jmarantz@google.com)
* Stats, abseil, scalability, and performance.
Expand Down Expand Up @@ -76,7 +78,7 @@ without further review.
* Otto van der Schaaf ([oschaaf](https://github.com/oschaaf)) (oschaaf@redhat.com)
* Tim Walsh ([twghu](https://github.com/twghu)) (twalsh@redhat.com)
* Pradeep Rao ([pradeepcrao](https://github.com/pradeepcrao)) (pcrao@google.com)
* Kateryna Nezdolii ([nezdolik](https://github.com/nezdolik)) (nezdolik@spotify.com)
* Kateryna Nezdolii ([nezdolik](https://github.com/nezdolik)) (kateryna.nezdolii@gmail.com)
* Boteng Yao ([botengyao](https://github.com/botengyao)) (boteng@google.com)
* Kevin Baichoo ([KBaichoo](https://github.com/KBaichoo)) (kbaichoo@google.com)
* Tianyu Xia ([tyxia](https://github.com/tyxia)) (tyxia@google.com)
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ involved and how Envoy plays a role, read the CNCF

[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1266/badge)](https://bestpractices.coreinfrastructure.org/projects/1266)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/envoyproxy/envoy/badge)](https://securityscorecards.dev/viewer/?uri=github.com/envoyproxy/envoy)
[![CLOMonitor](https://img.shields.io/endpoint?url=https://clomonitor.io/api/projects/cncf/envoy/badge)](https://clomonitor.io/projects/cncf/envoy)
[![Azure Pipelines](https://dev.azure.com/cncf/envoy/_apis/build/status/11?branchName=main)](https://dev.azure.com/cncf/envoy/_build/latest?definitionId=11&branchName=main)
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/envoy.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:envoy)
[![Jenkins](https://powerci.osuosl.org/buildStatus/icon?job=build-envoy-static-master&subject=ppc64le%20build)](https://powerci.osuosl.org/job/build-envoy-static-master/)
Expand Down
2 changes: 0 additions & 2 deletions RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,6 @@ envoy-dev@googlegroups.com
envoy-maintainers@googlegroups.com -
include in this email a link to the latest [release page](https://github.com/envoyproxy/envoy/releases) (ending in `tag/[version]`)
* Announce in [#envoy-dev](https://envoyproxy.slack.com/archives/C78HA81DH) and [#envoy-users](https://envoyproxy.slack.com/archives/C78M4KW76) slack channels.
* Make sure we tweet the new release: either have Matt do it or email social@cncf.io and ask them to do an Envoy account
post.


## Security release schedule
Expand Down
67 changes: 67 additions & 0 deletions SECURITY-INSIGHTS.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
header:
schema-version: '1.0.0'
expiration-date: '2025-01-24T01:00:00.000Z'
last-updated: '2024-01-24'
last-reviewed: '2024-01-24'
project-url: https://github.com/envoyproxy/envoy
changelog: https://www.envoyproxy.io/docs/envoy/latest/version_history/version_history#version-history
license: https://github.com/envoyproxy/envoy/blob/main/LICENSE
project-lifecycle:
status: active
bug-fixes-only: false
core-maintainers: # from https://github.com/envoyproxy/envoy/blob/main/OWNERS.md
# Senior maintainers
- github:mattklein123
- github:htuch
- github:alyssawilk
- github:zuercher
- github:lizan
- github:ggreenway
- github:yanavlasov
- github:phlax
- github:RyanTheOptimist
- github:wbpcode
# Maintainers
- github:jmarantz
- github:adisuissa
- github:KBaichoo
- github:keith
- github:kyessenov
- github:ravenblackx
- github:soulxu
- github:nezdolik
contribution-policy:
accepts-pull-requests: true
accepts-automated-pull-requests: true
code-of-conduct: https://github.com/envoyproxy/envoy/blob/main/CODE_OF_CONDUCT.md
dependencies:
third-party-packages: true
dependencies-lists:
- https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/security/external_deps
env-dependencies-policy:
policy-url: https://github.com/envoyproxy/envoy/blob/main/DEPENDENCY_POLICY.md
distribution-points:
- https://github.com/envoyproxy/envoy
documentation:
- https://www.envoyproxy.io/docs
security-contacts:
- type: email
value: envoy-security@googlegroups.com
security-testing:
- tool-type: sca
tool-name: Dependabot
tool-version: latest
integration:
ad-hoc: false
ci: true
before-release: true
- tool-type: sast
tool-name: CodeQL
tool-version: '2.13.4'
integration:
ad-hoc: false
ci: true
before-release: true
vulnerability-reporting:
accepts-vulnerability-reports: true
security-policy: https://github.com/envoyproxy/envoy/security/policy
6 changes: 3 additions & 3 deletions api/bazel/repository_locations.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,11 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "buf",
project_desc = "A new way of working with Protocol Buffers.", # Used for breaking change detection in API protobufs
project_url = "https://buf.build",
version = "1.28.1",
sha256 = "870cf492d381a967d36636fdee9da44b524ea62aad163659b8dbf16a7da56987",
version = "1.29.0",
sha256 = "1033f26361e6fc30ffcfab9d4e4274ffd4af88d9c97de63d2e1721c4a07c1380",
strip_prefix = "buf",
urls = ["https://github.com/bufbuild/buf/releases/download/v{version}/buf-Linux-x86_64.tar.gz"],
release_date = "2023-11-15",
release_date = "2024-01-24",
use_category = ["api"],
license = "Apache-2.0",
license_url = "https://github.com/bufbuild/buf/blob/v{version}/LICENSE",
Expand Down
6 changes: 5 additions & 1 deletion api/envoy/config/listener/v3/quic_config.proto
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: QUIC listener config]

// Configuration specific to the UDP QUIC listener.
// [#next-free-field: 10]
// [#next-free-field: 11]
message QuicProtocolOptions {
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.listener.QuicProtocolOptions";
Expand Down Expand Up @@ -77,4 +77,8 @@ message QuicProtocolOptions {
// [#extension-category: envoy.quic.server_preferred_address]
core.v3.TypedExtensionConfig server_preferred_address_config = 9
[(xds.annotations.v3.field_status).work_in_progress = true];

// Configure the server to send transport parameter `disable_active_migration <https://www.rfc-editor.org/rfc/rfc9000#section-18.2-4.30.1>`_.
// Defaults to false (do not send this transport parameter).
google.protobuf.BoolValue send_disable_active_migration = 10;
}
41 changes: 38 additions & 3 deletions api/envoy/extensions/filters/http/ext_proc/v3/ext_proc.proto
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// **Current Implementation Status:**
// All options and processing modes are implemented except for the following:
//
// * Dynamic metadata in responses from the external processor is ignored.
// * "async mode" is not implemented.

// The filter communicates with an external gRPC service called an "external processor"
Expand Down Expand Up @@ -97,7 +96,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// <arch_overview_advanced_filter_state_sharing>` object in a namespace matching the filter
// name.
//
// [#next-free-field: 16]
// [#next-free-field: 17]
message ExternalProcessor {
// Configuration for the gRPC service that the filter will communicate with.
// The filter supports both the "Envoy" and "Google" gRPC clients.
Expand Down Expand Up @@ -203,6 +202,35 @@ message ExternalProcessor {
// Instead, the stream to the external processor will be closed. There will be no
// more external processing for this stream from now on.
bool disable_immediate_response = 15;

// Options related to the sending and receiving of dynamic metadata.
MetadataOptions metadata_options = 16;
}

// The MetadataOptions structure defines options for the sending and receiving of
// dynamic metadata. Specifically, which namespaces to send to the server, whether
// metadata returned by the server may be written, and how that metadata may be written.
message MetadataOptions {
message MetadataNamespaces {
// Specifies a list of metadata namespaces whose values, if present,
// will be passed to the ext_proc service as an opaque *protobuf::Struct*.
repeated string untyped = 1;

// Specifies a list of metadata namespaces whose values, if present,
// will be passed to the ext_proc service as a *protobuf::Any*. This allows
// envoy and the external processing server to share the protobuf message
// definition for safe parsing.
repeated string typed = 2;
}

// Describes which typed or untyped dynamic metadata namespaces to forward to
// the external processing server.
MetadataNamespaces forwarding_namespaces = 1;

// Describes which typed or untyped dynamic metadata namespaces to accept from
// the external processing server. Set to empty or leave unset to disallow writing
// any received dynamic metadata. Receiving of typed metadata is not supported.
MetadataNamespaces receiving_namespaces = 2;
}

// The HeaderForwardingRules structure specifies what headers are
Expand Down Expand Up @@ -245,7 +273,7 @@ message ExtProcPerRoute {
}

// Overrides that may be set on a per-route basis
// [#next-free-field: 6]
// [#next-free-field: 7]
message ExtProcOverrides {
// Set a different processing mode for this route than the default.
ProcessingMode processing_mode = 1;
Expand All @@ -266,4 +294,11 @@ message ExtProcOverrides {

// Set a different gRPC service for this route than the default.
config.core.v3.GrpcService grpc_service = 5;

// Options related to the sending and receiving of dynamic metadata.
// Lists of forwarding and receiving namespaces will be overridden in their entirety,
// meaning the most-specific config that specifies this override will be the final
// config used. It is the prerogative of the control plane to ensure this
// most-specific config contains the correct final overrides.
MetadataOptions metadata_options = 6;
}
27 changes: 12 additions & 15 deletions api/envoy/service/ext_proc/v3/external_processor.proto
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ service ExternalProcessor {

// This represents the different types of messages that Envoy can send
// to an external processing server.
// [#next-free-field: 8]
// [#next-free-field: 9]
message ProcessingRequest {
// Specify whether the filter that sent this request is running in synchronous
// or asynchronous mode. The choice of synchronous or asynchronous mode
Expand Down Expand Up @@ -91,30 +91,27 @@ message ProcessingRequest {
// a BodyResponse message, an ImmediateResponse message, or close the stream.
HttpBody request_body = 4;

// A chunk of the HTTP request body. Unless ``async_mode`` is ``true``, the server must send back
// A chunk of the HTTP response body. Unless ``async_mode`` is ``true``, the server must send back
// a BodyResponse message or close the stream.
HttpBody response_body = 5;

// The HTTP trailers for the request path. Unless ``async_mode`` is ``true``, the server
// must send back a TrailerResponse message or close the stream.
//
// This message is only sent if the trailers processing mode is set to ``SEND``.
// If there are no trailers on the original downstream request, then this message
// will only be sent (with empty trailers waiting to be populated) if the
// processing mode is set before the request headers are sent, such as
// in the filter configuration.
// This message is only sent if the trailers processing mode is set to ``SEND`` and
// the original downstream request has trailers.
HttpTrailers request_trailers = 6;

// The HTTP trailers for the response path. Unless ``async_mode`` is ``true``, the server
// must send back a TrailerResponse message or close the stream.
//
// This message is only sent if the trailers processing mode is set to ``SEND``.
// If there are no trailers on the original downstream request, then this message
// will only be sent (with empty trailers waiting to be populated) if the
// processing mode is set before the request headers are sent, such as
// in the filter configuration.
// This message is only sent if the trailers processing mode is set to ``SEND`` and
// the original upstream response has trailers.
HttpTrailers response_trailers = 7;
}

// Dynamic metadata associated with the request.
config.core.v3.Metadata metadata_context = 8;
}

// For every ProcessingRequest received by the server with the ``async_mode`` field
Expand Down Expand Up @@ -158,9 +155,9 @@ message ProcessingResponse {
ImmediateResponse immediate_response = 7;
}

// [#not-implemented-hide:]
// Optional metadata that will be emitted as dynamic metadata to be consumed by the next
// filter. This metadata will be placed in the namespace ``envoy.filters.http.ext_proc``.
// Optional metadata that will be emitted as dynamic metadata to be consumed by
// following filters. This metadata will be placed in the namespace(s) specified by the top-level
// field name(s) of the struct.
google.protobuf.Struct dynamic_metadata = 8;

// Override how parts of the HTTP request and response are processed
Expand Down
6 changes: 3 additions & 3 deletions bazel/repository_locations.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -1506,11 +1506,11 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "rules_license",
project_desc = "Bazel rules for checking open source licenses",
project_url = "https://github.com/bazelbuild/rules_license",
version = "0.0.7",
sha256 = "4531deccb913639c30e5c7512a054d5d875698daeb75d8cf90f284375fe7c360",
version = "0.0.8",
sha256 = "241b06f3097fd186ff468832150d6cc142247dc42a32aaefb56d0099895fd229",
urls = ["https://github.com/bazelbuild/rules_license/releases/download/{version}/rules_license-{version}.tar.gz"],
use_category = ["build", "dataplane_core", "controlplane"],
release_date = "2023-06-16",
release_date = "2024-01-24",
cpe = "N/A",
license = "Apache-2.0",
license_url = "https://github.com/bazelbuild/rules_license/blob/{version}/LICENSE",
Expand Down
3 changes: 0 additions & 3 deletions changelogs/1.29.0.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,6 @@ bug_fixes:
setting. The OAuth spec does not dictate that an authorization server must respond with an expiry. Envoy currently
fails any OAuth flow if the expiry is not set. This setting allows you to provide a default in this case to ensure
the OAuth flow can succeed.
- area: postgres proxy
change: |
Fix a race condition that may result from upstream servers refusing to switch to TLS.
removed_config_or_runtime:
- area: http
Expand Down
26 changes: 26 additions & 0 deletions changelogs/current.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,31 @@ removed_config_or_runtime:
- area: http
change: |
Removed ``envoy.reloadable_features.allow_absolute_url_with_mixed_scheme`` runtime flag and legacy code paths.
- area: active health check
change: |
Removed ``envoy.reloadable_features.keep_endpoint_active_hc_status_on_locality_update`` runtime flag and legacy code paths.
- area: http1
change: |
Removed ``envoy.reloadable_features.http1_allow_codec_error_response_after_1xx_headers`` runtime flag and legacy code paths.
- area: overload manager
change: |
removed ``envoy.reloadable_features.overload_manager_error_unknown_action`` and legacy code paths.
new_features:
- area: aws_request_signing
change: |
Update ``aws_request_signing`` filter to support use as an upstream HTTP filter. This allows successful calculation of
signatures after the forwarding stage has completed, particularly if the path element is modified.
- area: grpc reverse bridge
change: |
Change HTTP status to 200 to respect the gRPC protocol. This may cause problems for incorrect gRPC clients expecting the filter
to preserve HTTP 1.1 responses. This behavioral change can be temporarily reverted by setting runtime guard
``envoy.reloadable_features.grpc_http1_reverse_bridge_change_http_status`` to false.
- area: quic
change: |
Added QUIC protocol option :ref:`send_disable_active_migration
<envoy_v3_api_field_config.listener.v3.QuicProtocolOptions.send_disable_active_migration>` to make the server send clients a transport
parameter to discourage client endpoints from active migration.
- area: ext_proc
change: |
implemented
Expand All @@ -38,6 +56,14 @@ new_features:
change: |
added support for :ref:`%UPSTREAM_CONNECTION_ID% <config_access_log_format_upstream_connection_id>` for the upstream connection
identifier.
- area: ext_proc
change: |
added
:ref:`metadata_options <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.metadata_options>`
config API to enable sending and receiving metadata from/to the external processing server. Both typed and untyped dynamic
metadata may be sent to the server. If
:ref:`receiving_namespaces <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.MetadataOptions.receiving_namespaces>`
is defined, returned metadata may be written to the specified allowed namespaces.
- area: upstream
change: |
Added :ref:`selection_method <envoy_v3_api_msg_extensions.load_balancing_policies.least_request.v3.LeastRequest>`
Expand Down
10 changes: 10 additions & 0 deletions contrib/generic_proxy/filters/network/source/interface/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,16 @@ class NamedFilterConfigFactory : public Config::TypedFactory {
virtual absl::Status validateCodec(const TypedExtensionConfig& /*config*/) {
return absl::OkStatus();
}

std::set<std::string> configTypes() override {
auto config_types = TypedFactory::configTypes();

if (auto message = createEmptyRouteConfigProto(); message != nullptr) {
config_types.insert(createReflectableMessage(*message)->GetDescriptor()->full_name());
}

return config_types;
}
};

} // namespace GenericProxy
Expand Down
Loading

0 comments on commit 209a620

Please sign in to comment.