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.
- 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.
ServiceResolverfor the Consul service you want to route traffic to must be created in the cluster that contains your
Gateway. Refer to Service Resolver Configuration Entry for instructions.
Specify the following fields in your
MeshService configuration to use this feature. Refer to the MeshService configuration reference for details about the parameters.
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
apiVersion: consul.hashicorp.com/v1alpha1 kind: ServiceResolver metadata: name: echo spec: redirect: peer: cluster-02 service: echo
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
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 ...