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.