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

159 lines
5.0 KiB
Protocol Buffer
Raw Normal View History

// Copyright (c) HashiCorp, Inc.
[COMPLIANCE] License changes (#18443) * Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Updating the license from MPL to Business Source License Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at <Blog URL>, FAQ at www.hashicorp.com/licensing-faq, and details of the license at www.hashicorp.com/bsl. * add missing license headers * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 --------- Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
2023-08-11 13:12:13 +00:00
// SPDX-License-Identifier: BUSL-1.1
syntax = "proto3";
package hashicorp.consul.mesh.v1alpha1;
import "google/protobuf/struct.proto";
import "pbcatalog/v1alpha1/selector.proto";
import "pbmesh/v1alpha1/connection.proto";
import "pbmesh/v1alpha1/expose.proto";
import "pbmesh/v1alpha1/routing.proto";
// This is a Resource type.
message ProxyConfiguration {
// Selection of workloads this proxy configuration should apply to.
// These can be prefixes or specific workload names.
hashicorp.consul.catalog.v1alpha1.WorkloadSelector workloads = 1;
// dynamic_config is the configuration that could be changed
// dynamically (i.e. without needing restart).
DynamicConfig dynamic_config = 2;
// bootstrap_config is the configuration that requires proxies
// to be restarted to be applied.
BootstrapConfig bootstrap_config = 3;
// deprecated: prevent usage when using v2 APIs directly.
// needed for backwards compatibility
google.protobuf.Struct opaque_config = 4 [deprecated = true];
}
message DynamicConfig {
// mode indicates the proxy's mode. This will default to 'transparent'.
ProxyMode mode = 1;
TransparentProxy transparent_proxy = 2;
MutualTLSMode mutual_tls_mode = 3;
// local_connection is the configuration that should be used
// to connect to the local application provided per-port.
// The map keys should correspond to port names on the workload.
map<string, ConnectionConfig> local_connection = 4;
// inbound_connections configures inbound connections to the proxy.
InboundConnectionsConfig inbound_connections = 5;
MeshGatewayMode mesh_gateway_mode = 6;
ExposeConfig expose_config = 7;
// AccessLogs configures the output and format of Envoy access logs
AccessLogsConfig access_logs = 8;
repeated EnvoyExtension envoy_extensions = 9;
string public_listener_json = 10;
string listener_tracing_json = 11;
string local_cluster_json = 12;
// deprecated:
// local_workload_address, local_workload_port, and local_workload_socket_path
// are deprecated and are only needed for migration of existing resources.
string local_workload_address = 13 [deprecated = true];
uint32 local_workload_port = 14 [deprecated = true];
string local_workload_socket_path = 15 [deprecated = true];
}
message TransparentProxy {
// outbound_listener_port is the port for the proxy's outbound listener.
// This defaults to 15001.
uint32 outbound_listener_port = 1;
// dialed_directly indicates whether this proxy should be dialed using original destination IP
// in the connection rather than load balance between all endpoints.
bool dialed_directly = 2;
}
// BootstrapConfig is equivalent to configuration defined
// in our docs.
message BootstrapConfig {
string statsd_url = 1;
string dogstatsd_url = 2;
repeated string stats_tags = 3;
string prometheus_bind_addr = 4;
string stats_bind_addr = 5;
string ready_bind_addr = 6;
string override_json_tpl = 7;
string static_clusters_json = 8;
string static_listeners_json = 9;
string stats_sinks_json = 10;
string stats_config_json = 11;
string stats_flush_interval = 12;
string tracing_config_json = 13;
}
enum ProxyMode {
// ProxyModeDefault represents no specific mode and should
// be used to indicate that a different layer of the configuration
// chain should take precedence
// buf:lint:ignore ENUM_ZERO_VALUE_SUFFIX
PROXY_MODE_DEFAULT = 0;
// ProxyModeTransparent represents that inbound and outbound application
// traffic is being captured and redirected through the proxy.
PROXY_MODE_TRANSPARENT = 1;
// ProxyModeDirect represents that the proxy's listeners must be dialed directly
// by the local application and other proxies.
PROXY_MODE_DIRECT = 2;
}
// AccessLogsConfig contains the associated default settings for all Envoy
// instances within the datacenter or partition
message AccessLogsConfig {
// Enabled turns off all access logging
bool enabled = 1;
// DisableListenerLogs turns off just listener logs for connections rejected by Envoy because they don't
// have a matching listener filter.
bool disable_listener_logs = 2;
// Type selects the output for logs: "file", "stderr". "stdout"
LogSinkType type = 3;
// Path is the output file to write logs
string path = 4;
// The presence of one format string or the other implies the access log string encoding.
// Defining Both is invalid.
string json_format = 5;
string text_format = 6;
}
enum LogSinkType {
// buf:lint:ignore ENUM_ZERO_VALUE_SUFFIX
LOG_SINK_TYPE_DEFAULT = 0;
LOG_SINK_TYPE_FILE = 1;
LOG_SINK_TYPE_STDERR = 2;
LOG_SINK_TYPE_STDOUT = 3;
}
// EnvoyExtension has configuration for an extension that patches Envoy resources.
message EnvoyExtension {
string name = 1;
bool required = 2;
google.protobuf.Struct arguments = 3;
string consul_version = 4;
string envoy_version = 5;
}
enum MutualTLSMode {
// buf:lint:ignore ENUM_ZERO_VALUE_SUFFIX
MUTUAL_TLS_MODE_DEFAULT = 0;
MUTUAL_TLS_MODE_STRICT = 1;
MUTUAL_TLS_MODE_PERMISSIVE = 2;
}