.. _envoy_v3_api_file_envoy/data/dns/v3/dns_table.proto: DNS Filter Table Data ===================== This documentation is for the Envoy v3 API. As of Envoy v1.18 the v2 API has been removed and is no longer supported. If you are upgrading from v2 API config you may wish to view the v2 API documentation: :ref:`data/dns/v2alpha/dns_table.proto ` :ref:`DNS Filter config overview `. .. _envoy_v3_api_msg_data.dns.v3.DnsTable: data.dns.v3.DnsTable -------------------- :repo:`[data.dns.v3.DnsTable proto] ` This message contains the configuration for the DNS Filter if populated from the control plane .. code-block:: json { "external_retry_count": "...", "virtual_domains": [], "known_suffixes": [] } .. _envoy_v3_api_field_data.dns.v3.DnsTable.external_retry_count: external_retry_count (`uint32 `_) Control how many times Envoy makes an attempt to forward a query to an external DNS server .. _envoy_v3_api_field_data.dns.v3.DnsTable.virtual_domains: virtual_domains (**repeated** :ref:`data.dns.v3.DnsTable.DnsVirtualDomain `) Fully qualified domain names for which Envoy will respond to DNS queries. By leaving this list empty, Envoy will forward all queries to external resolvers .. _envoy_v3_api_field_data.dns.v3.DnsTable.known_suffixes: known_suffixes (**repeated** :ref:`type.matcher.v3.StringMatcher `) This field is deprecated and no longer used in Envoy. The filter's behavior has changed internally to use a different data structure allowing the filter to determine whether a query is for known domain without the use of this field. This field serves to help Envoy determine whether it can authoritatively answer a query for a name matching a suffix in this list. If the query name does not match a suffix in this list, Envoy will forward the query to an upstream DNS server .. _envoy_v3_api_msg_data.dns.v3.DnsTable.AddressList: data.dns.v3.DnsTable.AddressList -------------------------------- :repo:`[data.dns.v3.DnsTable.AddressList proto] ` This message contains a list of IP addresses returned for a query for a known name .. code-block:: json { "address": [] } .. _envoy_v3_api_field_data.dns.v3.DnsTable.AddressList.address: address (**repeated** `string `_, *REQUIRED*) This field contains a well formed IP address that is returned in the answer for a name query. The address field can be an IPv4 or IPv6 address. Address family detection is done automatically when Envoy parses the string. Since this field is repeated, Envoy will return as many entries from this list in the DNS response while keeping the response under 512 bytes .. _envoy_v3_api_msg_data.dns.v3.DnsTable.DnsServiceProtocol: data.dns.v3.DnsTable.DnsServiceProtocol --------------------------------------- :repo:`[data.dns.v3.DnsTable.DnsServiceProtocol proto] ` Specify the service protocol using a numeric or string value .. code-block:: json { "number": "...", "name": "..." } .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsServiceProtocol.number: number (`uint32 `_) Specify the protocol number for the service. Envoy will try to resolve the number to the protocol name. For example, 6 will resolve to "tcp". Refer to: https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml for protocol names and numbers Precisely one of :ref:`number `, :ref:`name ` must be set. .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsServiceProtocol.name: name (`string `_) Specify the protocol name for the service. Precisely one of :ref:`number `, :ref:`name ` must be set. .. _envoy_v3_api_msg_data.dns.v3.DnsTable.DnsServiceTarget: data.dns.v3.DnsTable.DnsServiceTarget ------------------------------------- :repo:`[data.dns.v3.DnsTable.DnsServiceTarget proto] ` Specify the target for a given DNS service .. code-block:: json { "host_name": "...", "cluster_name": "...", "priority": "...", "weight": "...", "port": "..." } .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsServiceTarget.host_name: host_name (`string `_) Use a resolvable hostname as the endpoint for a service. Specify the name of the endpoint for the Service. The name is a hostname or a cluster Precisely one of :ref:`host_name `, :ref:`cluster_name ` must be set. .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsServiceTarget.cluster_name: cluster_name (`string `_) Use a cluster name as the endpoint for a service. Specify the name of the endpoint for the Service. The name is a hostname or a cluster Precisely one of :ref:`host_name `, :ref:`cluster_name ` must be set. .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsServiceTarget.priority: priority (`uint32 `_) The priority of the service record target .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsServiceTarget.weight: weight (`uint32 `_) The weight of the service record target .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsServiceTarget.port: port (`uint32 `_) The port to which the service is bound. This value is optional if the target is a cluster. Setting port to zero in this case makes the filter use the port value from the cluster host .. _envoy_v3_api_msg_data.dns.v3.DnsTable.DnsService: data.dns.v3.DnsTable.DnsService ------------------------------- :repo:`[data.dns.v3.DnsTable.DnsService proto] ` This message defines a service selection record returned for a service query in a domain .. code-block:: json { "service_name": "...", "protocol": "{...}", "ttl": "{...}", "targets": [] } .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsService.service_name: service_name (`string `_, *REQUIRED*) The name of the service without the protocol or domain name .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsService.protocol: protocol (:ref:`data.dns.v3.DnsTable.DnsServiceProtocol `) The service protocol. This can be specified as a string or the numeric value of the protocol .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsService.ttl: ttl (`Duration `_) The service entry time to live. This is independent from the DNS Answer record TTL .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsService.targets: targets (**repeated** :ref:`data.dns.v3.DnsTable.DnsServiceTarget `, *REQUIRED*) The list of targets hosting the service .. _envoy_v3_api_msg_data.dns.v3.DnsTable.DnsServiceList: data.dns.v3.DnsTable.DnsServiceList ----------------------------------- :repo:`[data.dns.v3.DnsTable.DnsServiceList proto] ` Define a list of service records for a given service .. code-block:: json { "services": [] } .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsServiceList.services: services (**repeated** :ref:`data.dns.v3.DnsTable.DnsService `, *REQUIRED*) .. _envoy_v3_api_msg_data.dns.v3.DnsTable.DnsEndpoint: data.dns.v3.DnsTable.DnsEndpoint -------------------------------- :repo:`[data.dns.v3.DnsTable.DnsEndpoint proto] ` .. code-block:: json { "address_list": "{...}", "cluster_name": "...", "service_list": "{...}" } .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsEndpoint.address_list: address_list (:ref:`data.dns.v3.DnsTable.AddressList `) Define a list of addresses to return for the specified endpoint Precisely one of :ref:`address_list `, :ref:`cluster_name `, :ref:`service_list ` must be set. .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsEndpoint.cluster_name: cluster_name (`string `_) Define a cluster whose addresses are returned for the specified endpoint Precisely one of :ref:`address_list `, :ref:`cluster_name `, :ref:`service_list ` must be set. .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsEndpoint.service_list: service_list (:ref:`data.dns.v3.DnsTable.DnsServiceList `) Define a DNS Service List for the specified endpoint Precisely one of :ref:`address_list `, :ref:`cluster_name `, :ref:`service_list ` must be set. .. _envoy_v3_api_msg_data.dns.v3.DnsTable.DnsVirtualDomain: data.dns.v3.DnsTable.DnsVirtualDomain ------------------------------------- :repo:`[data.dns.v3.DnsTable.DnsVirtualDomain proto] ` .. code-block:: json { "name": "...", "endpoint": "{...}", "answer_ttl": "{...}" } .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsVirtualDomain.name: name (`string `_, *REQUIRED*) A domain name for which Envoy will respond to query requests .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsVirtualDomain.endpoint: endpoint (:ref:`data.dns.v3.DnsTable.DnsEndpoint `) The configuration containing the method to determine the address of this endpoint .. _envoy_v3_api_field_data.dns.v3.DnsTable.DnsVirtualDomain.answer_ttl: answer_ttl (`Duration `_) Sets the TTL in DNS answers from Envoy returned to the client. The default TTL is 300s