mirror of
https://github.com/status-im/consul.git
synced 2025-02-16 15:47:21 +00:00
This new controller produces an intermediate output (ComputedRoutes) that is meant to summarize all relevant xRoutes and related mesh configuration in an easier-to-use format for downstream use to construct the ProxyStateTemplate. It also applies status updates to the xRoute resource types to indicate that they are themselves semantically valid inputs.
119 lines
3.6 KiB
Protocol Buffer
119 lines
3.6 KiB
Protocol Buffer
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
syntax = "proto3";
|
|
|
|
package hashicorp.consul.mesh.v1alpha1;
|
|
|
|
import "pbcatalog/v1alpha1/failover_policy.proto";
|
|
import "pbcatalog/v1alpha1/service.proto";
|
|
import "pbmesh/v1alpha1/common.proto";
|
|
import "pbmesh/v1alpha1/destination_policy.proto";
|
|
import "pbmesh/v1alpha1/grpc_route.proto";
|
|
import "pbmesh/v1alpha1/http_route.proto";
|
|
import "pbmesh/v1alpha1/http_route_retries.proto";
|
|
import "pbmesh/v1alpha1/http_route_timeouts.proto";
|
|
|
|
// This is a Resource type.
|
|
message ComputedRoutes {
|
|
map<string, ComputedPortRoutes> ported_configs = 1;
|
|
}
|
|
|
|
message ComputedPortRoutes {
|
|
oneof config {
|
|
ComputedHTTPRoute http = 1;
|
|
ComputedGRPCRoute grpc = 2;
|
|
ComputedTCPRoute tcp = 3;
|
|
}
|
|
bool using_default_config = 4; // TODO
|
|
|
|
// map key is an opaque string; like disco chain target name
|
|
map<string, BackendTargetDetails> targets = 5;
|
|
}
|
|
|
|
message ComputedHTTPRoute {
|
|
ParentReference parent_ref = 1;
|
|
reserved 2; // hostnames
|
|
repeated ComputedHTTPRouteRule rules = 3;
|
|
}
|
|
|
|
message ComputedHTTPRouteRule {
|
|
repeated HTTPRouteMatch matches = 1;
|
|
repeated HTTPRouteFilter filters = 2;
|
|
repeated ComputedHTTPBackendRef backend_refs = 3;
|
|
HTTPRouteTimeouts timeouts = 4;
|
|
HTTPRouteRetries retries = 5;
|
|
}
|
|
|
|
message ComputedHTTPBackendRef {
|
|
// BackendTarget indicates which key in the targets map provides
|
|
// the rest of the configuration.
|
|
//
|
|
// If this field is set to the empty string, or is the sentinel value
|
|
// "NULL-ROUTE" is an indication that all of the traffic destined for this
|
|
// backend reference should be null routed in a format appropriate for the
|
|
// protocol (i.e. for HTTP use 5xx).
|
|
string backend_target = 1;
|
|
uint32 weight = 2;
|
|
repeated HTTPRouteFilter filters = 3;
|
|
}
|
|
|
|
message ComputedGRPCRoute {
|
|
ParentReference parent_ref = 1;
|
|
reserved 2; // hostnames
|
|
repeated ComputedGRPCRouteRule rules = 3;
|
|
}
|
|
|
|
message ComputedGRPCRouteRule {
|
|
repeated GRPCRouteMatch matches = 1;
|
|
repeated GRPCRouteFilter filters = 2;
|
|
repeated ComputedGRPCBackendRef backend_refs = 3;
|
|
HTTPRouteTimeouts timeouts = 4;
|
|
HTTPRouteRetries retries = 5;
|
|
}
|
|
|
|
message ComputedGRPCBackendRef {
|
|
// BackendTarget indicates which key in the targets map provides
|
|
// the rest of the configuration.
|
|
//
|
|
// If this field is set to the empty string, or is the sentinel value
|
|
// "NULL-ROUTE" is an indication that all of the traffic destined for this
|
|
// backend reference should be null routed in a format appropriate for the
|
|
// protocol (i.e. for HTTP use 5xx).
|
|
string backend_target = 1;
|
|
uint32 weight = 2;
|
|
repeated GRPCRouteFilter filters = 3;
|
|
}
|
|
|
|
message ComputedTCPRoute {
|
|
ParentReference parent_ref = 1;
|
|
repeated ComputedTCPRouteRule rules = 2;
|
|
}
|
|
|
|
message ComputedTCPRouteRule {
|
|
repeated ComputedTCPBackendRef backend_refs = 1;
|
|
}
|
|
|
|
// TODO: look into smuggling the target through a different typeURL, or just
|
|
// skip in favor of letting the caller do their own lookups?
|
|
message ComputedTCPBackendRef {
|
|
// BackendTarget indicates which key in the targets map provides
|
|
// the rest of the configuration.
|
|
//
|
|
// If this field is set to the empty string, or is the sentinel value
|
|
// "NULL-ROUTE" is an indication that all of the traffic destined for this
|
|
// backend reference should be null routed in a format appropriate for the
|
|
// protocol (i.e. for HTTP use 5xx).
|
|
string backend_target = 1;
|
|
uint32 weight = 2;
|
|
}
|
|
|
|
message BackendTargetDetails {
|
|
// identity info
|
|
BackendReference backend_ref = 1;
|
|
|
|
hashicorp.consul.catalog.v1alpha1.Service service = 3;
|
|
hashicorp.consul.catalog.v1alpha1.FailoverPolicy failover_policy = 4;
|
|
DestinationPolicy destination_policy = 5;
|
|
}
|