mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 10:13:14 -04:00 
			
		
		
		
	Add type to default template
This commit is contained in:
		| @@ -48,7 +48,7 @@ This is the default kubernetes setup, with everything specified in full: | |||||||
|         # The tls cert, key and the CA cert filenames |         # The tls cert, key and the CA cert filenames | ||||||
|         tls cert key cacert |         tls cert key cacert | ||||||
|         # Assemble k8s record names with the template |         # Assemble k8s record names with the template | ||||||
|         template {service}.{namespace}.{zone} |         template {service}.{namespace}.{type}.{zone} | ||||||
|         # Only expose the k8s namespace "demo" |         # Only expose the k8s namespace "demo" | ||||||
|         namespaces demo |         namespaces demo | ||||||
|         # Only expose the records for kubernetes objects |         # Only expose the records for kubernetes objects | ||||||
| @@ -67,7 +67,7 @@ This is the default kubernetes setup, with everything specified in full: | |||||||
|  |  | ||||||
| Defaults: | Defaults: | ||||||
| * If the `namespaces` keyword is omitted, all kubernetes namespaces are exposed. | * If the `namespaces` keyword is omitted, all kubernetes namespaces are exposed. | ||||||
| * If the `template` keyword is omitted, the default template of "{service}.{namespace}.{zone}" is used. | * If the `template` keyword is omitted, the default template of "{service}.{namespace}.{type}.{zone}" is used. | ||||||
| * If the `resyncperiod` keyword is omitted, the default resync period is 5 minutes. | * If the `resyncperiod` keyword is omitted, the default resync period is 5 minutes. | ||||||
| * The `labels` keyword is only used when filtering results based on kubernetes label selector syntax | * The `labels` keyword is only used when filtering results based on kubernetes label selector syntax | ||||||
|   is required. The label selector syntax is described in the kubernetes API documentation at: |   is required. The label selector syntax is described in the kubernetes API documentation at: | ||||||
| @@ -130,7 +130,7 @@ Build CoreDNS and launch using this configuration file: | |||||||
|     kubernetes coredns.local { |     kubernetes coredns.local { | ||||||
|         resyncperiod 5m |         resyncperiod 5m | ||||||
|         endpoint http://localhost:8080 |         endpoint http://localhost:8080 | ||||||
|         template {service}.{namespace}.{zone} |         template {service}.{namespace}.{type}.{zone} | ||||||
|         namespaces demo |         namespaces demo | ||||||
|         # Only expose the records for kubernetes objects |         # Only expose the records for kubernetes objects | ||||||
|         # that matches this label selector.  |         # that matches this label selector.  | ||||||
|   | |||||||
| @@ -14,8 +14,8 @@ const ( | |||||||
| // Map of format string :: expected locations of name symbols in the format. | // Map of format string :: expected locations of name symbols in the format. | ||||||
| // -1 value indicates that symbol does not exist in format. | // -1 value indicates that symbol does not exist in format. | ||||||
| var exampleTemplates = map[string][]int{ | var exampleTemplates = map[string][]int{ | ||||||
| 	"{service}.{namespace}.{zone}": []int{2, 1, 0}, // service symbol expected @ position 0, namespace @ 1, zone @ 2 | 	"{service}.{namespace}.{type}.{zone}": []int{3, 1, 0}, // service symbol expected @ position 0, namespace @ 1, zone @ 3 | ||||||
| 	"{namespace}.{zone}":           []int{1, 0, -1}, | 	"{namespace}.{type}.{zone}":           []int{2, 0, -1}, | ||||||
| 	"":                             []int{-1, -1, -1}, | 	"":                             []int{-1, -1, -1}, | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -46,10 +46,10 @@ func TestServiceFromSegmentArray(t *testing.T) { | |||||||
|  |  | ||||||
| 	// Case where template contains {service} | 	// Case where template contains {service} | ||||||
| 	n = new(Template) | 	n = new(Template) | ||||||
| 	formatString = "{service}.{namespace}.{zone}" | 	formatString = "{service}.{namespace}.{type}.{zone}" | ||||||
| 	n.SetTemplate(formatString) | 	n.SetTemplate(formatString) | ||||||
|  |  | ||||||
| 	queryString = "myservice.mynamespace.coredns" | 	queryString = "myservice.mynamespace.svc.coredns" | ||||||
| 	splitQuery = strings.Split(queryString, ".") | 	splitQuery = strings.Split(queryString, ".") | ||||||
| 	expectedService = "myservice" | 	expectedService = "myservice" | ||||||
| 	actualService = n.ServiceFromSegmentArray(splitQuery) | 	actualService = n.ServiceFromSegmentArray(splitQuery) | ||||||
| @@ -60,10 +60,10 @@ func TestServiceFromSegmentArray(t *testing.T) { | |||||||
|  |  | ||||||
| 	// Case where template does not contain {service} | 	// Case where template does not contain {service} | ||||||
| 	n = new(Template) | 	n = new(Template) | ||||||
| 	formatString = "{namespace}.{zone}" | 	formatString = "{namespace}.{type}.{zone}" | ||||||
| 	n.SetTemplate(formatString) | 	n.SetTemplate(formatString) | ||||||
|  |  | ||||||
| 	queryString = "mynamespace.coredns" | 	queryString = "mynamespace.svc.coredns" | ||||||
| 	splitQuery = strings.Split(queryString, ".") | 	splitQuery = strings.Split(queryString, ".") | ||||||
| 	expectedService = "" | 	expectedService = "" | ||||||
| 	actualService = n.ServiceFromSegmentArray(splitQuery) | 	actualService = n.ServiceFromSegmentArray(splitQuery) | ||||||
| @@ -85,10 +85,10 @@ func TestZoneFromSegmentArray(t *testing.T) { | |||||||
|  |  | ||||||
| 	// Case where template contains {zone} | 	// Case where template contains {zone} | ||||||
| 	n = new(Template) | 	n = new(Template) | ||||||
| 	formatString = "{service}.{namespace}.{zone}" | 	formatString = "{service}.{namespace}.{type}.{zone}" | ||||||
| 	n.SetTemplate(formatString) | 	n.SetTemplate(formatString) | ||||||
|  |  | ||||||
| 	queryString = "myservice.mynamespace.coredns" | 	queryString = "myservice.mynamespace.svc.coredns" | ||||||
| 	splitQuery = strings.Split(queryString, ".") | 	splitQuery = strings.Split(queryString, ".") | ||||||
| 	expectedZone = "coredns" | 	expectedZone = "coredns" | ||||||
| 	actualZone = n.ZoneFromSegmentArray(splitQuery) | 	actualZone = n.ZoneFromSegmentArray(splitQuery) | ||||||
| @@ -99,10 +99,10 @@ func TestZoneFromSegmentArray(t *testing.T) { | |||||||
|  |  | ||||||
| 	// Case where template does not contain {zone} | 	// Case where template does not contain {zone} | ||||||
| 	n = new(Template) | 	n = new(Template) | ||||||
| 	formatString = "{service}.{namespace}" | 	formatString = "{service}.{namespace}.{type}" | ||||||
| 	n.SetTemplate(formatString) | 	n.SetTemplate(formatString) | ||||||
|  |  | ||||||
| 	queryString = "mynamespace.coredns" | 	queryString = "mynamespace.coredns.svc" | ||||||
| 	splitQuery = strings.Split(queryString, ".") | 	splitQuery = strings.Split(queryString, ".") | ||||||
| 	expectedZone = "" | 	expectedZone = "" | ||||||
| 	actualZone = n.ZoneFromSegmentArray(splitQuery) | 	actualZone = n.ZoneFromSegmentArray(splitQuery) | ||||||
| @@ -113,10 +113,10 @@ func TestZoneFromSegmentArray(t *testing.T) { | |||||||
|  |  | ||||||
| 	// Case where zone is multiple segments | 	// Case where zone is multiple segments | ||||||
| 	n = new(Template) | 	n = new(Template) | ||||||
| 	formatString = "{service}.{namespace}.{zone}" | 	formatString = "{service}.{namespace}.{type}.{zone}" | ||||||
| 	n.SetTemplate(formatString) | 	n.SetTemplate(formatString) | ||||||
|  |  | ||||||
| 	queryString = "myservice.mynamespace.coredns.cluster.local" | 	queryString = "myservice.mynamespace.svc.coredns.cluster.local" | ||||||
| 	splitQuery = strings.Split(queryString, ".") | 	splitQuery = strings.Split(queryString, ".") | ||||||
| 	expectedZone = "coredns.cluster.local" | 	expectedZone = "coredns.cluster.local" | ||||||
| 	actualZone = n.ZoneFromSegmentArray(splitQuery) | 	actualZone = n.ZoneFromSegmentArray(splitQuery) | ||||||
|   | |||||||
| @@ -137,6 +137,6 @@ func kubernetesParse(c *caddy.Controller) (*Kubernetes, error) { | |||||||
| } | } | ||||||
|  |  | ||||||
| const ( | const ( | ||||||
| 	defaultNameTemplate = "{service}.{namespace}.{zone}" | 	defaultNameTemplate = "{service}.{namespace}.{type}.{zone}" | ||||||
| 	defaultResyncPeriod = 5 * time.Minute | 	defaultResyncPeriod = 5 * time.Minute | ||||||
| ) | ) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user