README

Contour Build and Test Pull Request Go Report Card GitHub release License Slack CII Best Practices

Contour is fun at parties!

Overview

Contour is an Ingress controller for Kubernetes that works by deploying the Envoy proxy as a reverse proxy and load balancer. Contour supports dynamic configuration updates out of the box while maintaining a lightweight profile.

Contour also introduces a new ingress API (HTTPProxy) which is implemented via a Custom Resource Definition (CRD). Its goal is to expand upon the functionality of the Ingress API to allow for a richer user experience as well as solve shortcomings in the original design.

Prerequisites

Contour requires Kubernetes version 1.16 or later, for v1 Custom Resource Definition support.

RBAC must be enabled on your cluster.

Get started

Getting started with Contour is as simple as one command. See the Getting Started document.

Troubleshooting

If you encounter issues, review the Troubleshooting section of the docs, file an issue, or talk to us on the #contour channel on the Kubernetes Slack server.

Contributing

Thanks for taking the time to join our community and start contributing!

Roadmap

See Contour's roadmap to learn more about where we are headed.

Security

Security Audit

A third party security audit was performed by Cure53 in December of 2020. You can see the full report here.

Reporting security vulnerabilities

If you've found a security related issue, a vulnerability, or a potential vulnerability in Contour please let the Contour Security Team know with the details of the vulnerability. We'll send a confirmation email to acknowledge your report, and we'll send an additional email when we've identified the issue positively or negatively.

For further details please see our security policy.

Changelog

See the list of releases to find out about feature changes.

Expand ▾ Collapse ▴

Directories

Path Synopsis
apis
projectcontour/v1
Package v1 is the v1 version of the API.
Package v1 is the v1 version of the API.
projectcontour/v1alpha1
Package v1alpha1 contains API Schema definitions for the projectcontour.io v1alpha1 API group +kubebuilder:object:generate=true +k8s:deepcopy-gen=package +groupName=projectcontour.io
Package v1alpha1 contains API Schema definitions for the projectcontour.io v1alpha1 API group +kubebuilder:object:generate=true +k8s:deepcopy-gen=package +groupName=projectcontour.io
cmd
pkg
internal
certgen
Package certgen contains the code that handles the `certgen` subcommand for the main `contour` binary.
Package certgen contains the code that handles the `certgen` subcommand for the main `contour` binary.
contour
Package contour contains the translation business logic that listens to Kubernetes ResourceEventHandler events and translates those into additions/deletions in caches connected to the Envoy xDS gRPC API server.
Package contour contains the translation business logic that listens to Kubernetes ResourceEventHandler events and translates those into additions/deletions in caches connected to the Envoy xDS gRPC API server.
dag
Package dag provides a data model, in the form of a directed acyclic graph, of the relationship between Kubernetes Ingress, Service, and Secret objects.
Package dag provides a data model, in the form of a directed acyclic graph, of the relationship between Kubernetes Ingress, Service, and Secret objects.
debug
Package debug provides http endpoints for healthcheck, metrics, and pprof debugging.
Package debug provides http endpoints for healthcheck, metrics, and pprof debugging.
envoy
Package envoy contains APIs for translating between Contour objects and Envoy configuration APIs and types.
Package envoy contains APIs for translating between Contour objects and Envoy configuration APIs and types.
health
Package health provides a health check service.
Package health provides a health check service.
httpsvc
Package httpsvc provides a HTTP/1.x Service which is compatible with the workgroup.Group API.
Package httpsvc provides a HTTP/1.x Service which is compatible with the workgroup.Group API.
k8s
metrics
Package metrics provides Prometheus metrics for Contour.
Package metrics provides Prometheus metrics for Contour.
protobuf
Package protobuf provides helpers for working with golang/protobuf types.
Package protobuf provides helpers for working with golang/protobuf types.
status
Package status holds pieces for handling status updates propagated from the DAG back to Kubernetes
Package status holds pieces for handling status updates propagated from the DAG back to Kubernetes
workgroup
Package workgroup provides a mechanism for controlling the lifetime of a set of related goroutines.
Package workgroup provides a mechanism for controlling the lifetime of a set of related goroutines.
xds