aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/kubernetes/README.md')
-rw-r--r--middleware/kubernetes/README.md31
1 files changed, 18 insertions, 13 deletions
diff --git a/middleware/kubernetes/README.md b/middleware/kubernetes/README.md
index 0ae9681d4..024e448db 100644
--- a/middleware/kubernetes/README.md
+++ b/middleware/kubernetes/README.md
@@ -44,6 +44,13 @@ This is the default kubernetes setup, with everything specified in full:
template {service}.{namespace}.{zone}
# Only expose the k8s namespace "demo"
namespaces demo
+ # Only expose the records for kubernetes objects
+ # that matches this label selector. The label
+ # selector syntax is described in the kubernetes
+ # API documentation: http://kubernetes.io/docs/user-guide/labels/
+ # Example selector below only exposes objects tagged as
+ # "application=nginx" in the staging or qa environments.
+ #labels environment in (staging, qa),application=nginx
}
# Perform DNS response caching for the coredns.local zone
# Cache timeout is provided by the integer in seconds
@@ -51,10 +58,13 @@ This is the default kubernetes setup, with everything specified in full:
}
~~~
-Notes:
+Defaults:
* 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 `resyncperiod` keyword is omitted, the default resync period is 5 minutes.
+* The `labels` keyword is only used when filtering of results based on kubernetes label selector syntax
+ is required. The label selector syntax is described in the kubernetes API documentation at:
+ http://kubernetes.io/docs/user-guide/labels/
### Basic Setup
@@ -191,7 +201,7 @@ mynginx.demo.coredns.local. 0 IN A 10.0.0.10
## Implementation Notes/Ideas
-### Basic Zone Mapping (implemented)
+### Basic Zone Mapping
The middleware is configured with a "zone" string. For
example: "zone = coredns.local".
@@ -200,8 +210,8 @@ to: "myservice.mynamespace.coredns.local".
The middleware should publish an A record for that service and a service record.
-Initial implementation just performs the above simple mapping. Subsequent
-revisions should allow different namespaces to be published under different zones.
+If multiple zone names are specified, the records for kubernetes objects are
+exposed in all listed zones.
For example:
@@ -262,11 +272,6 @@ return the IP addresses for all services with "nginx" in the service name.
TBD:
* How does this relate the the k8s load-balancer configuration?
-* Do wildcards search across namespaces? (Yes)
-* Initial implementation assumes that a namespace maps to the first DNS label
- below the zone managed by the kubernetes middleware. This assumption may
- need to be revised. (Template scheme for record names removes this assumption.)
-
## TODO
* SkyDNS compatibility/equivalency:
@@ -318,19 +323,19 @@ TBD:
* Additional features:
* Reverse IN-ADDR entries for services. (Is there any value in supporting
reverse lookup records?) (need tests, functionality should work based on @aledbf's code.)
- * How to support label specification in Corefile to allow use of labels to
- indicate zone? (Is this even useful?) For example, the following
+ * (done) ~~How to support label specification in Corefile to allow use of labels to
+ indicate zone? For example, the following
configuration exposes all services labeled for the "staging" environment
and tenant "customerB" in the zone "customerB.stage.local":
kubernetes customerB.stage.local {
# Use url for k8s API endpoint
endpoint http://localhost:8080
- label "environment" : "staging", "tenant" : "customerB"
+ labels environment in (staging),tenant=customerB
}
Note: label specification/selection is a killer feature for segmenting
- test vs staging vs prod environments.
+ test vs staging vs prod environments.~~ Need label testing.
* Implement IP selection and ordering (internal/external). Related to
wildcards and SkyDNS use of CNAMES.
* Flatten service and namespace names to valid DNS characters. (service names