Documentation ¶
Index ¶
- Constants
- Variables
- func GetenvOr(key string, defaultVal string) string
- type AccessLogFields
- type AccessLogType
- type ClusterDNSFamilyType
- type ClusterParameters
- type HTTPVersionType
- type LeaderElectionParameters
- type NamespacedName
- type Parameters
- type ResourceVersion
- type ServerParameters
- type ServerType
- type TLSParameters
- type TimeoutParameters
Constants ¶
const DEFAULT_ACCESS_LOG_TYPE = EnvoyAccessLog
DEFAULT_ACCESS_LOG_TYPE is the default access log format.
Variables ¶
var DefaultFields = AccessLogFields([]string{
"@timestamp",
"authority",
"bytes_received",
"bytes_sent",
"downstream_local_address",
"downstream_remote_address",
"duration",
"method",
"path",
"protocol",
"request_id",
"requested_server_name",
"response_code",
"response_flags",
"uber_trace_id",
"upstream_cluster",
"upstream_host",
"upstream_local_address",
"upstream_service_time",
"user_agent",
"x_forwarded_for",
})
DefaultFields are fields that will be included by default when JSON logging is enabled.
Functions ¶
Types ¶
type AccessLogFields ¶
type AccessLogFields []string
func (AccessLogFields) AsFieldMap ¶
func (a AccessLogFields) AsFieldMap() map[string]string
func (AccessLogFields) Validate ¶
func (a AccessLogFields) Validate() error
type AccessLogType ¶
type AccessLogType string
AccessLogType is the name of a supported access logging mechanism.
const EnvoyAccessLog AccessLogType = "envoy"
const JSONAccessLog AccessLogType = "json"
func (AccessLogType) Validate ¶
func (a AccessLogType) Validate() error
type ClusterDNSFamilyType ¶
type ClusterDNSFamilyType string
ClusterDNSFamilyType is the Ip family to use for resolving DNS names in an Envoy cluster configuration.
const AutoClusterDNSFamily ClusterDNSFamilyType = "auto"
const IPv4ClusterDNSFamily ClusterDNSFamilyType = "v4"
const IPv6ClusterDNSFamily ClusterDNSFamilyType = "v6"
func (ClusterDNSFamilyType) Validate ¶
func (c ClusterDNSFamilyType) Validate() error
type ClusterParameters ¶
type ClusterParameters struct { // DNSLookupFamily defines how external names are looked up // When configured as V4, the DNS resolver will only perform a lookup // for addresses in the IPv4 family. If V6 is configured, the DNS resolver // will only perform a lookup for addresses in the IPv6 family. // If AUTO is configured, the DNS resolver will first perform a lookup // for addresses in the IPv6 family and fallback to a lookup for addresses // in the IPv4 family. // Note: This only applies to externalName clusters. // // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto.html#envoy-v3-api-enum-config-cluster-v3-cluster-dnslookupfamily // for more information. DNSLookupFamily ClusterDNSFamilyType `yaml:"dns-lookup-family"` }
ClusterParameters holds various configurable cluster values.
type HTTPVersionType ¶
type HTTPVersionType string
HTTPVersionType is the name of a supported HTTP version.
const HTTPVersion1 HTTPVersionType = "http/1.1"
const HTTPVersion2 HTTPVersionType = "http/2"
func (HTTPVersionType) Validate ¶
func (h HTTPVersionType) Validate() error
type LeaderElectionParameters ¶
type LeaderElectionParameters struct { LeaseDuration time.Duration `yaml:"lease-duration,omitempty"` RenewDeadline time.Duration `yaml:"renew-deadline,omitempty"` RetryPeriod time.Duration `yaml:"retry-period,omitempty"` Namespace string `yaml:"configmap-namespace,omitempty"` Name string `yaml:"configmap-name,omitempty"` }
LeaderElectionParameters holds the config bits for leader election inside the configuration file.
type NamespacedName ¶
NamespacedName defines the namespace/name of the Kubernetes resource referred from the configuration file. Used for Contour configuration YAML file parsing, otherwise we could use K8s types.NamespacedName.
func (NamespacedName) Validate ¶
func (n NamespacedName) Validate() error
Validate that both name fields are present, or neither are.
type Parameters ¶
type Parameters struct { // Enable debug logging Debug bool // Kubernetes client parameters. InCluster bool `yaml:"incluster,omitempty"` Kubeconfig string `yaml:"kubeconfig,omitempty"` // Server contains parameters for the xDS server. Server ServerParameters `yaml:"server,omitempty"` // Address to be placed in status.loadbalancer field of Ingress objects. // May be either a literal IP address or a host name. // The value will be placed directly into the relevant field inside the status.loadBalancer struct. IngressStatusAddress string `yaml:"ingress-status-address,omitempty"` // AccessLogFormat sets the global access log format. // Valid options are 'envoy' or 'json' AccessLogFormat AccessLogType `yaml:"accesslog-format,omitempty"` // AccessLogFields sets the fields that JSON logging will // output when AccessLogFormat is json. AccessLogFields AccessLogFields `yaml:"json-fields,omitempty"` // TLS contains TLS policy parameters. TLS TLSParameters `yaml:"tls,omitempty"` // DisablePermitInsecure disables the use of the // permitInsecure field in HTTPProxy. DisablePermitInsecure bool `yaml:"disablePermitInsecure,omitempty"` // LeaderElection contains leader election parameters. LeaderElection LeaderElectionParameters `yaml:"leaderelection,omitempty"` // Timeouts holds various configurable timeouts that can // be set in the config file. Timeouts TimeoutParameters `yaml:"timeouts,omitempty"` // Namespace of the envoy service to inspect for Ingress status details. EnvoyServiceNamespace string `yaml:"envoy-service-namespace,omitempty"` // Name of the envoy service to inspect for Ingress status details. EnvoyServiceName string `yaml:"envoy-service-name,omitempty"` // DefaultHTTPVersions defines the default set of HTTPS // versions the proxy should accept. HTTP versions are // strings of the form "HTTP/xx". Supported versions are // "HTTP/1.1" and "HTTP/2". // // If this field not specified, all supported versions are accepted. DefaultHTTPVersions []HTTPVersionType `yaml:"default-http-versions"` // Cluster holds various configurable Envoy cluster values that can // be set in the config file. Cluster ClusterParameters `yaml:"cluster,omitempty"` }
Parameters contains the configuration file parameters for the Contour ingress controller.
func Parse ¶
func Parse(in io.Reader) (*Parameters, error)
Parse reads parameters from a YAML input stream. Any parameters not specified by the input are according to Defaults().
func (*Parameters) Validate ¶
func (p *Parameters) Validate() error
Validate verifies that the parameter values do not have any syntax errors.
type ResourceVersion ¶
type ResourceVersion string
ResourceVersion is a version of an xDS server.
const XDSv3 ResourceVersion = "v3"
func (ResourceVersion) Validate ¶
func (s ResourceVersion) Validate() error
Validate the xDS server versions.
type ServerParameters ¶
type ServerParameters struct { // Defines the XDSServer to use for `contour serve`. // Defaults to "contour" XDSServerType ServerType `yaml:"xds-server-type,omitempty"` }
ServerParameters holds the configuration for the Contour xDS server.
type ServerType ¶
type ServerType string
ServerType is the name of a xDS server implementation.
const ContourServerType ServerType = "contour"
const EnvoyServerType ServerType = "envoy"
type TLSParameters ¶
type TLSParameters struct { MinimumProtocolVersion string `yaml:"minimum-protocol-version"` // FallbackCertificate defines the namespace/name of the Kubernetes secret to // use as fallback when a non-SNI request is received. FallbackCertificate NamespacedName `yaml:"fallback-certificate,omitempty"` // ClientCertificate defines the namespace/name of the Kubernetes // secret containing the client certificate and private key // to be used when establishing TLS connection to upstream // cluster. ClientCertificate NamespacedName `yaml:"envoy-client-certificate,omitempty"` }
TLSParameters holds configuration file TLS configuration details.
type TimeoutParameters ¶
type TimeoutParameters struct { // RequestTimeout sets the client request timeout globally for Contour. Note that // this is a timeout for the entire request, not an idle timeout. Omit or set to // "infinity" to disable the timeout entirely. // // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-request-timeout // for more information. RequestTimeout string `yaml:"request-timeout,omitempty"` // ConnectionIdleTimeout defines how long the proxy should wait while there are // no active requests (for HTTP/1.1) or streams (for HTTP/2) before terminating // an HTTP connection. Set to "infinity" to disable the timeout entirely. // // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#envoy-v3-api-field-config-core-v3-httpprotocoloptions-idle-timeout // for more information. ConnectionIdleTimeout string `yaml:"connection-idle-timeout,omitempty"` // StreamIdleTimeout defines how long the proxy should wait while there is no // request activity (for HTTP/1.1) or stream activity (for HTTP/2) before // terminating the HTTP request or stream. Set to "infinity" to disable the // timeout entirely. // // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-stream-idle-timeout // for more information. StreamIdleTimeout string `yaml:"stream-idle-timeout,omitempty"` // MaxConnectionDuration defines the maximum period of time after an HTTP connection // has been established from the client to the proxy before it is closed by the proxy, // regardless of whether there has been activity or not. Omit or set to "infinity" for // no max duration. // // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#envoy-v3-api-field-config-core-v3-httpprotocoloptions-max-connection-duration // for more information. MaxConnectionDuration string `yaml:"max-connection-duration,omitempty"` // ConnectionShutdownGracePeriod defines how long the proxy will wait between sending an // initial GOAWAY frame and a second, final GOAWAY frame when terminating an HTTP/2 connection. // During this grace period, the proxy will continue to respond to new streams. After the final // GOAWAY frame has been sent, the proxy will refuse new streams. // // See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-drain-timeout // for more information. ConnectionShutdownGracePeriod string `yaml:"connection-shutdown-grace-period,omitempty"` }
TimeoutParameters holds various configurable proxy timeout values.
func (TimeoutParameters) Validate ¶
func (t TimeoutParameters) Validate() error
Validate the timeout parameters.