Merge pull request #504 from deniseschannon/dnsfix

Creating new templates for External DNS for Rancher 1.6 that prevents templating to allow the service to work
This commit is contained in:
Denise 2017-05-10 13:22:37 -06:00 committed by GitHub
commit abb419f66f
28 changed files with 443 additions and 4 deletions

View File

@ -3,6 +3,7 @@
version: "v0.1.9-rancher1"
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version 0.44.0"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.2.0-pre4-rc1
questions:
- variable: "CLOUDFLARE_EMAIL"
label: "CloudFlare email address"

View File

@ -3,6 +3,7 @@
version: "v0.2.1-rancher1"
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version 0.44.0"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.2.0-pre4-rc1
questions:
- variable: "CLOUDFLARE_EMAIL"
label: "CloudFlare email address"

View File

@ -3,6 +3,7 @@
version: "v0.4.0-rancher1"
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version 0.44.0"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.2.0-pre4-rc1
questions:
- variable: "CLOUDFLARE_EMAIL"
label: "CloudFlare email address"

View File

@ -3,6 +3,7 @@
version: "v0.6.0-rancher1"
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version v1.1.0"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.5.99
questions:
- variable: "CLOUDFLARE_EMAIL"
label: "CloudFlare email address"

View File

@ -0,0 +1,36 @@
## CloudFlare DNS
Rancher External DNS service powered by CloudFlare DNS
#### Changelog
##### v0.6.0
* Reduces the overall rate of API requests to the DNS provider
* Adds support for custom DNS naming convention
* Stack, service and environment names used in service DNS names are now sanitized to conform with RFC 1123. Characters other than `a-z`, `A-Z`, `0-9` or `dash` are replaced by dashes.
* For internal use the service creates TXT records to track the FQDNs it manages. These TXT records are named `external-dns-<environemntUUID>.<domain>` and should not be deleted.
#### Usage
##### Upgrade Notes
While upgrading from a version lower than v0.6.0 the TTL configuration value should not be changed. You may change it once the upgrade has been completed.
##### Limitation when running the service on multiple Rancher servers
When running multiple instances of the External DNS service configured to use the **same** domain name, then only one of them can run in the "Default" environment of a Rancher server instance.
##### Custom DNS name template
By default DNS entries are named `<service>.<stack>.<environment>.<domain>`.
You can specify a custom name template used to construct the subdomain part (left of the domain name) of the DNS records. The following placeholders are supported:
* `%{{service_name}}`
* `%{{stack_name}}`
* `%{{environment_name}}`
**Example:**
`%{{stack_name}}-%{{service_name}}.statictext`
Make sure to only use characters in static text and separators that are allowed by your provider in DNS names.

View File

@ -0,0 +1,14 @@
cloudflare:
image: rancher/external-dns:v0.6.0
command: -provider=cloudflare
expose:
- 1000
environment:
CLOUDFLARE_EMAIL: ${CLOUDFLARE_EMAIL}
CLOUDFLARE_KEY: ${CLOUDFLARE_KEY}
ROOT_DOMAIN: ${ROOT_DOMAIN}
NAME_TEMPLATE: ${NAME_TEMPLATE}
TTL: ${TTL}
labels:
io.rancher.container.create_agent: "true"
io.rancher.container.agent.role: "external-dns"

View File

