// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 syntax = "proto3"; package hashicorp.consul.mesh.v1alpha1; import "pbcatalog/v1alpha1/selector.proto"; import "pbmesh/v1alpha1/upstreams_configuration.proto"; import "pbresource/annotations.proto"; import "pbresource/resource.proto"; message Upstreams { option (hashicorp.consul.resource.spec) = {scope: SCOPE_NAMESPACE}; // Selection of workloads these upstreams should apply to. // These can be prefixes or specific workload names. hashicorp.consul.catalog.v1alpha1.WorkloadSelector workloads = 1; // upstreams is the list of explicit upstreams to define for the selected workloads. repeated Upstream upstreams = 2; // pq_upstreams is the list of prepared query upstreams. This field is not supported directly in v2 // and should only be used for migration reasons. repeated PreparedQueryUpstream pq_upstreams = 3; } message Upstream { // destination_ref is the reference to an upstream service. This has to be pbcatalog.Service type. hashicorp.consul.resource.Reference destination_ref = 1; // destination_port is the port name of the upstream service. This should be the name // of the service's target port. string destination_port = 2; // datacenter is the datacenter for where this upstream service lives. string datacenter = 3; // listen_addr is the address where Envoy will listen for requests to this upstream. // It can provided either as an ip:port or as a Unix domain socket. oneof listen_addr { IPPortAddress ip_port = 4; UnixSocketAddress unix = 5; } } message IPPortAddress { // ip is an IPv4 or an IPv6 address. string ip = 1; // port is the port number. uint32 port = 2; } message UnixSocketAddress { // path is the file system path at which to bind a Unix domain socket listener. string path = 1; // mode is the Unix file mode for the socket file. It should be provided // in the numeric notation, for example, "0600". string mode = 2; } message PreparedQueryUpstream { // name is the name of the prepared query to use as an upstream. string name = 1; // datacenter is the datacenter for where this upstream service lives. string datacenter = 2; // listen_addr is the address where Envoy will listen for requests to this upstream. // It can provided either as an ip:port or as a Unix domain socket. oneof listen_addr { IPPortAddress tcp = 4; UnixSocketAddress unix = 5; } UpstreamConfig upstream_config = 6; }