Contour Ingress controller configuration reference for Lokomotive
Introduction
Contour is an Ingress controller for Kubernetes that deploys the Envoy proxy as a reverse proxy and load balancer.
The Contour Ingress component has different requirements on different platforms. The reason for this is that an Ingress Controller needs traffic to be routed to their ingress pods, and the network configurations needed to achieve that differ on each platform.
Prerequisites
- A Lokomotive cluster accessible via
kubectl
.
Configuration
Contour component configuration example:
component "contour" {
# Optional arguments
enable_monitoring = false
service_type = "NodePort"
node_affinity {
key = "node-role.kubernetes.io/node"
operator = "Exists"
}
node_affinity {
key = "network.lokomotive.io"
operator = "In"
# If the `operator` is set to `"In"`, `values` should be specified.
values = [
"foo",
]
}
toleration {
key = "network.lokomotive.io"
operator = "Equal"
value = "contour"
effect = "NoSchedule"
}
}
Attribute reference
Table of all the arguments accepted by the component.
Argument | Description | Default | Type | Required |
---|---|---|---|---|
enable_monitoring |
Create Prometheus Operator configs to scrape Contour and Envoy metrics. Also deploys Grafana Dashboard. | false | bool | false |
node_affinity |
Node affinity for deploying the operator pod and envoy daemonset. | - | list(object({key = string, operator = string, values = list(string)})) | false |
service_type |
The type of Kubernetes service used to expose Envoy. Set as “NodePort” on the AWS platform. | “LoadBalancer” | string | false |
toleration |
Tolerations that the operator and envoy pods will tolerate. | - | list(object({key = string, effect = string, operator = string, value = string, toleration_seconds = string })) | false |
Applying
To apply the Contour component:
lokoctl component apply contour
This component is installed in the projectcontour
namespace.
Deleting
To destroy the component:
lokoctl component delete contour --delete-namespace