@ -0,0 +1,48 @@
# notemplating
.catalog:
name: "CloudFlare DNS"
version: "v0.6.0-rancher2"
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version v1.1.0"
minimum_rancher_version: v1.6.0-rc1
questions:
- variable: "CLOUDFLARE_EMAIL"
label: "CloudFlare email address"
description: "Email address associated with your CloudFlare account"
type: "string"
required: true
- variable: "CLOUDFLARE_KEY"
label: "CloudFlare API key"
description: "API key for your CloudFlare account"
type: "string"
required: true
- variable: "ROOT_DOMAIN"
label: "Domain Name"
description: "The domain name managed by CloudFlare."
type: "string"
required: true
- variable: "TTL"
label: "TTL"
description: "The resource record cache time to live (TTL), in seconds (minimum 120)"
type: "int"
default: 120
min: 120
max: 3600
required: false
- variable: "NAME_TEMPLATE"
label: "DNS Name Template"
description: |
Name template used to construct the subdomain part (left of the domain) of the DNS record names.
Supported placeholders: %{{service_name}}, %{{stack_name}}, %{{environment_name}}.
By default DNS entries will be named '<service>.<stack>.<environment>.<domain>'.
type: "string"
default: "%{{service_name}}.%{{stack_name}}.%{{environment_name}}"
required: false
cloudflare:
health_check:
port: 1000
interval: 5000
unhealthy_threshold: 3
request_line: GET / HTTP/1.0
healthy_threshold: 2
response_timeout: 2000

View File

@ -1,7 +1,7 @@
name: CloudFlare DNS
description: |
Rancher External DNS service powered by CloudFlare
version: v0.6.0-rancher1
version: v0.6.0-rancher2
category: External DNS
labels:
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'

View File

@ -3,6 +3,7 @@
version: "v0.6.3"
description: "Rancher External DNS service powered by DigitalOcean"
minimum_rancher_version: v1.5.0
maximum_rancher_version: v1.5.0
questions:
- variable: "DO_PAT"
label: "DigitalOcean Personal Access Token"

View File

@ -3,6 +3,7 @@
version: "v0.6.4"
description: "Rancher External DNS service powered by DigitalOcean"
minimum_rancher_version: v1.5.0
maximum_rancher_version: v1.5.99
questions:
- variable: "DO_PAT"
label: "DigitalOcean Personal Access Token"

View File

@ -0,0 +1,53 @@
## DigitalOcean DNS
Rancher External DNS service powered by DigitalOcean
#### Changelog
##### v0.6.4
* Adds support for overriding name template for specific services by setting io.rancher.service.external_dns_name_template label to it in docker-compose.yml
#### Usage
##### DigitalOcean DNS record TTL
The DigitalOcean API currently does not support per-record TTL setting. You should configure the global TTL setting for the domain manually and set it to a low value (e.g. 60).
##### Limitation when running the service on multiple Rancher servers
When running multiple instances of the External DNS service configured to use the same domain name, then only one of them can run in the "Default" environment of a Rancher server instance.
##### Supported host labels
`io.rancher.host.external_dns_ip`
Override the IP address used in DNS records for containers running on the host. Defaults to the IP address the host is registered with in Rancher.
`io.rancher.host.external_dns`
Accepts 'true' (default) or 'false'
When this is set to 'false' no DNS records will ever be created for containers running on this host.
##### Supported service labels
`io.rancher.service.external_dns`
Accepts 'always', 'never' or 'auto' (default)
- `always`: Always create DNS records for this service
- `never`: Never create DNS records for this service
- `auto`: Create DNS records for this service if it exposes ports on the host
`io.rancher.service.external_dns_name_template`
Custom DNS name template that overrides global custom DNS name template (see below) of default DNS name template for a specific service
##### Custom DNS name template
By default DNS entries are named `<service>.<stack>.<environment>.<domain>`.
You can specify a custom name template used to construct the subdomain part (left of the domain/zone name) of the DNS records. The following placeholders are supported:
* `%{{service_name}}`
* `%{{stack_name}}`
* `%{{environment_name}}`
**Example:**
`%{{stack_name}}-%{{service_name}}.statictext`
Make sure to only use characters in static text and separators that your provider allows in DNS names.

View File

@ -0,0 +1,13 @@
digitalocean:
image: rancher/external-dns:v0.6.4
command: -provider=digitalocean
expose:
- 1000
environment:
DO_PAT: ${DO_PAT}
ROOT_DOMAIN: ${ROOT_DOMAIN}
NAME_TEMPLATE: ${NAME_TEMPLATE}
TTL: 300
labels:
io.rancher.container.create_agent: "true"
io.rancher.container.agent.role: "external-dns"

