Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
e6d3cdd
reverse connection tunnels
agrawroh Jun 28, 2025
cc0cabe
initial 1
agrawroh Jul 1, 2025
7502c01
cleanup
agrawroh Jul 1, 2025
f2b79ba
fixes: reset file events to prevent segfault in case a file event is …
basundhara-c Jul 4, 2025
48305ea
WIP: reverse conn initiation and test script to verify workflow
basundhara-c Jul 4, 2025
c7b8433
reverse connection tunnels
agrawroh Jun 28, 2025
1e80774
initial 1
agrawroh Jul 1, 2025
ea6bc4d
cleanup
agrawroh Jul 1, 2025
3e76bca
fixes: reset file events to prevent segfault in case a file event is …
basundhara-c Jul 4, 2025
dc28a02
WIP: reverse conn initiation and test script to verify workflow
basundhara-c Jul 4, 2025
be25dcb
test
agrawroh Jul 7, 2025
49a2cff
Fixes to get re-initiation working
basundhara-c Jul 8, 2025
d492eb5
Merge branch 'feat-rev-conns-new' into feat-rev-conns-new
agrawroh Jul 8, 2025
8c113ba
Merge pull request #2 from basundhara-c/feat-rev-conns-new
agrawroh Jul 8, 2025
8c6f02d
Merge branch 'feat-rev-conns-new' of github-agrawroh:agrawroh/envoy i…
agrawroh Jul 8, 2025
c06ba3f
fix YAMLs
agrawroh Jul 8, 2025
137e409
Bring up docker containers for onprem and cloud
basundhara-c Jul 9, 2025
f677e83
Merge branch 'main' of github.com:envoyproxy/envoy into feat-rev-conn…
agrawroh Jul 10, 2025
0b67e0c
MacOS Fixes
agrawroh Jul 10, 2025
0d584fa
Merge branch 'agrawroh:feat-rev-conns-new' into feat-rev-conns-new
basundhara-c Jul 10, 2025
b93205d
Nits to make test work
basundhara-c Jul 13, 2025
4db2872
reverse conn cluster should get host for node_id and add logic to par…
basundhara-c Jul 14, 2025
05473a0
REVERSE_CONNECTION cluster should be able to parse SNI along with Hos…
basundhara-c Jul 15, 2025
acbba64
Backup config files to build envoy locally
basundhara-c Jul 15, 2025
66c4cb5
WIP: Reverse connection cluster test
basundhara-c Jul 15, 2025
c243f49
Reverse Conn Address should return the downstream socket interface
basundhara-c Jul 17, 2025
85ac26d
Cleanup upstream stat collection
basundhara-c Jul 19, 2025
d790af2
Move reverse conn utility to extensions
basundhara-c Jul 21, 2025
fb3aeaa
Move reverse conn utility to extensions, some small bugfixes and nits
basundhara-c Jul 21, 2025
5eebd84
reverse tunnel acceptor test
basundhara-c Jul 21, 2025
c26287d
reverse conn cluster test
basundhara-c Jul 21, 2025
9210ebe
Merge remote-tracking branch 'upstream/main' into feat-rev-conns-new
basundhara-c Jul 21, 2025
140a560
Nits for formatting errors
basundhara-c Jul 21, 2025
c50a39b
Rename test file, use getIoSocketEagainError() in test
basundhara-c Jul 21, 2025
7dc789e
format api
basundhara-c Jul 22, 2025
4f61639
fixes in reverse conn utility and add unit tests
basundhara-c Jul 22, 2025
dd9c321
Nits to test
basundhara-c Jul 22, 2025
b435b2d
draft changes for listener filter test
basundhara-c Jul 22, 2025
d6fb61b
Merge remote-tracking branch 'upstream/main' into feat-rev-conns-new-…
basundhara-c Jul 22, 2025
82a438f
Merge reverse connection changes from agrawroh/feat-rev-conns-new
agrawroh Jul 23, 2025
55703ae
fixes for gRPC handshake build
basundhara-c Jul 23, 2025
abac90d
get reverse conn cluster to compile
basundhara-c Jul 23, 2025
2cbb4a6
tmp: fixes in reverse conn filter
basundhara-c Jul 23, 2025
2d9abe2
Temp: duplicate FDs and some more fixes
basundhara-c Jul 24, 2025
ad9c987
changes to RCInitiator and add unit tests
basundhara-c Jul 26, 2025
27357ee
Remove gRPC handshake
basundhara-c Jul 27, 2025
c44d174
some fixes and cleanup
basundhara-c Jul 27, 2025
daac636
unit tests
basundhara-c Jul 27, 2025
82f5ca9
reverse conn filter unit test wip
basundhara-c Jul 29, 2025
19686e6
Move handshake proto to downstream interface
basundhara-c Jul 31, 2025
d228b0a
http filter: move handshake proto to downstream interface, and add re…
basundhara-c Jul 31, 2025
cf67841
Merge remote-tracking branch 'upstream/main' into feat-rev-conns-new
basundhara-c Jul 31, 2025
91741c8
remote reverse conn listener since they are fully untested
basundhara-c Jul 31, 2025
f411d0f
get local branch up to date with downstream int changes
basundhara-c Aug 20, 2025
d3345b5
sync changes from reverse_connection_upstream_int
basundhara-c Aug 20, 2025
4a94472
Sync changes from reverse_conn_cluster
basundhara-c Aug 20, 2025
64f698b
Sync changes from origin/reverse_conn_http_filter
basundhara-c Aug 20, 2025
1c1fc14
reverse conn upstream interface: split into different classes
basundhara-c Aug 22, 2025
87afb50
reverse conn downstream interface changes
basundhara-c Aug 22, 2025
cb7589f
reverse conn cluster changes
basundhara-c Aug 22, 2025
3503800
reverse conn listener filter changes
basundhara-c Aug 22, 2025
933ae17
reverse conn http filter changes
basundhara-c Aug 22, 2025
4fa5cdd
formatting files and test network filter
basundhara-c Aug 22, 2025
efc22a8
Merge remote-tracking branch 'upstream/main' into feat-rev-conns-new
basundhara-c Aug 24, 2025
bcd4136
revert reverse_conn_force_local_reply to runtime guard
basundhara-c Aug 25, 2025
2ddc853
remove moveSocket() API
basundhara-c Aug 25, 2025
9d82887
reverse conn http filter: remove moveSocket() API
basundhara-c Aug 25, 2025
e74cbcc
nits
basundhara-c Aug 25, 2025
6f60395
reverse conn downstream int: changes and fixing comments
basundhara-c Aug 25, 2025
9468558
downstream interface changes and fixes
basundhara-c Aug 25, 2025
81aa21a
cherry-pick move handshake proto out of API
basundhara-c Aug 25, 2025
015a957
envoy core: remove moveSocket() API
basundhara-c Aug 25, 2025
57ed0f1
Nit in bootstrap.rst and connection_impl_test
basundhara-c Aug 26, 2025
2d37141
Move classes and tests into separate files
basundhara-c Aug 26, 2025
318af79
split classes into separate files, separate upstream files into its o…
basundhara-c Aug 22, 2025
d28e5f3
Fix format and cleanup imports
basundhara-c Aug 23, 2025
0d70745
Move extra files to backup_files dir
basundhara-c Aug 27, 2025
025dc09
Merge remote-tracking branch 'upstream/main' into feat-rev-conns-new
basundhara-c Aug 27, 2025
01a229f
reverse conn http filter: fix imports
basundhara-c Aug 29, 2025
531f264
test commit: network filter
basundhara-c Aug 29, 2025
a352bd7
reverse conn cluster: fix imports
basundhara-c Aug 29, 2025
dbd3b30
fix imports
basundhara-c Aug 29, 2025
88b397f
addressed comments from @yanavlasov
agrawroh Aug 30, 2025
fbf85ab
Move RCConnectionWrapper out and small changes
basundhara-c Sep 5, 2025
a8f2974
http filter changes
basundhara-c Sep 5, 2025
c1dce98
format files
basundhara-c Sep 5, 2025
5293d89
filter: reverse tunnel network filter
agrawroh Sep 6, 2025
96d29f0
Update cloud-envoy.yaml to use reverse tunnel network filter
basundhara-c Sep 15, 2025
7aadab9
Merge remote-tracking branch 'upstream/main' into feat-rev-conns-new
basundhara-c Sep 15, 2025
c858b22
remove setSocketReused flag and detach http filter
basundhara-c Sep 16, 2025
f3c6782
Changes to reverse tunnel network filter
basundhara-c Sep 16, 2025
e5c8cd6
Merge remote-tracking branch 'upstream/main' into feat-rev-conns-new
basundhara-c Sep 24, 2025
0484e59
reverse_tunnel: add RPING echos in the downstream socket extension at…
agrawroh Sep 24, 2025
2f8cdcf
fix ping reply logic in downstream_reverse_connection_io_handle, add …
basundhara-c Sep 25, 2025
6741fed
changes to reverse connection examples
basundhara-c Sep 25, 2025
5e41f1f
changes to reverse connection docs
basundhara-c Sep 25, 2025
ad4fefa
fixes to docs and format
basundhara-c Sep 25, 2025
381b1f5
Fixes and formatting
basundhara-c Sep 25, 2025
01d4fb3
updates
agrawroh Sep 25, 2025
6ae49df
fixes
agrawroh Sep 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
/*
!/VERSION.txt
!/build_envoy
!/build_envoy_debug
!/ci
!/distribution/docker
!/configs/google-vrp
!/configs/*yaml
!/linux/amd64/build_envoy_debug
!/linux/amd64/release.tar.zst
!/linux/amd64/schema_validator_tool
!/linux/amd64/router_check_tool
Expand Down
1 change: 1 addition & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -433,3 +433,4 @@ extensions/upstreams/tcp @ggreenway @mattklein123
/contrib/qat/ @giantcroc @soulxu
/contrib/generic_proxy/ @wbpcode @UNOWNED
/contrib/tap_sinks/ @coolg92003 @yiyibaoguo
/contrib/reverse_connection/ @arun-vasudev @basundhara-c @agrawoh
3 changes: 3 additions & 0 deletions api/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ proto_library(
"//envoy/extensions/clusters/dns/v3:pkg",
"//envoy/extensions/clusters/dynamic_forward_proxy/v3:pkg",
"//envoy/extensions/clusters/redis/v3:pkg",
"//envoy/extensions/clusters/reverse_connection/v3:pkg",
"//envoy/extensions/common/async_files/v3:pkg",
"//envoy/extensions/common/aws/v3:pkg",
"//envoy/extensions/common/dynamic_forward_proxy/v3:pkg",
Expand Down Expand Up @@ -216,6 +217,7 @@ proto_library(
"//envoy/extensions/filters/http/rate_limit_quota/v3:pkg",
"//envoy/extensions/filters/http/ratelimit/v3:pkg",
"//envoy/extensions/filters/http/rbac/v3:pkg",
"//envoy/extensions/filters/http/reverse_conn/v3:pkg",
"//envoy/extensions/filters/http/router/v3:pkg",
"//envoy/extensions/filters/http/set_filter_state/v3:pkg",
"//envoy/extensions/filters/http/set_metadata/v3:pkg",
Expand All @@ -229,6 +231,7 @@ proto_library(
"//envoy/extensions/filters/listener/original_dst/v3:pkg",
"//envoy/extensions/filters/listener/original_src/v3:pkg",
"//envoy/extensions/filters/listener/proxy_protocol/v3:pkg",
"//envoy/extensions/filters/listener/reverse_connection/v3:pkg",
"//envoy/extensions/filters/listener/tls_inspector/v3:pkg",
"//envoy/extensions/filters/network/connection_limit/v3:pkg",
"//envoy/extensions/filters/network/direct_response/v3:pkg",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,26 @@ syntax = "proto3";

package envoy.extensions.bootstrap.reverse_tunnel.upstream_socket_interface.v3;

import "google/protobuf/wrappers.proto";

import "udpa/annotations/status.proto";
import "validate/validate.proto";

option java_package = "io.envoyproxy.envoy.extensions.bootstrap.reverse_tunnel.upstream_socket_interface.v3";
option java_outer_classname = "UpstreamReverseConnectionSocketInterfaceProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/bootstrap/reverse_tunnel/upstream_socket_interface/v3;upstream_socket_interfacev3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;

// [#protodoc-title: Bootstrap settings for upstream reverse connection socket interface]
// [#protodoc-title: Upstream reverse connection socket interface]
// [#extension: envoy.bootstrap.reverse_tunnel.upstream_socket_interface]

// Configuration for the upstream reverse connection socket interface.
message UpstreamReverseConnectionSocketInterface {
// Stat prefix to be used for upstream reverse connection socket interface stats.
// Stat prefix for upstream reverse connection socket interface stats.
string stat_prefix = 1;

// Number of consecutive ping failures before an idle reverse connection socket is marked dead.
// Defaults to 3 if unset. Must be at least 1.
google.protobuf.UInt32Value ping_failure_threshold = 2 [(validate.rules).uint32 = {gte: 1}];
}
12 changes: 12 additions & 0 deletions api/envoy/extensions/clusters/reverse_connection/v3/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.

load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")

licenses(["notice"]) # Apache 2

api_proto_package(
deps = [
"@com_github_cncf_xds//udpa/annotations:pkg",
"@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
syntax = "proto3";

package envoy.extensions.clusters.reverse_connection.v3;

import "google/protobuf/duration.proto";

import "xds/type/matcher/v3/matcher.proto";

import "udpa/annotations/status.proto";
import "validate/validate.proto";

option java_package = "io.envoyproxy.envoy.extensions.clusters.reverse_connection.v3";
option java_outer_classname = "ReverseConnectionProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/clusters/reverse_connection/v3;reverse_connectionv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;

// [#protodoc-title: Reverse connection cluster]
// [#extension: envoy.clusters.reverse_connection]

// Configuration for a cluster of type REVERSE_CONNECTION.
message RevConClusterConfig {
// Time interval after which Envoy removes unused dynamic hosts created for reverse connections.
// Hosts that are not referenced by any connection pool are deleted during cleanup.
//
// If unset, Envoy uses a default of 60s.
google.protobuf.Duration cleanup_interval = 1 [(validate.rules).duration = {gt {}}];

// Host identifier matcher.
//
// This matcher is evaluated on the downstream request and yields a ``HostIdAction``.
// The action's payload is used as the host identifier to select the reverse connection
// endpoint.
//
// Typical rules use built-in inputs such as:
//
// * ``HttpRequestHeaderMatchInput`` to map a request header value.
// * ``HttpAttributesCelMatchInput`` to compute a value with CEL from headers/SNI.
//
// The match tree can be a list or a map matcher. The first matching rule should
// return a ``HostIdAction`` with the desired identifier.
//
// Example:
//
// .. validated-code-block:: yaml
// :type-name: xds.type.matcher.v3.Matcher
//
// matcher_list:
// matchers:
// - predicate:
// single_predicate:
// input:
// typed_config:
// '@type': type.googleapis.com/envoy.type.matcher.v3.HttpRequestHeaderMatchInput
// header_name: x-remote-node-id
// value_match:
// exact: node-a
// on_match:
// action:
// typed_config:
// '@type': type.googleapis.com/envoy.extensions.clusters.reverse_connection.v3.HostIdAction
// host_id: "node-a"
//
// - predicate:
// single_predicate:
// input:
// typed_config:
// '@type': type.googleapis.com/envoy.type.matcher.v3.HttpRequestHeaderMatchInput
// header_name: x-remote-node-id
// value_match:
// exact: node-b
// on_match:
// action:
// typed_config:
// '@type': type.googleapis.com/envoy.extensions.clusters.reverse_connection.v3.HostIdAction
// host_id: "node-b"
//
// If the matcher does not return a ``HostIdAction``, the request will not be routed.
xds.type.matcher.v3.Matcher host_id_matcher = 2 [(validate.rules).message = {required: true}];
}

// Action that returns the resolved host identifier.
message HostIdAction {
// Resolved host identifier for the reverse connection endpoint.
string host_id = 1 [(validate.rules).string = {min_len: 1}];
}
9 changes: 9 additions & 0 deletions api/envoy/extensions/filters/http/reverse_conn/v3/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.

load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")

licenses(["notice"]) # Apache 2

api_proto_package(
deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
syntax = "proto3";

package envoy.extensions.filters.http.reverse_conn.v3;

import "google/protobuf/wrappers.proto";

import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";

option java_package = "io.envoyproxy.envoy.extensions.filters.http.reverse_conn.v3";
option java_outer_classname = "ReverseConnProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/reverse_conn/v3;reverse_connv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;

// [#protodoc-title: ReverseConn]
// ReverseConn :ref:`configuration overview <config_http_filters_reverse_conn>`.
// [#extension: envoy.filters.http.reverse_conn]

message ReverseConn {
option (udpa.annotations.versioning).previous_message_type =
"envoy.extensions.filters.http.reverse_conn.v3alpha.ReverseConn";

google.protobuf.UInt32Value ping_interval = 1;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.

load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")

licenses(["notice"]) # Apache 2

api_proto_package(
deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
syntax = "proto3";

package envoy.extensions.filters.listener.reverse_connection.v3;

import "google/protobuf/wrappers.proto";

import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";

option java_package = "io.envoyproxy.envoy.extensions.filters.listener.reverse_connection.v3";
option java_outer_classname = "ReverseConnectionProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/listener/reverse_connection/v3;reverse_connectionv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;

// [#protodoc-title: Reverse Connection Filter]
// Reverse Connection listener filter.
// [#extension: envoy.filters.listener.reverse_connection]

message ReverseConnection {
option (udpa.annotations.versioning).previous_message_type =
"envoy.extensions.filters.listener.reverse_connection.v3alpha.ReverseConnection";

google.protobuf.UInt32Value ping_wait_timeout = 1;
}
3 changes: 3 additions & 0 deletions api/versioning/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ proto_library(
"//envoy/extensions/clusters/dns/v3:pkg",
"//envoy/extensions/clusters/dynamic_forward_proxy/v3:pkg",
"//envoy/extensions/clusters/redis/v3:pkg",
"//envoy/extensions/clusters/reverse_connection/v3:pkg",
"//envoy/extensions/common/async_files/v3:pkg",
"//envoy/extensions/common/aws/v3:pkg",
"//envoy/extensions/common/dynamic_forward_proxy/v3:pkg",
Expand Down Expand Up @@ -153,6 +154,7 @@ proto_library(
"//envoy/extensions/filters/http/rate_limit_quota/v3:pkg",
"//envoy/extensions/filters/http/ratelimit/v3:pkg",
"//envoy/extensions/filters/http/rbac/v3:pkg",
"//envoy/extensions/filters/http/reverse_conn/v3:pkg",
"//envoy/extensions/filters/http/router/v3:pkg",
"//envoy/extensions/filters/http/set_filter_state/v3:pkg",
"//envoy/extensions/filters/http/set_metadata/v3:pkg",
Expand All @@ -166,6 +168,7 @@ proto_library(
"//envoy/extensions/filters/listener/original_dst/v3:pkg",
"//envoy/extensions/filters/listener/original_src/v3:pkg",
"//envoy/extensions/filters/listener/proxy_protocol/v3:pkg",
"//envoy/extensions/filters/listener/reverse_connection/v3:pkg",
"//envoy/extensions/filters/listener/tls_inspector/v3:pkg",
"//envoy/extensions/filters/network/connection_limit/v3:pkg",
"//envoy/extensions/filters/network/direct_response/v3:pkg",
Expand Down
90 changes: 90 additions & 0 deletions ci/Dockerfile-ntnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
ARG BUILD_OS=ubuntu
ARG BUILD_TAG=20.04
ARG ENVOY_VRP_BASE_IMAGE=envoy


FROM scratch AS binary

ARG TARGETPLATFORM
ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
ARG ENVOY_BINARY=envoy
ARG ENVOY_BINARY_SUFFIX=
ADD ${TARGETPLATFORM}/build_${ENVOY_BINARY}_debug${ENVOY_BINARY_SUFFIX}/envoy* /usr/local/bin/
ADD configs/envoyproxy_io_proxy.yaml /etc/envoy/envoy.yaml
COPY ${TARGETPLATFORM}/build_${ENVOY_BINARY}_debug${ENVOY_BINARY_SUFFIX}/schema_validator_tool /usr/local/bin/schema_validator_tool
COPY ci/docker-entrypoint.sh /


# STAGE: envoy
FROM ${BUILD_OS}:${BUILD_TAG} AS envoy

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get upgrade -qq -y \
&& apt-get install -qq --no-install-recommends -y ca-certificates iproute2 iputils-ping curl wget \
&& apt-get autoremove -y -qq && apt-get clean \
&& rm -rf /tmp/* /var/tmp/* \
&& rm -rf /var/lib/apt/lists/*

RUN mkdir -p /etc/envoy

COPY --from=binary /usr/local/bin/envoy* /usr/local/bin/
COPY --from=binary /etc/envoy/envoy.yaml /etc/envoy/envoy.yaml
COPY --from=binary /docker-entrypoint.sh /

RUN adduser --group --system envoy

EXPOSE 10000

ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["envoy", "-c", "/etc/envoy/envoy.yaml"]


# STAGE: envoy-distroless
# gcr.io/distroless/base-nossl-debian11:nonroot
FROM gcr.io/distroless/base-nossl-debian11:nonroot@sha256:f10e1fbf558c630a4b74a987e6c754d45bf59f9ddcefce090f6b111925996767 AS envoy-distroless

COPY --from=binary /usr/local/bin/envoy* /usr/local/bin/
COPY --from=binary /etc/envoy/envoy.yaml /etc/envoy/envoy.yaml

EXPOSE 10000

ENTRYPOINT ["/usr/local/bin/envoy"]
CMD ["-c", "/etc/envoy/envoy.yaml"]


# STAGE: envoy-google-vrp
FROM ${ENVOY_VRP_BASE_IMAGE} AS envoy-google-vrp

RUN apt-get update \
&& apt-get upgrade -y -qq \
&& apt-get install -y -qq libc++1 supervisor gdb strace tshark \
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf /tmp/* /var/tmp/* \
&& rm -rf /var/lib/apt/lists/*

ADD configs/google-vrp/envoy-edge.yaml /etc/envoy/envoy-edge.yaml
ADD configs/google-vrp/envoy-origin.yaml /etc/envoy/envoy-origin.yaml
ADD configs/google-vrp/launch_envoy.sh /usr/local/bin/launch_envoy.sh
ADD configs/google-vrp/supervisor.conf /etc/supervisor.conf
ADD test/config/integration/certs/serverkey.pem /etc/envoy/certs/serverkey.pem
ADD test/config/integration/certs/servercert.pem /etc/envoy/certs/servercert.pem
# ADD %local envoy bin% /usr/local/bin/envoy
RUN chmod 777 /var/log/supervisor
RUN chmod a+r /etc/supervisor.conf /etc/envoy/* /etc/envoy/certs/*
RUN chmod a+rx /usr/local/bin/launch_envoy.sh

EXPOSE 10000
EXPOSE 10001

CMD ["supervisord", "-c", "/etc/supervisor.conf"]

# STAGE: envoy-tools
FROM ${BUILD_OS}:${BUILD_TAG} AS envoy-tools

COPY --from=binary /usr/local/bin/schema_validator_tool /usr/local/bin/


# Make envoy image as last stage so it is built by default
FROM envoy
16 changes: 16 additions & 0 deletions ci/docker-entrypoint-ntnx.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env sh
set -e

# if the first argument look like a parameter (i.e. start with '-'), run Envoy
if [ "${1#-}" != "$1" ]; then
set -- envoy "$@"
fi

if [ "$1" = 'envoy' ]; then
# set the log level if the $loglevel variable is set
if [ -n "$loglevel" ]; then
set -- "$@" --log-level "$loglevel"
fi
fi

exec "$@"
2 changes: 1 addition & 1 deletion ci/run_envoy_docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ elif [[ -n "$ENVOY_DOCKER_IN_DOCKER" ]]; then
COMPOSE_SERVICE="envoy-build-dind"
fi

exec docker compose \
exec docker-compose \
-f "${SCRIPT_DIR}/docker-compose.yml" \
${ENVOY_DOCKER_PLATFORM:+-p "$ENVOY_DOCKER_PLATFORM"} \
run \
Expand Down
Loading