Define API gateway routes on Kubernetes
This topic describes how to configure HTTP and TCP routes and attach them to Consul API gateway listeners in Kubernetes-orchestrated networks. Routes are rule-based configurations that allow external clients to send requests to services in the mesh. For information
The following steps describe the general workflow for defining and deploying routes:
- Define a route configuration that specifies the protocol type, name of the gateway to attach to, and rules for routing requests.
- Deploy the configuration to create the routes and attach them to the gateway.
Routes and the gateways they are attached to are eventually-consistent objects. They provide feedback about their current state through a series of status conditions. As a result, you must manually check the route status to determine if the route successfully bound to the gateway.
Verify that your environment meets the requirements specified in Technical specifications for Kubernetes.
If your Kubernetes-orchestrated network runs on OpenShift, verify that OpenShift is enabled for your Consul installation. Refer to OpenShift requirements for additional information.
Define route configurations and bind them to listeners configured on the gateway so that Consul can route incoming requests to services in the mesh.
Create a configuration file and specify the following fields:
apiVersion: Specifies the Kuberenetes API gateway version. This must be set to
kind: Set to
metadata.name: Specify a name for the route. The name is metadata that you can use to reference the configuration when performing Consul operations.
spec.parentRefs.name: Specifies a list of API gateways that the route binds to.
spec. rules: Specifies a list of routing rules for constructing a routing table that maps listeners to services.
Refer to the
Routesconfiguration reference for details about configuring route rules.
Configure any additional fields necessary for your use case, such as the namespace or admin partition.
Save the configuration.
The following example creates a route named
example-route associated with a listener defined in
apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: example-route spec: parentRefs: - name: example-gateway rules: - backendRefs: - kind: Service name: echo port: 8080
Apply the configuration to your cluster using the
kubectl command. The following command applies the configuration to the
$ kubectl apply -f my-route.yaml -n consul