View File

@ -0,0 +1,35 @@
# notemplating
.catalog:
name: "DigitalOcean DNS"
version: "v0.6.4.1"
description: "Rancher External DNS service powered by DigitalOcean"
minimum_rancher_version: v1.6.0-rc1
questions:
- variable: "DO_PAT"
label: "DigitalOcean Personal Access Token"
description: "Enter your personal access token"
type: "string"
required: true
- variable: "ROOT_DOMAIN"
label: "Domain Name"
description: "The domain name managed by DigitalOcean."
type: "string"
required: true
- variable: "NAME_TEMPLATE"
label: "DNS Name Template"
description: |
Name template used to construct the subdomain part (left of the domain) of the DNS record names.
Supported placeholders: %{{service_name}}, %{{stack_name}}, %{{environment_name}}.
By default DNS entries will be named '<service>.<stack>.<environment>.<domain>'.
type: "string"
default: "%{{service_name}}.%{{stack_name}}.%{{environment_name}}"
required: false
digitalocean:
health_check:
port: 1000
interval: 5000
unhealthy_threshold: 3
request_line: GET / HTTP/1.0
healthy_threshold: 2
response_timeout: 2000

View File

@ -1,7 +1,7 @@
name: DigitalOcean DNS
description: |
Rancher External DNS service powered by DigitalOcean
version: v0.6.4
version: v0.6.4.1
category: External DNS
labels:
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'

View File

@ -3,6 +3,7 @@
version: "v0.1.9-rancher1"
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version 0.44.0"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.2.0-pre4-rc1
questions:
- variable: "DNSIMPLE_EMAIL"
label: "DNSimple account email address"

View File

@ -3,6 +3,7 @@
version: "v0.2.1-rancher1"
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version 0.44.0"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.2.0-pre4-rc1
questions:
- variable: "DNSIMPLE_EMAIL"
label: "DNSimple account email address"

View File

@ -3,6 +3,7 @@
version: "v0.6.0-rancher1"
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version v1.1.0"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.5.99
questions:
- variable: "DNSIMPLE_EMAIL"
label: "DNSimple Account Email Address"

View File

@ -0,0 +1,36 @@
## DNSimple DNS
Rancher External DNS service powered by DNSimple DNS
#### Changelog
##### v0.6.0
* Reduces the overall rate of API requests to the DNS provider
* Adds support for custom DNS naming convention
* Stack, service and environment names used in service DNS names are now sanitized to conform with RFC 1123. Characters other than `a-z`, `A-Z`, `0-9` or `dash` are replaced by dashes.
* For internal use the service creates TXT records to track the FQDNs it manages. These TXT records are named `external-dns-<environemntUUID>.<domain>` and should not be deleted.
#### Usage
##### Upgrade Notes
While upgrading from a version lower than v0.6.0 the TTL configuration value should not be changed. You may change it once the upgrade has been completed.
##### Limitation when running the service on multiple Rancher servers
When running multiple instances of the External DNS service configured to use the **same** domain name, then only one of them can run in the "Default" environment of a Rancher server instance.
##### Custom DNS name template
By default DNS entries are named `<service>.<stack>.<environment>.<domain>`.
You can specify a custom name template used to construct the subdomain part (left of the domain/zone name) of the DNS records. The following placeholders are supported:
* `%{{service_name}}`
* `%{{stack_name}}`
* `%{{environment_name}}`
**Example:**
`%{{stack_name}}-%{{service_name}}.statictext`
Make sure to only use characters in static text and separators that your provider allows in DNS names.

View File

@ -0,0 +1,14 @@
dnsimple:
image: rancher/external-dns:v0.6.0
command: -provider=dnsimple
expose:
- 1000
environment:
DNSIMPLE_TOKEN: ${DNSIMPLE_TOKEN}
DNSIMPLE_EMAIL: ${DNSIMPLE_EMAIL}
ROOT_DOMAIN: ${ROOT_DOMAIN}
NAME_TEMPLATE: ${NAME_TEMPLATE}
TTL: ${TTL}
labels:
io.rancher.container.create_agent: "true"
io.rancher.container.agent.role: "external-dns"

