Contour — High-Performance Kubernetes Ingress Controller Using Envoy
Route traffic into Kubernetes clusters with Contour. Built on Envoy proxy, it provides a powerful HTTPProxy CRD for advanced routing, TLS delegation, and rate limiting beyond standard Ingress.
What it is
Contour is a Kubernetes ingress controller that uses Envoy proxy as its data plane. It provides a custom HTTPProxy CRD that goes beyond standard Ingress with features like TLS delegation, rate limiting, and weighted routing.
Contour targets platform engineers running Kubernetes who need more routing control than the standard Ingress resource provides, without the complexity of a full service mesh like Istio.
How it saves time or tokens
Contour provides advanced routing features through a single CRD instead of requiring annotations, config maps, or multiple resources. TLS certificate delegation lets teams manage their own certificates without cluster-admin access. This reduces operational overhead and support tickets.
How to use
- Install Contour on your cluster:
# kubectl quickstart
kubectl apply -f https://projectcontour.io/quickstart/contour.yaml
# Or with Helm
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install contour bitnami/contour -n projectcontour --create-namespace
- Verify pods are running:
kubectl get pods -n projectcontour.
- Create HTTPProxy resources to route traffic to your services.
Example
# HTTPProxy with TLS and weighted routing
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: my-app
spec:
virtualhost:
fqdn: app.example.com
tls:
secretName: app-tls
routes:
- conditions:
- prefix: /
services:
- name: app-v1
port: 80
weight: 90
- name: app-v2
port: 80
weight: 10
Related on TokRepo
- DevOps Tools -- Kubernetes and infrastructure tooling
- Self-Hosted Tools -- Self-hosted infrastructure components
Common pitfalls
- Contour requires Envoy pods running alongside it. Ensure sufficient cluster resources for both Contour control plane and Envoy data plane pods.
- HTTPProxy and standard Ingress resources can conflict if both are applied to the same host. Use one or the other per domain.
- TLS certificate delegation requires the TLSCertificateDelegation resource to be created in the certificate namespace first.
Frequently Asked Questions
Contour uses Envoy as its proxy (high performance, xDS configuration) while NGINX Ingress uses NGINX. Contour provides HTTPProxy CRD for multi-team delegation and advanced routing. NGINX Ingress uses annotations for configuration.
HTTPProxy is a Contour-specific custom resource that extends beyond standard Kubernetes Ingress. It supports route delegation across namespaces, weighted backends, TLS passthrough, rate limiting, and header-based routing in a single resource.
Yes. Contour processes both standard Ingress resources and HTTPProxy CRDs. However, avoid applying both to the same hostname to prevent routing conflicts.
Yes. Contour supports both local and global rate limiting through the HTTPProxy spec. Local rate limiting is configured per-route. Global rate limiting requires an external rate limit service.
Yes. Contour is a CNCF incubating project maintained by VMware and the broader community. It follows the CNCF governance model.
Citations (3)
- Contour GitHub— Contour is a Kubernetes ingress controller using Envoy proxy
- Project Contour Docs— Contour documentation and HTTPProxy reference
- Envoy Documentation— Envoy proxy architecture and xDS API
Related on TokRepo
Discussion
Related Assets
Akaunting — Free Self-Hosted Accounting Software
A free, open-source online accounting application built on Laravel for small businesses and freelancers to manage invoices, expenses, and financial reports.
WooCommerce — Open-Source E-Commerce for WordPress
The most widely used open-source e-commerce plugin for WordPress, powering millions of online stores with a vast extension ecosystem.
Bagisto — Open-Source Laravel E-Commerce Platform
A free and open-source e-commerce framework built on Laravel and Vue.js with multi-store, multi-currency, and multi-locale support.