| 
									
										
										
										
											2019-08-30 15:58:25 +01:00
										 |  |  | .\" Generated by Mmark Markdown Processer - mmark.miek.nl | 
					
						
							| 
									
										
										
										
											2020-09-14 09:43:13 +00:00
										 |  |  | .TH "COREDNS-AUTOPATH" 7 "September 2020" "CoreDNS" "CoreDNS Plugins" | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-24 12:37:27 +01:00
										 |  |  | .SH "NAME" | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .PP | 
					
						
							|  |  |  | \fIautopath\fP - allows for server-side search path completion. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-24 12:37:27 +01:00
										 |  |  | .SH "DESCRIPTION" | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .PP | 
					
						
							|  |  |  | If it sees a query that matches the first element of the configured search path, \fIautopath\fP will | 
					
						
							|  |  |  | follow the chain of search path elements and return the first reply that is not NXDOMAIN. On any | 
					
						
							|  |  |  | failures, the original reply is returned. Because \fIautopath\fP returns a reply for a name that wasn't | 
					
						
							|  |  |  | the original question it will add a CNAME that points from the original name (with the search path | 
					
						
							|  |  |  | element in it) to the name of this answer. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-31 14:18:39 +00:00
										 |  |  | .PP | 
					
						
							|  |  |  | \fBNote\fP: There are several known issues.  See section below. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-24 12:37:27 +01:00
										 |  |  | .SH "SYNTAX" | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .PP | 
					
						
							|  |  |  | .RS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | .nf | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | autopath [ZONE...] RESOLV\-CONF | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | .fi | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .RE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .IP \(bu 4 | 
					
						
							|  |  |  | \fBZONES\fP zones \fIautopath\fP should be authoritative for. | 
					
						
							|  |  |  | .IP \(bu 4 | 
					
						
							|  |  |  | \fBRESOLV-CONF\fP points to a \fB\fCresolv.conf\fR like file or uses a special syntax to point to another | 
					
						
							|  |  |  | plugin. For instance \fB\fC@kubernetes\fR, will call out to the kubernetes plugin (for each | 
					
						
							|  |  |  | query) to retrieve the search list it should use. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PP | 
					
						
							|  |  |  | If a plugin implements the \fB\fCAutoPather\fR interface then it can be used. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-24 12:37:27 +01:00
										 |  |  | .SH "METRICS" | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .PP | 
					
						
							| 
									
										
										
										
											2019-10-10 07:45:28 +01:00
										 |  |  | If monitoring is enabled (via the \fIprometheus\fP plugin) then the following metric is exported: | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | .IP \(bu 4 | 
					
						
							| 
									
										
										
										
											2020-03-31 14:18:39 +00:00
										 |  |  | \fB\fCcoredns_autopath_success_total{server}\fR - counter of successfully autopath-ed queries. | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PP | 
					
						
							|  |  |  | The \fB\fCserver\fR label is explained in the \fImetrics\fP plugin documentation. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-24 12:37:27 +01:00
										 |  |  | .SH "EXAMPLES" | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .PP | 
					
						
							|  |  |  | .RS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | .nf | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | autopath my\-resolv.conf | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | .fi | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .RE | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .PP | 
					
						
							| 
									
										
										
										
											2019-11-05 11:18:02 +00:00
										 |  |  | Use \fB\fCmy-resolv.conf\fR as the file to get the search path from. This file only needs to have one line: | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | \fB\fCsearch domain1 domain2 ...\fR | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PP | 
					
						
							|  |  |  | .RS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .nf | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | autopath @kubernetes | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | .fi | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .RE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PP | 
					
						
							|  |  |  | Use the search path dynamically retrieved from the \fIkubernetes\fP plugin. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-24 12:37:27 +01:00
										 |  |  | .SH "KNOWN ISSUES" | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | .PP | 
					
						
							| 
									
										
										
										
											2020-03-31 14:18:39 +00:00
										 |  |  | In Kubernetes, \fIautopath\fP can derive the wrong namespace of a client Pod (and therefore wrong search path) | 
					
						
							|  |  |  | in the following case.  To properly build the search path of a client \fIautopath\fP needs to | 
					
						
							|  |  |  | know the namespace of the a Pod making a DNS request. To do this, it relies on the | 
					
						
							|  |  |  | \fIkubernetes\fP plugin's Pod cache to resolve the client's IP address to a Pod.  The Pod cache is maintained by | 
					
						
							|  |  |  | an API watch on Pods.  When Pod IP assignments change, the Kubernetes API notifies CoreDNS via the API watch. | 
					
						
							|  |  |  | However, that notification is not instantaneous. In the case that a Pod is deleted, and it's IP is | 
					
						
							|  |  |  | immediately provisioned to a Pod in another namespace, and that new Pod make a DNS lookup \fIbefore\fP the API watch | 
					
						
							|  |  |  | can notify CoreDNS of the change, \fIautopath\fP will resolve the IP to the previous Pod's namespace. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PP | 
					
						
							|  |  |  | In Kubernetes, \fIautopath\fP is not compatible with Pods running from Windows nodes. | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | .PP | 
					
						
							| 
									
										
										
										
											2020-03-31 14:18:39 +00:00
										 |  |  | If the server side search ultimately results in a negative answer (e.g. \fB\fCNXDOMAIN\fR), then the client will | 
					
						
							|  |  |  | fruitlessly search all paths manually, thus negating the \fIautopath\fP optimization. | 
					
						
							| 
									
										
										
										
											2019-04-06 08:42:40 +01:00
										 |  |  | 
 |