View File

@ -0,0 +1,46 @@
# notemplating
.catalog:
name: "DNSimple DNS"
version: "v0.6.0-rancher2"
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version v1.1.0"
minimum_rancher_version: v1.6.0-rc1
questions:
- variable: "DNSIMPLE_EMAIL"
label: "DNSimple Account Email Address"
description: "Email address associated with your DNSimple account"
type: "string"
required: true
- variable: "DNSIMPLE_TOKEN"
label: "DNSimple API Token"
description: "API token for your DNSimple account"
type: "string"
required: true
- variable: "ROOT_DOMAIN"
label: "Root Domain"
description: "The domain name managed by DNSimple."
type: "string"
required: true
- variable: "TTL"
label: "TTL"
description: "The resource record cache time to live (TTL), in seconds"
type: "int"
default: 60
required: false
- variable: "NAME_TEMPLATE"
label: "DNS Name Template"
description: |
Name template used to construct the subdomain part (left of the root domain name) of the DNS record names.
Supported placeholders: %{{service_name}}, %{{stack_name}}, %{{environment_name}}.
By default DNS entries will be named '<service>.<stack>.<environment>.<domain>'.
type: "string"
default: "%{{service_name}}.%{{stack_name}}.%{{environment_name}}"
required: false
dnsimple:
health_check:
port: 1000
interval: 15000
unhealthy_threshold: 2
request_line: GET / HTTP/1.0
healthy_threshold: 2
response_timeout: 2000

View File

@ -1,7 +1,7 @@
name: DNSimple DNS
description: |
Rancher External DNS service powered by DNSimple
version: v0.6.0-rancher1
version: v0.6.0-rancher2
category: External DNS
labels:
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'

View File

@ -3,6 +3,7 @@
version: "v0.5.0-rancher1"
description: "Rancher External DNS service powered by any RFC2136 compatible DNS"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.2.0-pre4-rc1
questions:
- variable: "RFC2136_HOST"
label: "Domain Name Server IP"

View File

@ -3,6 +3,7 @@
version: "v0.6.0-rancher1"
description: "Rancher External DNS service powered by any RFC2136 compatible DNS server. Requires Rancher version v1.1.0"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.2.0-pre4-rc1
questions:
- variable: "RFC2136_HOST"
label: "DNS Server IP"

View File

@ -3,6 +3,7 @@
version: "v0.6.2-rancher1"
description: "Rancher External DNS service powered by any RFC2136 compatible DNS server. Requires Rancher version v1.1.0"
minimum_rancher_version: v1.2.0-pre4-rc1
maximum_rancher_version: v1.5.99
questions:
- variable: "RFC2136_HOST"
label: "DNS Server IP"

View File

@ -0,0 +1,52 @@
## DNS Update (RFC2136)
Rancher External DNS service powered by any RFC2136 compatible DNS server
#### Changelog
##### v0.6.2
* Adds support for disabling/enforcing external DNS on the host and service level using labels
* Adds support for insecure DNS Updates
* Fixes an issue with lingering TCP keep-alive connections to the Rancher Metadata service
#### Usage
##### Upgrade Notes
While upgrading from a version lower than v0.6.0 the TTL configuration value should not be changed. You may change it once the upgrade has been completed.
##### Limitation when running the service on multiple Rancher servers
When running multiple instances of the External DNS service configured to use the same domain name, then only one of them can run in the "Default" environment of a Rancher server instance.
##### Supported host labels
`io.rancher.host.external_dns_ip`
Override the IP address used in DNS records for containers running on the host. Defaults to the IP address the host is registered with in Rancher.
`io.rancher.host.external_dns`
Accepts 'true' (default) or 'false'
When this is set to 'false' no DNS records will ever be created for containers running on this host.
##### Supported service labels
`io.rancher.service.external_dns`
Accepts 'always', 'never' or 'auto' (default)
- `always`: Always create DNS records for this service
- `never`: Never create DNS records for this service
- `auto`: Create DNS records for this service if it exposes ports on the host
##### Custom DNS name template
By default DNS entries are named `<service>.<stack>.<environment>.<domain>`.
You can specify a custom name template used to construct the subdomain part (left of the domain/zone name) of the DNS records. The following placeholders are supported:
* `%{{service_name}}`
* `%{{stack_name}}`
* `%{{environment_name}}`
**Example:**
`%{{stack_name}}-%{{service_name}}.statictext`
Make sure to only use characters in static text and separators that your provider allows in DNS names.

