syntax = "proto3"; package gloo.solo.io; option go_package = "github.com/solo-io/gloo/projects/gloo/pkg/api/v1"; import "google/protobuf/struct.proto"; import "extproto/ext.proto"; option (extproto.equal_all) = true; option (extproto.hash_all) = true; option (extproto.clone_all) = true; import "github.com/solo-io/gloo/projects/gloo/api/v1/ssl/ssl.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/extensions.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/circuit_breaker.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/load_balancer.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/connection.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/aws/aws.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/rest/rest.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/grpc/grpc.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/grpc_web/grpc_web.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/hcm/hcm.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/tcp/tcp.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/azure/azure.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/consul/consul.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/kubernetes/kubernetes.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/retries/retries.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/static/static.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/stats/stats.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/transformation/prefix_rewrite.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/transformation/transformation.proto"; import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/faultinjection/fault.proto"; // add the following line: import "github.com/solo-io/gloo/projects/gloo/api/v1/plugins/gce/gce.proto"; import "google/protobuf/duration.proto"; // Plugin-specific configuration that lives on gateways // Each ListenerPlugin object contains configuration for a specific plugin // Note to developers: new Listener Plugins must be added to this struct // to be usable by Gloo. message ListenerPlugins { // Future sight for matching } // Plugin-specific configuration that lives on http listeners message HttpListenerPlugins { grpc_web.plugins.gloo.solo.io.GrpcWeb grpc_web = 1; hcm.plugins.gloo.solo.io.HttpConnectionManagerSettings http_connection_manager_settings = 2; } // Plugin-specific configuration that lives on tcp listeners message TcpListenerPlugins { tcp.plugins.gloo.solo.io.TcpProxySettings tcp_proxy_settings = 3; } // Plugin-specific configuration that lives on virtual hosts // Each VirtualHostPlugin object contains configuration for a specific plugin // Note to developers: new Virtual Host Plugins must be added to this struct // to be usable by Gloo. message VirtualHostPlugins { Extensions extensions = 1; retries.plugins.gloo.solo.io.RetryPolicy retries = 5; stats.plugins.gloo.solo.io.Stats stats = 10; } // Plugin-specific configuration that lives on routes // Each RoutePlugin object contains configuration for a specific plugin // Note to developers: new Route Plugins must be added to this struct // to be usable by Gloo. message RoutePlugins { envoy.api.v2.filter.http.RouteTransformations transformations = 1; fault.plugins.gloo.solo.io.RouteFaults faults = 2; transformation.plugins.gloo.solo.io.PrefixRewrite prefix_rewrite = 3; google.protobuf.Duration timeout = 4; retries.plugins.gloo.solo.io.RetryPolicy retries = 5; Extensions extensions = 6; } // Configuration for Destinations that are tied to the UpstreamSpec or ServiceSpec on that destination message DestinationSpec { // Note to developers: new DestinationSpecs must be added to this oneof field // to be usable by Gloo. oneof destination_type { aws.plugins.gloo.solo.io.DestinationSpec aws = 1; azure.plugins.gloo.solo.io.DestinationSpec azure = 2; rest.plugins.gloo.solo.io.DestinationSpec rest = 3; grpc.plugins.gloo.solo.io.DestinationSpec grpc = 4; } } // Each upstream in Gloo has a type. Supported types include `static`, `kube`, `aws`, `consul`, and more. // Each upstream type is handled by a corresponding Gloo plugin. (plugins currently need to be compiled into Gloo) message UpstreamSpec { UpstreamSslConfig ssl_config = 6; // Circuit breakers for this upstream. if not set, the defaults ones from the Gloo settings will be used. // if those are not set, [envoy's defaults](https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/circuit_breaker.proto#envoy-api-msg-cluster-circuitbreakers) // will be used. CircuitBreakerConfig circuit_breakers = 7; LoadBalancerConfig load_balancer_config = 8; ConnectionConfig connection_config = 9; // Use http2 when communicating with this upstream // this field is evaluated `true` for upstreams // with a grpc service spec bool use_http2 = 10; // Note to developers: new Upstream plugins must be added to this oneof field // to be usable by Gloo. oneof upstream_type { kubernetes.plugins.gloo.solo.io.UpstreamSpec kube = 1; static.plugins.gloo.solo.io.UpstreamSpec static = 4; aws.plugins.gloo.solo.io.UpstreamSpec aws = 2; azure.plugins.gloo.solo.io.UpstreamSpec azure = 3; consul.plugins.gloo.solo.io.UpstreamSpec consul = 5; gce.plugins.gloo.solo.io.UpstreamSpec gce = 11; } }