| syntax = "proto3"; |
| |
| package dubbo.mesh.v1alpha1; |
| |
| option go_package = "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1"; |
| |
| import "google/protobuf/wrappers.proto"; |
| import "google/protobuf/struct.proto"; |
| import "api/mesh/options.proto"; |
| |
| // Mesh defines configuration of a single mesh. |
| message Mesh { |
| option (dubbo.mesh.resource).name = "MeshResource"; |
| option (dubbo.mesh.resource).type = "Mesh"; |
| option (dubbo.mesh.resource).package = "mesh"; |
| option (dubbo.mesh.resource).dds.send_to_zone = true; |
| option (dubbo.mesh.resource).ws.name = "mesh"; |
| option (dubbo.mesh.resource).ws.plural = "meshes"; |
| option (dubbo.mesh.resource).allow_to_inspect = true; |
| // mTLS settings of a Mesh. |
| message Mtls { |
| |
| // Name of the enabled backend |
| string enabledBackend = 1; |
| |
| // List of available Certificate Authority backends |
| repeated CertificateAuthorityBackend backends = 2; |
| } |
| |
| // mTLS settings. |
| // +optional |
| Mtls mtls = 1; |
| |
| // Tracing settings. |
| // +optional |
| Tracing tracing = 2; |
| |
| // Logging settings. |
| // +optional |
| Logging logging = 3; |
| |
| // Networking settings of the mesh |
| Networking networking = 5; |
| |
| // Routing settings of the mesh |
| Routing routing = 6; |
| } |
| |
| // CertificateAuthorityBackend defines Certificate Authority backend |
| message CertificateAuthorityBackend { |
| |
| // Name of the backend |
| string name = 1; |
| |
| // Type of the backend. Has to be one of the loaded plugins (Dubbo ships with |
| // builtin and provided) |
| string type = 2; |
| |
| // DpCert defines settings for certificates generated for Dataplanes |
| message DpCert { |
| // Rotation defines rotation settings for Dataplane certificate |
| message Rotation { |
| // Time after which generated certificate for Dataplane will expire |
| string expiration = 1; |
| } |
| // Rotation settings |
| Rotation rotation = 1; |
| } |
| |
| // Dataplane certificate settings |
| DpCert dpCert = 3; |
| |
| // Configuration of the backend |
| google.protobuf.Struct conf = 4; |
| } |
| |
| // Networking defines the networking configuration of the mesh |
| message Networking { |
| |
| // Outbound describes the common mesh outbound settings |
| message Outbound { |
| // Control the passthrough cluster |
| google.protobuf.BoolValue passthrough = 1; |
| } |
| |
| // Outbound settings |
| Outbound outbound = 1; |
| } |
| |
| // Tracing defines tracing configuration of the mesh. |
| message Tracing { |
| |
| // Name of the default backend |
| string defaultBackend = 1; |
| |
| // List of available tracing backends |
| repeated TracingBackend backends = 2; |
| } |
| |
| // TracingBackend defines tracing backend available to mesh. Backends can be |
| // used in TrafficTrace rules. |
| message TracingBackend { |
| // Name of the backend, can be then used in Mesh.tracing.defaultBackend or in |
| // TrafficTrace |
| string name = 1; |
| |
| // Percentage of traces that will be sent to the backend (range 0.0 - 100.0). |
| // Empty value defaults to 100.0% |
| google.protobuf.DoubleValue sampling = 2; |
| |
| // Type of the backend (Dubbo ships with 'zipkin') |
| string type = 3; |
| |
| // Configuration of the backend |
| google.protobuf.Struct conf = 4; |
| } |
| |
| message ZipkinTracingBackendConfig { |
| // Address of Zipkin collector. |
| string url = 1; |
| |
| // Generate 128bit traces. Default: false |
| bool traceId128bit = 2; |
| |
| // Version of the API. values: httpJson, httpJsonV1, httpProto. Default: |
| // httpJson see |
| // https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/trace/v3/trace.proto#envoy-v3-api-enum-config-trace-v3-zipkinconfig-collectorendpointversion |
| string apiVersion = 3; |
| |
| // Determines whether client and server spans will share the same span |
| // context. Default: true. |
| // https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/trace/v3/zipkin.proto#config-trace-v3-zipkinconfig |
| google.protobuf.BoolValue sharedSpanContext = 4; |
| } |
| |
| message Logging { |
| |
| // Name of the default backend |
| string defaultBackend = 1; |
| |
| // List of available logging backends |
| repeated LoggingBackend backends = 2; |
| } |
| |
| // LoggingBackend defines logging backend available to mesh. Backends can be |
| // used in TrafficLog rules. |
| message LoggingBackend { |
| // Name of the backend, can be then used in Mesh.logging.defaultBackend or in |
| // TrafficLogging |
| string name = 1; |
| |
| // Format of access logs. Placehodlers available on |
| // https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log |
| string format = 2; |
| |
| // Type of the backend (Dubbo ships with 'tcp' and 'file') |
| string type = 3; |
| |
| // Configuration of the backend |
| google.protobuf.Struct conf = 4; |
| } |
| |
| // FileLoggingBackendConfig defines configuration for file based access logs |
| message FileLoggingBackendConfig { |
| // Path to a file that logs will be written to |
| string path = 1; |
| } |
| |
| // TcpLoggingBackendConfig defines configuration for TCP based access logs |
| message TcpLoggingBackendConfig { |
| // Address to TCP service that will receive logs |
| string address = 1; |
| } |
| |
| // Routing defines configuration for the routing in the mesh |
| message Routing { |
| // Enable the Locality Aware Load Balancing |
| bool localityAwareLoadBalancing = 1; |
| |
| // Enable routing traffic to services in other zone or external services |
| // through ZoneEgress. Default: false |
| bool zoneEgress = 2; |
| } |