github.com/projectcontour/contour@v1.28.2/site/content/docs/v1.4.0/configuration.md (about)

     1  # Contour Configuration Reference
     2  
     3  ## Configuration File
     4  
     5  A configuration file can be passed to the `--config-path` argument of the `contour serve` command to specify additional configuration to Contour.
     6  In most deployments, this file is passed to Contour via a ConfigMap which is mounted as a volume to the Contour pod.
     7  
     8  The Contour configuration file is optional.
     9  In its absence, Contour will operate with reasonable defaults.
    10  Where Contour settings can also be specified with command-line flags, the command-line value takes precedence over the configuration file.
    11  
    12  | Field Name | Type | Default | Description |
    13  |------------|------|---------|-------------|
    14  | accesslog-format | string | `envoy` | This key sets the global [access log format][2] for Envoy. Valid options are `envoy` or `json`. |
    15  | debug | boolean | `false` | Enables debug logging. |
    16  | disablePermitInsecure | boolean | `false` | If this field is true, Contour will ignore `PermitInsecure` field in HTTPProxy documents. |
    17  | envoy-service-name | string | `envoy` | This sets the service name that will be inspected for address details to be applied to Ingress objects. |
    18  | envoy-service-namespace | string | `projectcontour` | This sets the namespace of the service that will be inspected for address details to be applied to Ingress objects. |
    19  | ingress-status-address | string | None | If present, this specifies the address that will be copied into the Ingress status for each Ingress that Contour manages. It is exclusive with `envoy-service-name` and `envoy-service-namespace`.|
    20  | incluster | boolean | `false` | This field specifies that Contour is running in a Kubernetes cluster and should use the in-cluster client access configuration.  |
    21  | json-fields | string array | [fields][5]| This is the list the field names to include in the JSON [access log format][2]. |
    22  | kubeconfig | string | `$HOME/.kube/config` | Path to a Kubernetes [kubeconfig file][3] for when Contour is executed outside a cluster. |
    23  | leaderelection | leaderelection | | The [leader election configuration](#leader-election-configuration). |
    24  | request-timeout | [duration][4] | `0s` | This field specifies the default request timeout as a Go duration string. Zero means there is no timeout. |
    25  | tls | TLS | | The default [TLS configuration](#tls-configuration). |
    26  {: class="table thead-dark table-bordered"}
    27  
    28  ### TLS Configuration
    29  
    30  The TLS configuration block can be used to configure default values for how
    31  Contour should provision TLS hosts.
    32  
    33  | Field Name | Type| Default  | Description |
    34  |------------|-----|----------|-------------|
    35  | minimum-protocol-version| string | `""` | This field specifies the minimum TLS protocol version that is allowed. Valid options are `1.2` and `1.3`. Any other value defaults to TLS 1.1. |
    36  {: class="table thead-dark table-bordered"}
    37  
    38  ### Leader Election Configuration
    39  
    40  The leader election configuration block configures how a deployment with more than one Contour pod elects a leader.
    41  The Contour leader is responsible for updating the status field on Ingress and HTTPProxy documents.
    42  In the vast majority of deployments, only the `configmap-name` and `configmap-namespace` fields should require any configuration.
    43  
    44  | Field Name | Type | Default | Description |
    45  |------------|------|---------|-------------|
    46  | configmap-name | string | `leader-elect` | The name of the ConfigMap that Contour leader election will lease. |
    47  | configmap-namespace | string | `projectcontour` | The namespace of the ConfigMap that Contour leader election will lease. If the `CONTOUR_NAMESPACE` environment variable is present, Contour will populate this field with its value. |
    48  | lease-duration | [duration][4] | `15s` | The duration of the leadership lease. |
    49  | renew-deadline | [duration][4] | `10s` | The length of time that the leader will retry refreshing leadership before giving up. |
    50  | retry-period | [duration][4] | `2s` | The interval at which Contour will attempt to the acquire leadership lease. |
    51  {: class="table thead-dark table-bordered"}
    52  
    53  ### Configuration Example
    54  
    55  The following is an example ConfigMap with configuration file included:
    56  
    57  ```yaml
    58  apiVersion: v1
    59  kind: ConfigMap
    60  metadata:
    61    name: contour
    62    namespace: projectcontour
    63  data:
    64    contour.yaml: |
    65      # should contour expect to be running inside a k8s cluster
    66      # incluster: true
    67      #
    68      # path to kubeconfig (if not running inside a k8s cluster)
    69      # kubeconfig: /path/to/.kube/config
    70      #
    71      # disable ingressroute permitInsecure field
    72      # disablePermitInsecure: false
    73      tls:
    74        # minimum TLS version that Contour will negotiate
    75        # minimumProtocolVersion: "1.1"
    76      # The following config shows the defaults for the leader election.
    77      # leaderelection:
    78        # configmap-name: leader-elect
    79        # configmap-namespace: projectcontour
    80  ```
    81  
    82  _Note:_ The default example `contour` includes this [file][1] for easy deployment of Contour.
    83  
    84  [1]: {{< param github_url >}}/tree/{{page.version}}/examples/contour/01-contour-config.yaml
    85  [2]: /guides/structured-logs
    86  [3]: https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
    87  [4]: https://golang.org/pkg/time/#ParseDuration
    88  [5]: https://godoc.org/github.com/projectcontour/contour/internal/envoy#DefaultFields