consul/proto-public/pbmesh/v1alpha1/upstreams.proto

80 lines
2.5 KiB
Protocol Buffer

// 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;
}