View File

@ -0,0 +1,17 @@
rfc2136dns:
image: rancher/external-dns:v0.6.2
command: -provider=rfc2136
expose:
- 1000
environment:
RFC2136_HOST: ${RFC2136_HOST}
RFC2136_PORT: ${RFC2136_PORT}
RFC2136_TSIG_KEYNAME: ${RFC2136_TSIG_KEYNAME}
RFC2136_TSIG_SECRET: ${RFC2136_TSIG_SECRET}
RFC2136_INSECURE: ${RFC2136_INSECURE}
ROOT_DOMAIN: ${ROOT_DOMAIN}
NAME_TEMPLATE: ${NAME_TEMPLATE}
TTL: ${TTL}
labels:
io.rancher.container.create_agent: "true"
io.rancher.container.agent.role: "external-dns"

View File

@ -0,0 +1,63 @@
# notemplating
.catalog:
name: "DNS Update (RFC2136)"
version: "v0.6.2-rancher2"
description: "Rancher External DNS service powered by any RFC2136 compatible DNS server. Requires Rancher version v1.1.0"
minimum_rancher_version: v1.6.0-rc1
questions:
- variable: "RFC2136_HOST"
label: "DNS Server IP"
description: "Server IP or Hostname"
type: "string"
required: true
- variable: "RFC2136_PORT"
label: "DNS Server Port"
description: "Server port"
type: "string"
required: true
default: "53"
- variable: "RFC2136_INSECURE"
description: "Disables TSIG authentication for DNS Update requests"
label: "Insecure DNS Update"
required: true
default: false
type: "boolean"
- variable: "RFC2136_TSIG_KEYNAME"
label: "TSIG Key Name"
description: "Name of the TSIG key used for authenticating with the DNS server"
type: "string"
required: false
- variable: "RFC2136_TSIG_SECRET"
label: "TSIG Key"
description: "TSIG secret key used for authenticating with the DNS server (HMAC-MD5, base64 encoded)"
type: "string"
required: false
- variable: "TTL"
label: "TTL"
description: "The resource record cache time to live (TTL), in seconds"
type: "int"
default: 60
required: false
- variable: "ROOT_DOMAIN"
label: "Zone name"
description: "The name of an existing zone in which to create the records."
type: "string"
required: true
- variable: "NAME_TEMPLATE"
label: "DNS Name Template"
description: |
Name template used to construct the subdomain part (left of the zone/domain name) of the DNS record names.
Supported placeholders: %{{service_name}}, %{{stack_name}}, %{{environment_name}}.
By default DNS entries will be named '<service>.<stack>.<environment>.<domain>'.
type: "string"
default: "%{{service_name}}.%{{stack_name}}.%{{environment_name}}"
required: false
rfc2136dns:
health_check:
port: 1000
interval: 5000
unhealthy_threshold: 3
request_line: GET / HTTP/1.0
healthy_threshold: 2
response_timeout: 2000

View File

@ -1,7 +1,7 @@
name: DNS Update (RFC2136)
description: |
Rancher External DNS service powered by any RFC2136 compatible DNS
version: v0.6.2-rancher1
version: v0.6.2-rancher2
category: External DNS
labels:
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'