--- layout: docs page_title: TCP Route Configuration Reference description: Learn how to configure a TCP Route that is bound to an API gateway on VMs. --- # TCP route configuration Reference This topic provides reference information for the gateway TCP routes configuration entry. Refer to [Route Resource Configuration](/consul/docs/connect/gateways/api-gateway/configuration/routes) for information about configuring API gateways in Kubernetes environments. ## Configuration model The following list outlines field hierarchy, language-specific data types, and requirements in an `tcp-route` configuration entry. Click on a property name to view additional details, including default values. - [`Kind`](#kind): string | must be `"tcp-route"` - [`Name`](#name): string | no default - [`Namespace`](#namespace): string | no default <EnterpriseAlert inline /> - [`Partition`](#partition): string | no default <EnterpriseAlert inline /> - [`Meta`](#meta): map | no default - [`Services`](#services): list | no default - [`Name`](#services-name): string | no default - [`Namespace`](#services-namespace): string | no default <EnterpriseAlert inline /> - [`Partition`](#services-partition): string | no default <EnterpriseAlert inline /> - [`Parents`](#parents): list | no default - [`Kind`](#parents-kind): string | must be `"api-gateway"` - [`Name`](#parents-name): string | no default - [`Namespace`](#parents-namespace): string | no default <EnterpriseAlert inline /> - [`Partition`](#parents-partition): string | no default <EnterpriseAlert inline /> - [`SectionName`](#parents-sectionname): string | no default ## Complete configuration When every field is defined, a `tcp-route` configuration entry has the following form: <CodeTabs> ```HCL Kind = "tcp-route" Name = "<name of the route>" Namespace = "<enterprise: namespace of the route>" Partition = "<enterprise: partition of the route>" Meta = { "<any key>" = "<any value>" } Services = [ { Name = "<name of service>" Namespace = "<enterprise: namespace of the service>" Partition = "<enterprise: partition of the service>" } ] Parents = [ { Kind = "api-gateway" Name = "<name of the api-gateway to bind to>" Namespace = "<enterprise: namespace of the parent>" Partition = "<enterprise: partition of the parent>" SectionName = "<listener on the api-gateway to bind to>" } ] ``` ```JSON { "Kind": "tcp-route", "Name": "<name of the route>", "Namespace": "<enterprise: namespace of the route>", "Partition": "<enterprise: partition of the route>", "Meta": { "<any key>": "<any value>" }, "Services": [ { "Name": "<name of service>" "Namespace": "<enterprise: namespace of the service>", "Partition": "<enterprise: partition of the service>", } ], "Parents": [ { "Kind": "api-gateway", "Name": "<name of the api-gateway to bind to>", "Namespace": "<enterprise: namespace of the parent>", "Partition": "<enterprise: partition of the parent>", "SectionName": "<listener on the api-gateway to bind to>" } ] } ``` </CodeTabs> ## Specification This section provides details about the fields you can configure in the `tcp-route` configuration entry. ### `Kind` Specifies the type of configuration entry to implement. This must be set to `"tcp-route"`. #### Values - Default: none - This field is required. - Data type: string value that must be set to`tcp-route`. ### `Name` Specifies a name for the configuration entry. The name is metadata that you can use to reference the configuration entry when performing Consul operations, such as applying a configuration entry to a specific cluster. #### Values - Default: Defaults to the name of the node after writing the entry to the Consul server. - This field is required. - Data type: string ### `Namespace` <EnterpriseAlert inline /> Specifies the Enterprise [namespace](/consul/docs/enterprise/namespaces) to apply to the configuration entry. #### Values - Default: `"default"` in Enterprise - Data type: string ### `Partition` <EnterpriseAlert inline /> Specifies the Enterprise [admin partition](/consul/docs/enterprise/admin-partitions) to apply to the configuration entry. #### Values - Default: `"default"` in Enterprise - Data type: string ### `Meta` Specifies an arbitrary set of key-value pairs to associate with the gateway. #### Values - Default: none - Data type: map containing one or more keys and string values. ### `Services` Specifies a TCP-based service the API gateway routes incoming requests to. You can only specify one service. #### Values - Default: none - The data type is a list of maps. Each member of the list contains the following fields: - [`Name`](#services-name) - [`Namespace`](#services-namespace) <EnterpriseAlert inline /> - [`Partition`](#services-partition) <EnterpriseAlert inline /> ### `Services.Name` Specifies the list of TCP-based services to route to. You can specify a maximum of one service. #### Values - Default: none - Data type: string ### `Services.Namespace` <EnterpriseAlert inline /> Specifies the Enterprise [namespace](/consul/docs/enterprise/namespaces) where the service is located. #### Values - Default: `"default"` in Enterprise - Data type: string ### `Services.Partition` <EnterpriseAlert inline /> Specifies the Enterprise [admin partition](/consul/docs/enterprise/admin-partitions) where the service is located. #### Values - Default: `"default"` in Enterprise - Data type: string ### `Parents` Specifies the list of gateways that the route is bound to. #### Values - Default: none - Data type: List of map. Each member of the list contains the following fields: - [`Kind`](#parents-kind) - [`Name`](#parents-name) - [`Namespace`](#parents-namespace) <EnterpriseAlert inline /> - [`Partition`](#parents-partition) <EnterpriseAlert inline /> - [`SectionName`](#parents-sectionname) ### `Parents.Kind` Specifies the type of resource to bind to. This field is required and must be set to `"api-gateway"` #### Values - Default: none - This field is required. - Data type: string ### `Parents.Name` Specifies the name of the API gateway to bind to. #### Values - Default: none - This field is required. - Data type: string ### `Parents.Namespace` <EnterpriseAlert inline /> Specifies the Enterprise [namespace](/consul/docs/enterprise/namespaces) where the parent is located. #### Values - Default: `"default"` in Enterprise - Data type: string ### `Parents.Partition` <EnterpriseAlert inline /> Specifies the Enterprise [admin partition](/consul/docs/enterprise/admin-partitions) where the parent is located. #### Values - Default: `"default"` in Enterprise - Data type: string ### `Parents.SectionName` Specifies the name of the listener defined in the [`api-gateway` configuration](/consul/docs/connect/gateways/api-gateway/configuration/api-gateway) that the route binds to. If the field is configured to an empty string, the route binds to all listeners on the parent gateway. #### Values - Default: `""` - Data type: string