Skip to content

Commit 5d7bd7a

Browse files
authored
interop/xds: Interop client and server changes for CSM Observability (#7280)
1 parent 1958fcb commit 5d7bd7a

File tree

8 files changed

+236
-26
lines changed

8 files changed

+236
-26
lines changed

interop/xds/client/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ COPY . .
2424

2525
# Build a static binary without cgo so that we can copy just the binary in the
2626
# final image, and can get rid of Go compiler and gRPC-Go dependencies.
27-
RUN go build -tags osusergo,netgo interop/xds/client/client.go
27+
RUN cd interop/xds/client && go build -tags osusergo,netgo .
2828

2929
# Second stage of the build which copies over only the client binary and skips
3030
# the Go compiler and gRPC repo from the earlier stage. This significantly
3131
# reduces the docker image size.
3232
FROM alpine
33-
COPY --from=build /go/src/grpc-go/client .
33+
COPY --from=build /go/src/grpc-go/interop/xds/client/client .
3434
ENV GRPC_GO_LOG_VERBOSITY_LEVEL=99
3535
ENV GRPC_GO_LOG_SEVERITY_LEVEL="info"
3636
ENV GRPC_GO_LOG_FORMATTER="json"

interop/xds/client/client.go

+60-12
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import (
2525
"fmt"
2626
"log"
2727
"net"
28+
"net/http"
29+
"os"
2830
"strings"
2931
"sync"
3032
"sync/atomic"
@@ -35,15 +37,21 @@ import (
3537
"google.golang.org/grpc/credentials/insecure"
3638
"google.golang.org/grpc/credentials/xds"
3739
"google.golang.org/grpc/grpclog"
40+
_ "google.golang.org/grpc/interop/xds" // to register Custom LB.
3841
"google.golang.org/grpc/metadata"
3942
"google.golang.org/grpc/peer"
4043
"google.golang.org/grpc/reflection"
44+
"google.golang.org/grpc/stats/opentelemetry"
45+
"google.golang.org/grpc/stats/opentelemetry/csm"
4146
"google.golang.org/grpc/status"
4247
_ "google.golang.org/grpc/xds"
4348

4449
testgrpc "google.golang.org/grpc/interop/grpc_testing"
4550
testpb "google.golang.org/grpc/interop/grpc_testing"
46-
_ "google.golang.org/grpc/interop/xds" // to register Custom LB.
51+
52+
"github.com/prometheus/client_golang/prometheus/promhttp"
53+
"go.opentelemetry.io/otel/exporters/prometheus"
54+
"go.opentelemetry.io/otel/sdk/metric"
4755
)
4856

4957
func init() {
@@ -169,16 +177,19 @@ func (as *accumulatedStats) finishRPC(rpcType string, err error) {
169177
}
170178

171179
var (
172-
failOnFailedRPC = flag.Bool("fail_on_failed_rpc", false, "Fail client if any RPCs fail after first success")
173-
numChannels = flag.Int("num_channels", 1, "Num of channels")
174-
printResponse = flag.Bool("print_response", false, "Write RPC response to stdout")
175-
qps = flag.Int("qps", 1, "QPS per channel, for each type of RPC")
176-
rpc = flag.String("rpc", "UnaryCall", "Types of RPCs to make, ',' separated string. RPCs can be EmptyCall or UnaryCall. Deprecated: Use Configure RPC to XdsUpdateClientConfigureServiceServer instead.")
177-
rpcMetadata = flag.String("metadata", "", "The metadata to send with RPC, in format EmptyCall:key1:value1,UnaryCall:key2:value2. Deprecated: Use Configure RPC to XdsUpdateClientConfigureServiceServer instead.")
178-
rpcTimeout = flag.Duration("rpc_timeout", 20*time.Second, "Per RPC timeout")
179-
server = flag.String("server", "localhost:8080", "Address of server to connect to")
180-
statsPort = flag.Int("stats_port", 8081, "Port to expose peer distribution stats service")
181-
secureMode = flag.Bool("secure_mode", false, "If true, retrieve security configuration from the management server. Else, use insecure credentials.")
180+
failOnFailedRPC = flag.Bool("fail_on_failed_rpc", false, "Fail client if any RPCs fail after first success")
181+
numChannels = flag.Int("num_channels", 1, "Num of channels")
182+
printResponse = flag.Bool("print_response", false, "Write RPC response to stdout")
183+
qps = flag.Int("qps", 1, "QPS per channel, for each type of RPC")
184+
rpc = flag.String("rpc", "UnaryCall", "Types of RPCs to make, ',' separated string. RPCs can be EmptyCall or UnaryCall. Deprecated: Use Configure RPC to XdsUpdateClientConfigureServiceServer instead.")
185+
rpcMetadata = flag.String("metadata", "", "The metadata to send with RPC, in format EmptyCall:key1:value1,UnaryCall:key2:value2. Deprecated: Use Configure RPC to XdsUpdateClientConfigureServiceServer instead.")
186+
rpcTimeout = flag.Duration("rpc_timeout", 20*time.Second, "Per RPC timeout")
187+
server = flag.String("server", "localhost:8080", "Address of server to connect to")
188+
statsPort = flag.Int("stats_port", 8081, "Port to expose peer distribution stats service")
189+
secureMode = flag.Bool("secure_mode", false, "If true, retrieve security configuration from the management server. Else, use insecure credentials.")
190+
enableCSMObservability = flag.Bool("enable_csm_observability", false, "Whether to enable CSM Observability")
191+
requestPayloadSize = flag.Int("request_payload_size", 0, "Ask the server to respond with SimpleResponse.payload.body of the given length (may not be implemented on the server).")
192+
responsePayloadSize = flag.Int("response_payload_size", 0, "Ask the server to respond with SimpleResponse.payload.body of the given length (may not be implemented on the server).")
182193

183194
rpcCfgs atomic.Value
184195

@@ -368,6 +379,35 @@ func parseRPCMetadata(rpcMetadataStr string, rpcs []string) []*rpcConfig {
368379

369380
func main() {
370381
flag.Parse()
382+
if *enableCSMObservability {
383+
exporter, err := prometheus.New()
384+
if err != nil {
385+
logger.Fatalf("Failed to start prometheus exporter: %v", err)
386+
}
387+
provider := metric.NewMeterProvider(
388+
metric.WithReader(exporter),
389+
)
390+
var addr string
391+
var ok bool
392+
if addr, ok = os.LookupEnv("OTEL_EXPORTER_PROMETHEUS_HOST"); !ok {
393+
addr = ""
394+
}
395+
var port string
396+
if port, ok = os.LookupEnv("OTEL_EXPORTER_PROMETHEUS_PORT"); !ok {
397+
port = "9464"
398+
}
399+
go func() {
400+
if err := http.ListenAndServe(addr+":"+port, promhttp.Handler()); err != nil {
401+
logger.Fatalf("error listening: %v", err)
402+
}
403+
}()
404+
405+
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
406+
defer cancel()
407+
cleanup := csm.EnableObservability(ctx, opentelemetry.Options{MetricsOptions: opentelemetry.MetricsOptions{MeterProvider: provider}})
408+
defer cleanup()
409+
}
410+
371411
rpcCfgs.Store(parseRPCMetadata(*rpcMetadata, parseRPCTypes(*rpc)))
372412

373413
lis, err := net.Listen("tcp", fmt.Sprintf(":%d", *statsPort))
@@ -430,8 +470,16 @@ func makeOneRPC(c testgrpc.TestServiceClient, cfg *rpcConfig) (*peer.Peer, *rpcI
430470
accStats.startRPC(cfg.typ)
431471
switch cfg.typ {
432472
case unaryCall:
473+
sr := &testpb.SimpleRequest{FillServerId: true}
474+
if *requestPayloadSize > 0 {
475+
sr.Payload = &testpb.Payload{Body: make([]byte, *requestPayloadSize)}
476+
}
477+
if *responsePayloadSize > 0 {
478+
sr.ResponseSize = int32(*responsePayloadSize)
479+
}
480+
sr.ResponseSize = int32(*responsePayloadSize)
433481
var resp *testpb.SimpleResponse
434-
resp, err = c.UnaryCall(ctx, &testpb.SimpleRequest{FillServerId: true}, grpc.Peer(&p), grpc.Header(&header))
482+
resp, err = c.UnaryCall(ctx, sr, grpc.Peer(&p), grpc.Header(&header))
435483
// For UnaryCall, also read hostname from response, in case the server
436484
// isn't updated to send headers.
437485
if resp != nil {

interop/xds/go.mod

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
module google.golang.org/grpc/interop/xds
2+
3+
go 1.21.0
4+
5+
replace google.golang.org/grpc => ../..
6+
7+
replace google.golang.org/grpc/stats/opentelemetry => ../../stats/opentelemetry
8+
9+
require (
10+
github.com/prometheus/client_golang v1.19.1
11+
go.opentelemetry.io/otel/exporters/prometheus v0.49.0
12+
go.opentelemetry.io/otel/sdk/metric v1.27.0
13+
google.golang.org/grpc v1.64.0
14+
google.golang.org/grpc/stats/opentelemetry v0.0.0-20240523232201-f7d3d3eecbee
15+
)
16+
17+
require (
18+
cel.dev/expr v0.15.0 // indirect
19+
cloud.google.com/go/compute/metadata v0.3.0 // indirect
20+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.23.0 // indirect
21+
github.com/beorn7/perks v1.0.1 // indirect
22+
github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect
23+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
24+
github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b // indirect
25+
github.com/envoyproxy/go-control-plane v0.12.0 // indirect
26+
github.com/envoyproxy/protoc-gen-validate v1.0.4 // indirect
27+
github.com/go-logr/logr v1.4.2 // indirect
28+
github.com/go-logr/stdr v1.2.2 // indirect
29+
github.com/golang/protobuf v1.5.4 // indirect
30+
github.com/prometheus/client_model v0.6.1 // indirect
31+
github.com/prometheus/common v0.53.0 // indirect
32+
github.com/prometheus/procfs v0.15.0 // indirect
33+
go.opentelemetry.io/contrib/detectors/gcp v1.27.0 // indirect
34+
go.opentelemetry.io/otel v1.27.0 // indirect
35+
go.opentelemetry.io/otel/metric v1.27.0 // indirect
36+
go.opentelemetry.io/otel/sdk v1.27.0 // indirect
37+
go.opentelemetry.io/otel/trace v1.27.0 // indirect
38+
golang.org/x/net v0.25.0 // indirect
39+
golang.org/x/oauth2 v0.20.0 // indirect
40+
golang.org/x/sync v0.7.0 // indirect
41+
golang.org/x/sys v0.20.0 // indirect
42+
golang.org/x/text v0.15.0 // indirect
43+
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect
44+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect
45+
google.golang.org/protobuf v1.34.1 // indirect
46+
)

interop/xds/go.sum

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
cel.dev/expr v0.15.0 h1:O1jzfJCQBfL5BFoYktaxwIhuttaQPsVWerH9/EEKx0w=
2+
cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg=
3+
cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
4+
cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
5+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.23.0 h1:yRhWveg9NbJcJYoJL4FoSauT2dxnt4N9MIAJ7tvU/mQ=
6+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.23.0/go.mod h1:p2puVVSKjQ84Qb1gzw2XHLs34WQyHTYFZLaVxypAFYs=
7+
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
8+
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
9+
github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g=
10+
github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw=
11+
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
12+
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
13+
github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnThWgvH2wg8376yUJmPhEH4H3kw=
14+
github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
15+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
16+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
17+
github.com/envoyproxy/go-control-plane v0.12.0 h1:4X+VP1GHd1Mhj6IB5mMeGbLCleqxjletLK6K0rbxyZI=
18+
github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0=
19+
github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
20+
github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
21+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
22+
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
23+
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
24+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
25+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
26+
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
27+
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
28+
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
29+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
30+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
31+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
32+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
33+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
34+
github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
35+
github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
36+
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
37+
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
38+
github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE=
39+
github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
40+
github.com/prometheus/procfs v0.15.0 h1:A82kmvXJq2jTu5YUhSGNlYoxh85zLnKgPz4bMZgI5Ek=
41+
github.com/prometheus/procfs v0.15.0/go.mod h1:Y0RJ/Y5g5wJpkTisOtqwDSo4HwhGmLB4VQSw2sQJLHk=
42+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
43+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
44+
go.opentelemetry.io/contrib/detectors/gcp v1.27.0 h1:eVfDeFAPnMFZUhNdDZ/BbpEmC7/xxDKTSba5NhJH88s=
45+
go.opentelemetry.io/contrib/detectors/gcp v1.27.0/go.mod h1:amd+4uZxqJAUx7zI1JvygUtAc2EVWtQeyz8D+3161SQ=
46+
go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg=
47+
go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ=
48+
go.opentelemetry.io/otel/exporters/prometheus v0.49.0 h1:Er5I1g/YhfYv9Affk9nJLfH/+qCCVVg1f2R9AbJfqDQ=
49+
go.opentelemetry.io/otel/exporters/prometheus v0.49.0/go.mod h1:KfQ1wpjf3zsHjzP149P4LyAwWRupc6c7t1ZJ9eXpKQM=
50+
go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik=
51+
go.opentelemetry.io/otel/metric v1.27.0/go.mod h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak=
52+
go.opentelemetry.io/otel/sdk v1.27.0 h1:mlk+/Y1gLPLn84U4tI8d3GNJmGT/eXe3ZuOXN9kTWmI=
53+
go.opentelemetry.io/otel/sdk v1.27.0/go.mod h1:Ha9vbLwJE6W86YstIywK2xFfPjbWlCuwPtMkKdz/Y4A=
54+
go.opentelemetry.io/otel/sdk/metric v1.27.0 h1:5uGNOlpXi+Hbo/DRoI31BSb1v+OGcpv2NemcCrOL8gI=
55+
go.opentelemetry.io/otel/sdk/metric v1.27.0/go.mod h1:we7jJVrYN2kh3mVBlswtPU22K0SA+769l93J6bsyvqw=
56+
go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw=
57+
go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4=
58+
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
59+
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
60+
golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo=
61+
golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
62+
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
63+
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
64+
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
65+
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
66+
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
67+
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
68+
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw=
69+
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU=
70+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8=
71+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
72+
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
73+
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
74+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
75+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

interop/xds/server/Dockerfile

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ COPY . .
2424

2525
# Build a static binary without cgo so that we can copy just the binary in the
2626
# final image, and can get rid of the Go compiler and gRPC-Go dependencies.
27-
RUN go build -tags osusergo,netgo interop/xds/server/server.go
27+
RUN cd interop/xds/server && go build -tags osusergo,netgo .
2828

29-
# Second stage of the build which copies over only the client binary and skips
29+
# Second stage of the build which copies over only the server binary and skips
3030
# the Go compiler and gRPC repo from the earlier stage. This significantly
3131
# reduces the docker image size.
3232
FROM alpine
33-
COPY --from=build /go/src/grpc-go/server .
33+
COPY --from=build /go/src/grpc-go/interop/xds/server/server .
3434
ENV GRPC_GO_LOG_VERBOSITY_LEVEL=99
3535
ENV GRPC_GO_LOG_SEVERITY_LEVEL="info"
3636
ENV GRPC_GO_LOG_FORMATTER="json"

0 commit comments

Comments
 (0)