Consul
Route Traffic to Peered Services
This topic describes how to configure Consul API Gateway to route traffic to services connected to the mesh through a cluster peering connection.
Requirements
- Consul v1.14 or later
- Verify that the requirements have been met.
- Verify that the Consul API Gateway CRDs and controller have been installed and applied. Refer to Installation for details.
- A peering connection must already be established between Consul clusters. Refer to Cluster Peering on Kubernetes for instructions.
- The Consul service that you want to route traffic to must be exported to the cluster containing your
Gateway
. Refer to Cluster Peering on Kubernetes for instructions. - A
ServiceResolver
for the Consul service you want to route traffic to must be created in the cluster that contains yourGateway
. Refer to Service Resolver Configuration Entry for instructions.
Configuration
Specify the following fields in your MeshService
configuration to use this feature. Refer to the MeshService configuration reference for details about the parameters.
Example
In the following example, routes that use example-mesh-service
as a backend are configured to send requests to the echo
service exported by the peered Consul cluster cluster-02
.
serviceresolver.yaml
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: echo
spec:
redirect:
peer: cluster-02
service: echo
meshservice.yaml
apiVersion: api-gateway.consul.hashicorp.com/v1alpha1
kind: MeshService
metadata:
name: example-mesh-service
spec:
name: echo
peer: cluster-02
After applying the meshservice.yaml
configuration, an HTTPRoute
may then reference example-mesh-service
as its backendRef
.
route.yaml
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
name: example-route
spec:
...
rules:
- backendRefs:
- group: api-gateway.consul.hashicorp.com
kind: MeshService
name: example-mesh-service
port: 3000
...