This page describes a general approach for integrating Ingress Controllers with Consul on Kubernetes to secure traffic from the Controller
to the backend services. This allows Consul to transparently secure traffic from the ingress point through the entire traffic flow of the service.
A few steps are generally required to enable an Ingress controller to join the mesh and pass traffic through to a service:
* Enable connect-injection via an annotation on the Ingress Controller's deployment: `consul.hashicorp.com/connect-inject` is `true`.
* Using the following annotations on the Ingress controller's deployment, set up exclusion rules for its ports.
* [`consul.hashicorp.com/transparent-proxy-exclude-inbound-ports`](/docs/k8s/connect#consul-hashicorp-com-transparent-proxy-exclude-inbound-ports) - Provides the ability to exclude a list of ports for
inbound traffic that the service exposes from redirection. Typical configurations would require all inbound service ports
for the controller to be included in this list.
* [`consul.hashicorp.com/transparent-proxy-exclude-outbound-ports`](/docs/k8s/connect#consul-hashicorp-com-transparent-proxy-exclude-outbound-ports) - Provides the ability to exclude a list of ports for
outbound traffic that the service exposes from redirection. These would be outbound ports used by your ingress controller
which expect to skip the mesh and talk to non-mesh services.
* [`consul.hashicorp.com/transparent-proxy-exclude-outbound-cidrs`](/docs/k8s/connect#consul-hashicorp-com-transparent-proxy-exclude-outbound-cidrs) - Provides the ability to exclude a list of CIDRs that
the service communicates with for outbound requests from redirection. It is somewhat common that an Ingress controller
will expect to make API calls to the Kubernetes service for service/endpoint management. As such including the ClusterIP of the
Kubernetes service is common.
~> Note: Depending on which ingress controller you use, these stanzas may differ in name and layout, but it is important to apply
these annotations to the *pods* of your *ingress controller*.
```yaml
# An example list of pod annotations for an ingress controller, which need be applied to PODS for the controller, not the deployment itself.
podAnnotations:
consul.hashicorp.com/connect-inject: "true"
# Add the container ports used by your ingress controller