diff --git a/infra-templates/cloudflare/4/README.md b/infra-templates/cloudflare/4/README.md new file mode 100644 index 0000000..84dba81 --- /dev/null +++ b/infra-templates/cloudflare/4/README.md @@ -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-.` 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 `...`. +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. diff --git a/infra-templates/cloudflare/4/docker-compose.yml b/infra-templates/cloudflare/4/docker-compose.yml new file mode 100644 index 0000000..0632413 --- /dev/null +++ b/infra-templates/cloudflare/4/docker-compose.yml @@ -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" diff --git a/infra-templates/cloudflare/4/rancher-compose.yml b/infra-templates/cloudflare/4/rancher-compose.yml new file mode 100644 index 0000000..50d766a --- /dev/null +++ b/infra-templates/cloudflare/4/rancher-compose.yml @@ -0,0 +1,48 @@ +.catalog: + name: "CloudFlare DNS" + 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" + 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 '...'. + 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