commit
d0d3217943
40
infra-templates/alidns/0/README.md
Normal file
40
infra-templates/alidns/0/README.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
## Alibaba Cloud DNS
|
||||||
|
|
||||||
|
Rancher External DNS service powered by Alibaba Cloud DNS
|
||||||
|
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
##### 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.
|
14
infra-templates/alidns/0/docker-compose.yml
Normal file
14
infra-templates/alidns/0/docker-compose.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
alidns:
|
||||||
|
image: rancher/external-dns:v0.7.4
|
||||||
|
command: -provider=alidns
|
||||||
|
expose:
|
||||||
|
- 1000
|
||||||
|
environment:
|
||||||
|
ALICLOUD_ACCESS_KEY_ID: ${ALICLOUD_ACCESS_KEY_ID}
|
||||||
|
ALICLOUD_ACCESS_KEY_SECRET: ${ALICLOUD_ACCESS_KEY_SECRET}
|
||||||
|
ROOT_DOMAIN: ${ROOT_DOMAIN}
|
||||||
|
NAME_TEMPLATE: ${NAME_TEMPLATE}
|
||||||
|
TTL: ${TTL}
|
||||||
|
labels:
|
||||||
|
io.rancher.container.create_agent: "true"
|
||||||
|
io.rancher.container.agent.role: "external-dns"
|
48
infra-templates/alidns/0/rancher-compose.yml
Normal file
48
infra-templates/alidns/0/rancher-compose.yml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# notemplating
|
||||||
|
.catalog:
|
||||||
|
name: "Alibaba Cloud DNS"
|
||||||
|
version: "v0.1.0"
|
||||||
|
description: "Rancher External DNS service powered by Alibaba Cloud"
|
||||||
|
minimum_rancher_version: v1.6.8-rc1
|
||||||
|
questions:
|
||||||
|
- variable: "ALICLOUD_ACCESS_KEY_ID"
|
||||||
|
label: "Access Key ID"
|
||||||
|
description: "Access key id for your Alibaba Cloud account"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "ALICLOUD_ACCESS_KEY_SECRET"
|
||||||
|
label: "Access Key Secret"
|
||||||
|
description: "Access key secret for your Alibaba Cloud account"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "ROOT_DOMAIN"
|
||||||
|
label: "Domain"
|
||||||
|
description: "The DNS zone (domain) managed by Alibaba Cloud. DNS entries will be created for <service>.<stack>.<environment>.<domain>"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "TTL"
|
||||||
|
label: "TTL"
|
||||||
|
description: "The resource record cache time to live (TTL), in seconds"
|
||||||
|
type: "int"
|
||||||
|
default: 600
|
||||||
|
min: 1
|
||||||
|
max: 86400
|
||||||
|
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
|
||||||
|
|
||||||
|
alidns:
|
||||||
|
health_check:
|
||||||
|
port: 1000
|
||||||
|
interval: 5000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
request_line: GET / HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
||||||
|
response_timeout: 2000
|
40
infra-templates/alidns/1/README.md
Normal file
40
infra-templates/alidns/1/README.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
## Alibaba Cloud DNS
|
||||||
|
|
||||||
|
Rancher External DNS service powered by Alibaba Cloud DNS
|
||||||
|
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
##### 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.
|
14
infra-templates/alidns/1/docker-compose.yml
Normal file
14
infra-templates/alidns/1/docker-compose.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
alidns:
|
||||||
|
image: rancher/external-dns:v0.7.5
|
||||||
|
command: -provider=alidns
|
||||||
|
expose:
|
||||||
|
- 1000
|
||||||
|
environment:
|
||||||
|
ALICLOUD_ACCESS_KEY_ID: ${ALICLOUD_ACCESS_KEY_ID}
|
||||||
|
ALICLOUD_ACCESS_KEY_SECRET: ${ALICLOUD_ACCESS_KEY_SECRET}
|
||||||
|
ROOT_DOMAIN: ${ROOT_DOMAIN}
|
||||||
|
NAME_TEMPLATE: ${NAME_TEMPLATE}
|
||||||
|
TTL: ${TTL}
|
||||||
|
labels:
|
||||||
|
io.rancher.container.create_agent: "true"
|
||||||
|
io.rancher.container.agent.role: "external-dns"
|
48
infra-templates/alidns/1/rancher-compose.yml
Normal file
48
infra-templates/alidns/1/rancher-compose.yml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# notemplating
|
||||||
|
.catalog:
|
||||||
|
name: "Alibaba Cloud DNS"
|
||||||
|
version: "v0.2.0"
|
||||||
|
description: "Rancher External DNS service powered by Alibaba Cloud"
|
||||||
|
minimum_rancher_version: v1.6.8-rc1
|
||||||
|
questions:
|
||||||
|
- variable: "ALICLOUD_ACCESS_KEY_ID"
|
||||||
|
label: "Access Key ID"
|
||||||
|
description: "Access key id for your Alibaba Cloud account"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "ALICLOUD_ACCESS_KEY_SECRET"
|
||||||
|
label: "Access Key Secret"
|
||||||
|
description: "Access key secret for your Alibaba Cloud account"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "ROOT_DOMAIN"
|
||||||
|
label: "Domain"
|
||||||
|
description: "The DNS zone (domain) managed by Alibaba Cloud. DNS entries will be created for <service>.<stack>.<environment>.<domain>"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "TTL"
|
||||||
|
label: "TTL"
|
||||||
|
description: "The resource record cache time to live (TTL), in seconds"
|
||||||
|
type: "int"
|
||||||
|
default: 600
|
||||||
|
min: 1
|
||||||
|
max: 86400
|
||||||
|
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
|
||||||
|
|
||||||
|
alidns:
|
||||||
|
health_check:
|
||||||
|
port: 1000
|
||||||
|
interval: 5000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
request_line: GET / HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
||||||
|
response_timeout: 2000
|
BIN
infra-templates/alidns/catalogIcon-alidns.png
Normal file
BIN
infra-templates/alidns/catalogIcon-alidns.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
7
infra-templates/alidns/config.yml
Normal file
7
infra-templates/alidns/config.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
name: Alibaba Cloud DNS
|
||||||
|
description: |
|
||||||
|
Rancher External DNS service powered by Alibaba Cloud
|
||||||
|
version: v0.2.0
|
||||||
|
category: External DNS
|
||||||
|
labels:
|
||||||
|
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
11
infra-templates/autospotting/0/README.md
Normal file
11
infra-templates/autospotting/0/README.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Autospotting
|
||||||
|
|
||||||
|
### Info
|
||||||
|
This service builds upon the open source autospotting at [https://github.com/cristim/autospotting](https://github.com/cristim/autospotting)
|
||||||
|
|
||||||
|
This has been turned into a Rancher catalog entry with a couple of minor tweaks and the removal of the requirement to run it as a lambda function, it now runs as a docker container.
|
||||||
|
|
||||||
|
Autospotting works by taking a tag that you specify and adding it to an AWS Auto-Scaling Group with a value of true.
|
||||||
|
|
||||||
|
The container will then run and check for on-demand instances and replace them with cheap spot instances. This is a gradual process and will only replace one host in an ASG at a time.
|
||||||
|
|
13
infra-templates/autospotting/0/docker-compose.yml
Normal file
13
infra-templates/autospotting/0/docker-compose.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
aws-spot-instance-helper:
|
||||||
|
image: chrisurwin/autospotting:v0.1.0
|
||||||
|
tty: true
|
||||||
|
labels:
|
||||||
|
io.rancher.container.pull_image: always
|
||||||
|
environment:
|
||||||
|
AWS_ACCESS_KEY_ID: "${AWS_ACCESS_KEY_ID}"
|
||||||
|
AWS_SECRET_ACCESS_KEY: "${AWS_SECRET_ACCESS_KEY}"
|
||||||
|
regions: "${regions}"
|
||||||
|
min_on_demand_number: "${min_on_demand_number}"
|
||||||
|
min_on_demand_percentage: "${min_on_demand_percentage}"
|
||||||
|
allowed_instance_types: "${allowed_instance_types}"
|
||||||
|
tag_name: "${tag_name}"
|
51
infra-templates/autospotting/0/rancher-compose.yml
Normal file
51
infra-templates/autospotting/0/rancher-compose.yml
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
.catalog:
|
||||||
|
name: "Autospotting"
|
||||||
|
version: "v0.1.0"
|
||||||
|
description: "Autospotting"
|
||||||
|
minimum_rancher_version: v1.0.0
|
||||||
|
questions:
|
||||||
|
- variable: "AWS_ACCESS_KEY_ID"
|
||||||
|
description: "AWS Access Key"
|
||||||
|
label: "AWS Access Key"
|
||||||
|
required: true
|
||||||
|
type: "string"
|
||||||
|
- variable: "AWS_SECRET_ACCESS_KEY"
|
||||||
|
description: "AWS Secret Key"
|
||||||
|
label: "Access Secret"
|
||||||
|
required: true
|
||||||
|
type: "string"
|
||||||
|
- variable: "regions"
|
||||||
|
description: "Regions where it should be activated (comma or whitespace separated list, also supports globs), by default it runs on all regions. Example: 'eu-*,us-east-1"
|
||||||
|
label: "AWS Regions"
|
||||||
|
required: false
|
||||||
|
type: "string"
|
||||||
|
- variable: "min_on_demand_number"
|
||||||
|
description: "On-demand capacity (as absolute number) ensured to be running in each of your groups"
|
||||||
|
label: "Minimum on demand number"
|
||||||
|
required: false
|
||||||
|
type: "string"
|
||||||
|
- variable: "min_on_demand_percentage"
|
||||||
|
description: "On-demand capacity (percentage of the total number of instances in the group) ensured to be running in each of your groups. Defaults to 0"
|
||||||
|
label: "Minimum on demand percentage"
|
||||||
|
required: false
|
||||||
|
type: "string"
|
||||||
|
- variable: "allowed_instance_types"
|
||||||
|
description: "If specified, the spot instances will have a specific instance type"
|
||||||
|
label: "Allowed instance types"
|
||||||
|
required: false
|
||||||
|
type: "string"
|
||||||
|
- variable: "tag_name"
|
||||||
|
description: "If specified you can tag instances with a specific tag to process, default is spot-enabled"
|
||||||
|
label: "Tag name"
|
||||||
|
required: false
|
||||||
|
type: "string"
|
||||||
|
|
||||||
|
aws-spot-instance-helper:
|
||||||
|
health_check:
|
||||||
|
port: 9777
|
||||||
|
interval: 2000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
strategy: recreate
|
||||||
|
response_timeout: 2000
|
||||||
|
request_line: GET /ping HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 29 KiB |
5
infra-templates/autospotting/config.yml
Normal file
5
infra-templates/autospotting/config.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
name: AutoSpotting
|
||||||
|
description: |
|
||||||
|
Replaces AWS On-Demand instances with cheaper Spot-Instances where possible
|
||||||
|
version: v0.1.0
|
||||||
|
category: Infrastructure Services
|
7
infra-templates/aws-spot-instance-helper/0/README.md
Normal file
7
infra-templates/aws-spot-instance-helper/0/README.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# AWS Spot Instance Helper
|
||||||
|
|
||||||
|
### Info
|
||||||
|
This is a simple service that runs globally. It monitors the state of the host, if the host is running on a spot instance it will check to see if the host is scheduled for termination then it will automatically deactive the host and evaculate the containers.
|
||||||
|
|
||||||
|
The source code is available at [https://www.github.com/chrisurwin/aws-spot-instance-helper](https://www.github.com/chrisurwin/aws-spot-instance-helper)
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
aws-spot-instance-helper:
|
||||||
|
image: chrisurwin/aws-spot-instance-helper:v0.1.0
|
||||||
|
tty: true
|
||||||
|
labels:
|
||||||
|
io.rancher.container.create_agent: 'true'
|
||||||
|
io.rancher.container.agent.role: environment
|
||||||
|
io.rancher.container.pull_image: always
|
||||||
|
io.rancher.scheduler.global: 'true'
|
@ -0,0 +1,16 @@
|
|||||||
|
.catalog:
|
||||||
|
name: "AWS Spot Instance Helper"
|
||||||
|
version: "v0.1.0"
|
||||||
|
description: "AWS Spot Instance Helper"
|
||||||
|
minimum_rancher_version: v1.5.5
|
||||||
|
|
||||||
|
|
||||||
|
aws-spot-instance-helper:
|
||||||
|
health_check:
|
||||||
|
port: 9777
|
||||||
|
interval: 2000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
strategy: recreate
|
||||||
|
response_timeout: 2000
|
||||||
|
request_line: GET /ping HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
9
infra-templates/aws-spot-instance-helper/1/README.md
Normal file
9
infra-templates/aws-spot-instance-helper/1/README.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# AWS Spot Instance Helper
|
||||||
|
|
||||||
|
### Info
|
||||||
|
This is a simple service that runs globally. It monitors the state of the host, if the host is running on a spot instance it will check to see if the host is scheduled for termination then it will automatically deactive the host and evaculate the containers.
|
||||||
|
|
||||||
|
The source code is available at [https://www.github.com/chrisurwin/aws-spot-instance-helper](https://www.github.com/chrisurwin/aws-spot-instance-helper)
|
||||||
|
|
||||||
|
This version support notification to slack.
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
aws-spot-instance-helper:
|
||||||
|
image: chrisurwin/aws-spot-instance-helper:v0.2.0
|
||||||
|
tty: true
|
||||||
|
labels:
|
||||||
|
io.rancher.container.create_agent: 'true'
|
||||||
|
io.rancher.container.agent.role: environment
|
||||||
|
io.rancher.container.pull_image: always
|
||||||
|
io.rancher.scheduler.global: 'true'
|
||||||
|
environment:
|
||||||
|
SLACK_WEBHOOK: "${SLACK_WEBHOOK}"
|
@ -0,0 +1,21 @@
|
|||||||
|
.catalog:
|
||||||
|
name: "AWS Spot Instance Helper"
|
||||||
|
version: "v0.2.0"
|
||||||
|
description: "AWS Spot Instance Helper"
|
||||||
|
minimum_rancher_version: v1.5.5
|
||||||
|
questions:
|
||||||
|
- variable: "SLACK_WEBHOOK"
|
||||||
|
description: "Slack Webhook"
|
||||||
|
label: "Slack Webhook"
|
||||||
|
required: false
|
||||||
|
type: "string"
|
||||||
|
|
||||||
|
aws-spot-instance-helper:
|
||||||
|
health_check:
|
||||||
|
port: 9777
|
||||||
|
interval: 2000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
strategy: recreate
|
||||||
|
response_timeout: 2000
|
||||||
|
request_line: GET /ping HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="1200.000000pt" height="1200.000000pt" viewBox="0 0 1200.000000 1200.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
|
||||||
|
<g transform="translate(0.000000,1200.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#000000" stroke="none">
|
||||||
|
<path d="M0 6000 l0 -6000 6000 0 6000 0 0 6000 0 6000 -6000 0 -6000 0 0
|
||||||
|
-6000z m6369 5085 c174 -42 319 -177 377 -355 17 -50 18 -112 22 -717 l3 -663
|
||||||
|
-1798 0 c-1983 0 -1850 4 -1977 -63 -118 -61 -226 -200 -255 -327 -7 -30 -11
|
||||||
|
-651 -11 -1882 l0 -1838 -602 0 c-368 0 -628 4 -667 11 -228 37 -401 216 -432
|
||||||
|
447 -6 51 -9 910 -7 2527 l3 2450 23 66 c43 129 132 234 250 297 121 64 -55
|
||||||
|
60 2592 61 2121 1 2423 -1 2479 -14z m2142 -2183 c164 -46 299 -177 349 -340
|
||||||
|
19 -61 20 -94 20 -728 l0 -664 -1804 0 c-1771 0 -1805 0 -1868 -20 -161 -50
|
||||||
|
-286 -176 -344 -350 -18 -53 -19 -133 -22 -1892 l-2 -1838 -628 0 c-684 0
|
||||||
|
-689 0 -796 58 -28 15 -81 57 -119 93 -78 78 -130 177 -147 279 -14 90 -14
|
||||||
|
4900 0 4990 30 189 188 365 371 414 46 13 394 15 2489 15 2331 1 2438 0 2501
|
||||||
|
-17z m2160 -2190 c82 -27 175 -88 230 -150 50 -57 105 -167 119 -241 15 -79
|
||||||
|
14 -4962 -1 -5033 -40 -192 -212 -361 -404 -398 -44 -8 -715 -10 -2490 -8
|
||||||
|
l-2430 3 -58 22 c-150 57 -263 170 -320 320 l-22 58 -3 2495 c-1 1709 1 2511
|
||||||
|
8 2546 43 209 223 375 435 404 33 4 1142 7 2465 6 l2405 -1 66 -23z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
5
infra-templates/aws-spot-instance-helper/config.yml
Normal file
5
infra-templates/aws-spot-instance-helper/config.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
name: AWS Spot Instance Helper
|
||||||
|
description: |
|
||||||
|
Automatically evacuates spot instances that are marked for termination
|
||||||
|
version: v0.2.0
|
||||||
|
category: Rancher Services
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.1.9-rancher1"
|
version: "v0.1.9-rancher1"
|
||||||
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version 0.44.0"
|
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version 0.44.0"
|
||||||
minimum_rancher_version: v1.2.0-pre4-rc1
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.2.0-pre4-rc1
|
||||||
questions:
|
questions:
|
||||||
- variable: "CLOUDFLARE_EMAIL"
|
- variable: "CLOUDFLARE_EMAIL"
|
||||||
label: "CloudFlare email address"
|
label: "CloudFlare email address"
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.2.1-rancher1"
|
version: "v0.2.1-rancher1"
|
||||||
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version 0.44.0"
|
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version 0.44.0"
|
||||||
minimum_rancher_version: v1.2.0-pre4-rc1
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.2.0-pre4-rc1
|
||||||
questions:
|
questions:
|
||||||
- variable: "CLOUDFLARE_EMAIL"
|
- variable: "CLOUDFLARE_EMAIL"
|
||||||
label: "CloudFlare email address"
|
label: "CloudFlare email address"
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.4.0-rancher1"
|
version: "v0.4.0-rancher1"
|
||||||
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version 0.44.0"
|
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version 0.44.0"
|
||||||
minimum_rancher_version: v1.2.0-pre4-rc1
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.2.0-pre4-rc1
|
||||||
questions:
|
questions:
|
||||||
- variable: "CLOUDFLARE_EMAIL"
|
- variable: "CLOUDFLARE_EMAIL"
|
||||||
label: "CloudFlare email address"
|
label: "CloudFlare email address"
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.6.0-rancher1"
|
version: "v0.6.0-rancher1"
|
||||||
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version v1.1.0"
|
description: "Rancher External DNS service powered by CloudFlare. Requires Rancher version v1.1.0"
|
||||||
minimum_rancher_version: v1.2.0-pre4-rc1
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.5.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "CLOUDFLARE_EMAIL"
|
- variable: "CLOUDFLARE_EMAIL"
|
||||||
label: "CloudFlare email address"
|
label: "CloudFlare email address"
|
||||||
|
36
infra-templates/cloudflare/4/README.md
Normal file
36
infra-templates/cloudflare/4/README.md
Normal 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.
|
14
infra-templates/cloudflare/4/docker-compose.yml
Normal file
14
infra-templates/cloudflare/4/docker-compose.yml
Normal 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"
|
48
infra-templates/cloudflare/4/rancher-compose.yml
Normal file
48
infra-templates/cloudflare/4/rancher-compose.yml
Normal 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
|
@ -1,7 +1,7 @@
|
|||||||
name: CloudFlare DNS
|
name: CloudFlare DNS
|
||||||
description: |
|
description: |
|
||||||
Rancher External DNS service powered by CloudFlare
|
Rancher External DNS service powered by CloudFlare
|
||||||
version: v0.6.0-rancher1
|
version: v0.6.0-rancher2
|
||||||
category: External DNS
|
category: External DNS
|
||||||
labels:
|
labels:
|
||||||
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.6.2-rancher1"
|
version: "v0.6.2-rancher1"
|
||||||
description: "Rancher External DNS service powered by DigitalOcean"
|
description: "Rancher External DNS service powered by DigitalOcean"
|
||||||
minimum_rancher_version: v1.2.0-pre4-rc1
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.4.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "DO_PAT"
|
- variable: "DO_PAT"
|
||||||
label: "DigitalOcean Personal Access Token"
|
label: "DigitalOcean Personal Access Token"
|
||||||
|
48
infra-templates/digitalocean-dns/1/README.md
Normal file
48
infra-templates/digitalocean-dns/1/README.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
## DigitalOcean DNS
|
||||||
|
|
||||||
|
Rancher External DNS service powered by DigitalOcean
|
||||||
|
|
||||||
|
#### Changelog
|
||||||
|
|
||||||
|
Initial version
|
||||||
|
|
||||||
|
#### 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
|
||||||
|
|
||||||
|
##### 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.
|
13
infra-templates/digitalocean-dns/1/docker-compose.yml
Normal file
13
infra-templates/digitalocean-dns/1/docker-compose.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
digitalocean:
|
||||||
|
image: rancher/external-dns:v0.6.3
|
||||||
|
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"
|
35
infra-templates/digitalocean-dns/1/rancher-compose.yml
Normal file
35
infra-templates/digitalocean-dns/1/rancher-compose.yml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
.catalog:
|
||||||
|
name: "DigitalOcean DNS"
|
||||||
|
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"
|
||||||
|
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
|
53
infra-templates/digitalocean-dns/2/README.md
Normal file
53
infra-templates/digitalocean-dns/2/README.md
Normal 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.
|
13
infra-templates/digitalocean-dns/2/docker-compose.yml
Normal file
13
infra-templates/digitalocean-dns/2/docker-compose.yml
Normal 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"
|
35
infra-templates/digitalocean-dns/2/rancher-compose.yml
Normal file
35
infra-templates/digitalocean-dns/2/rancher-compose.yml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
.catalog:
|
||||||
|
name: "DigitalOcean DNS"
|
||||||
|
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"
|
||||||
|
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
|
53
infra-templates/digitalocean-dns/3/README.md
Normal file
53
infra-templates/digitalocean-dns/3/README.md
Normal 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.
|
13
infra-templates/digitalocean-dns/3/docker-compose.yml
Normal file
13
infra-templates/digitalocean-dns/3/docker-compose.yml
Normal 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"
|
35
infra-templates/digitalocean-dns/3/rancher-compose.yml
Normal file
35
infra-templates/digitalocean-dns/3/rancher-compose.yml
Normal 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
|
@ -1,7 +1,7 @@
|
|||||||
name: DigitalOcean DNS
|
name: DigitalOcean DNS
|
||||||
description: |
|
description: |
|
||||||
Rancher External DNS service powered by DigitalOcean
|
Rancher External DNS service powered by DigitalOcean
|
||||||
version: v0.6.2-rancher1
|
version: v0.6.4.1
|
||||||
category: External DNS
|
category: External DNS
|
||||||
labels:
|
labels:
|
||||||
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.1.9-rancher1"
|
version: "v0.1.9-rancher1"
|
||||||
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version 0.44.0"
|
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version 0.44.0"
|
||||||
minimum_rancher_version: v1.2.0-pre4-rc1
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.2.0-pre4-rc1
|
||||||
questions:
|
questions:
|
||||||
- variable: "DNSIMPLE_EMAIL"
|
- variable: "DNSIMPLE_EMAIL"
|
||||||
label: "DNSimple account email address"
|
label: "DNSimple account email address"
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.2.1-rancher1"
|
version: "v0.2.1-rancher1"
|
||||||
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version 0.44.0"
|
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version 0.44.0"
|
||||||
minimum_rancher_version: v1.2.0-pre4-rc1
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.2.0-pre4-rc1
|
||||||
questions:
|
questions:
|
||||||
- variable: "DNSIMPLE_EMAIL"
|
- variable: "DNSIMPLE_EMAIL"
|
||||||
label: "DNSimple account email address"
|
label: "DNSimple account email address"
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.6.0-rancher1"
|
version: "v0.6.0-rancher1"
|
||||||
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version v1.1.0"
|
description: "Rancher External DNS service powered by DNSimple. Requires Rancher version v1.1.0"
|
||||||
minimum_rancher_version: v1.2.0-pre4-rc1
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.5.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "DNSIMPLE_EMAIL"
|
- variable: "DNSIMPLE_EMAIL"
|
||||||
label: "DNSimple Account Email Address"
|
label: "DNSimple Account Email Address"
|
||||||
|
36
infra-templates/dnsimple/3/README.md
Normal file
36
infra-templates/dnsimple/3/README.md
Normal 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.
|
14
infra-templates/dnsimple/3/docker-compose.yml
Normal file
14
infra-templates/dnsimple/3/docker-compose.yml
Normal 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"
|
46
infra-templates/dnsimple/3/rancher-compose.yml
Normal file
46
infra-templates/dnsimple/3/rancher-compose.yml
Normal 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
|
@ -1,7 +1,7 @@
|
|||||||
name: DNSimple DNS
|
name: DNSimple DNS
|
||||||
description: |
|
description: |
|
||||||
Rancher External DNS service powered by DNSimple
|
Rancher External DNS service powered by DNSimple
|
||||||
version: v0.6.0-rancher1
|
version: v0.6.0-rancher2
|
||||||
category: External DNS
|
category: External DNS
|
||||||
labels:
|
labels:
|
||||||
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.5.0-rancher1"
|
version: "v0.5.0-rancher1"
|
||||||
description: "Rancher External DNS service powered by any RFC2136 compatible DNS"
|
description: "Rancher External DNS service powered by any RFC2136 compatible DNS"
|
||||||
minimum_rancher_version: v1.2.0-pre4-rc1
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.2.0-pre4-rc1
|
||||||
questions:
|
questions:
|
||||||
- variable: "RFC2136_HOST"
|
- variable: "RFC2136_HOST"
|
||||||
label: "Domain Name Server IP"
|
label: "Domain Name Server IP"
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.6.0-rancher1"
|
version: "v0.6.0-rancher1"
|
||||||
description: "Rancher External DNS service powered by any RFC2136 compatible DNS server. Requires Rancher version v1.1.0"
|
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
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.2.0-pre4-rc1
|
||||||
questions:
|
questions:
|
||||||
- variable: "RFC2136_HOST"
|
- variable: "RFC2136_HOST"
|
||||||
label: "DNS Server IP"
|
label: "DNS Server IP"
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: "v0.6.2-rancher1"
|
version: "v0.6.2-rancher1"
|
||||||
description: "Rancher External DNS service powered by any RFC2136 compatible DNS server. Requires Rancher version v1.1.0"
|
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
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
maximum_rancher_version: v1.5.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "RFC2136_HOST"
|
- variable: "RFC2136_HOST"
|
||||||
label: "DNS Server IP"
|
label: "DNS Server IP"
|
||||||
|
52
infra-templates/dnsupdate-rfc2136/3/README.md
Normal file
52
infra-templates/dnsupdate-rfc2136/3/README.md
Normal 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.
|
17
infra-templates/dnsupdate-rfc2136/3/docker-compose.yml
Normal file
17
infra-templates/dnsupdate-rfc2136/3/docker-compose.yml
Normal 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"
|
63
infra-templates/dnsupdate-rfc2136/3/rancher-compose.yml
Normal file
63
infra-templates/dnsupdate-rfc2136/3/rancher-compose.yml
Normal 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
|
60
infra-templates/dnsupdate-rfc2136/4/README.md
Normal file
60
infra-templates/dnsupdate-rfc2136/4/README.md
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
## 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
|
||||||
|
|
||||||
|
|
||||||
|
`io.rancher.service.external_dns_name_template`
|
||||||
|
Accepts valid DNS name template
|
||||||
|
|
||||||
|
By default DNS entries are named based on default template defined on dnsupdate service.
|
||||||
|
You can customize it per service by assigning `io.rancher.service.external_dns_name_template` label to each service.
|
||||||
|
dnsupdate will use this template instead of default one when creating dns record for related 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.
|
17
infra-templates/dnsupdate-rfc2136/4/docker-compose.yml
Normal file
17
infra-templates/dnsupdate-rfc2136/4/docker-compose.yml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
rfc2136dns:
|
||||||
|
image: rancher/external-dns:v0.7.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"
|
63
infra-templates/dnsupdate-rfc2136/4/rancher-compose.yml
Normal file
63
infra-templates/dnsupdate-rfc2136/4/rancher-compose.yml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# notemplating
|
||||||
|
.catalog:
|
||||||
|
name: "DNS Update (RFC2136)"
|
||||||
|
version: "v0.7.2-rancher1"
|
||||||
|
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
|
@ -1,7 +1,7 @@
|
|||||||
name: DNS Update (RFC2136)
|
name: DNS Update (RFC2136)
|
||||||
description: |
|
description: |
|
||||||
Rancher External DNS service powered by any RFC2136 compatible DNS
|
Rancher External DNS service powered by any RFC2136 compatible DNS
|
||||||
version: v0.6.2-rancher1
|
version: v0.7.2-rancher1
|
||||||
category: External DNS
|
category: External DNS
|
||||||
labels:
|
labels:
|
||||||
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
||||||
|
13
infra-templates/gandi-dns/0/docker-compose.yml
Normal file
13
infra-templates/gandi-dns/0/docker-compose.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
gandidns:
|
||||||
|
image: rancher/external-dns:v0.7.2
|
||||||
|
command: -provider=gandi
|
||||||
|
expose:
|
||||||
|
- 1000
|
||||||
|
environment:
|
||||||
|
GANDI_APIKEY: ${GANDI_APIKEY}
|
||||||
|
ROOT_DOMAIN: ${ROOT_DOMAIN}
|
||||||
|
NAME_TEMPLATE: ${NAME_TEMPLATE}
|
||||||
|
TTL: ${TTL}
|
||||||
|
labels:
|
||||||
|
io.rancher.container.create_agent: "true"
|
||||||
|
io.rancher.container.agent.role: "external-dns"
|
43
infra-templates/gandi-dns/0/rancher-compose.yml
Normal file
43
infra-templates/gandi-dns/0/rancher-compose.yml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# notemplating
|
||||||
|
.catalog:
|
||||||
|
name: "Gandi DNS"
|
||||||
|
version: "v0.1.0"
|
||||||
|
description: "Rancher External DNS service powered by Gandi. Requires Rancher version v1.1.0"
|
||||||
|
maintainer: "Frederic Leger <contact@webofmars.com>"
|
||||||
|
minimum_rancher_version: v1.6.0-rc1
|
||||||
|
#maximum_rancher_version:
|
||||||
|
questions:
|
||||||
|
- variable: "GANDI_APIKEY"
|
||||||
|
label: "Gandi API key"
|
||||||
|
description: "API key for your Gandi account"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "ROOT_DOMAIN"
|
||||||
|
label: "Root Domain"
|
||||||
|
description: "The domain name managed by Gandi."
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "TTL"
|
||||||
|
label: "TTL"
|
||||||
|
description: "The resource record cache time to live (TTL), in seconds (minimum 300)"
|
||||||
|
type: "int"
|
||||||
|
default: 300
|
||||||
|
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
|
||||||
|
|
||||||
|
gandidns:
|
||||||
|
health_check:
|
||||||
|
port: 1000
|
||||||
|
interval: 15000
|
||||||
|
unhealthy_threshold: 2
|
||||||
|
request_line: GET / HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
||||||
|
response_timeout: 2000
|
13
infra-templates/gandi-dns/1/docker-compose.yml
Normal file
13
infra-templates/gandi-dns/1/docker-compose.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
gandidns:
|
||||||
|
image: rancher/external-dns:v0.7.6
|
||||||
|
command: -provider=gandi
|
||||||
|
expose:
|
||||||
|
- 1000
|
||||||
|
environment:
|
||||||
|
GANDI_APIKEY: ${GANDI_APIKEY}
|
||||||
|
ROOT_DOMAIN: ${ROOT_DOMAIN}
|
||||||
|
NAME_TEMPLATE: ${NAME_TEMPLATE}
|
||||||
|
TTL: ${TTL}
|
||||||
|
labels:
|
||||||
|
io.rancher.container.create_agent: "true"
|
||||||
|
io.rancher.container.agent.role: "external-dns"
|
43
infra-templates/gandi-dns/1/rancher-compose.yml
Normal file
43
infra-templates/gandi-dns/1/rancher-compose.yml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# notemplating
|
||||||
|
.catalog:
|
||||||
|
name: "Gandi DNS"
|
||||||
|
version: "v0.1.1"
|
||||||
|
description: "Rancher External DNS service powered by Gandi. Requires Rancher version v1.1.0"
|
||||||
|
maintainer: "Frederic Leger <contact@webofmars.com>"
|
||||||
|
minimum_rancher_version: v1.6.0-rc1
|
||||||
|
#maximum_rancher_version:
|
||||||
|
questions:
|
||||||
|
- variable: "GANDI_APIKEY"
|
||||||
|
label: "Gandi API key"
|
||||||
|
description: "API key for your Gandi account"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "ROOT_DOMAIN"
|
||||||
|
label: "Root Domain"
|
||||||
|
description: "The domain name managed by Gandi."
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "TTL"
|
||||||
|
label: "TTL"
|
||||||
|
description: "The resource record cache time to live (TTL), in seconds (minimum 300)"
|
||||||
|
type: "int"
|
||||||
|
default: 300
|
||||||
|
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
|
||||||
|
|
||||||
|
gandidns:
|
||||||
|
health_check:
|
||||||
|
port: 1000
|
||||||
|
interval: 15000
|
||||||
|
unhealthy_threshold: 2
|
||||||
|
request_line: GET / HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
||||||
|
response_timeout: 2000
|
BIN
infra-templates/gandi-dns/catalogIcon-gandidns.jpg
Normal file
BIN
infra-templates/gandi-dns/catalogIcon-gandidns.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
7
infra-templates/gandi-dns/config.yml
Normal file
7
infra-templates/gandi-dns/config.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
name: GANDI DNS
|
||||||
|
description: |
|
||||||
|
Rancher External DNS service powered by Gandi.net
|
||||||
|
version: v0.1.1
|
||||||
|
category: External DNS
|
||||||
|
labels:
|
||||||
|
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
40
infra-templates/infoblox/0/README.md
Normal file
40
infra-templates/infoblox/0/README.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
## Infoblox DNS
|
||||||
|
|
||||||
|
Rancher External DNS service powered by Infoblox DNS
|
||||||
|
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
##### 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.
|
16
infra-templates/infoblox/0/docker-compose.yml
Normal file
16
infra-templates/infoblox/0/docker-compose.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
infoblox:
|
||||||
|
image: rancher/external-dns:v0.7.5
|
||||||
|
command: -provider=infoblox
|
||||||
|
expose:
|
||||||
|
- 1000
|
||||||
|
environment:
|
||||||
|
INFOBLOX_URL: ${INFOBLOX_URL}
|
||||||
|
INFOBLOX_USER_NAME: ${INFOBLOX_USER_NAME}
|
||||||
|
INFOBLOX_PASSWORD: ${INFOBLOX_PASSWORD}
|
||||||
|
ROOT_DOMAIN: ${ROOT_DOMAIN}
|
||||||
|
SSL_VERIFY: ${SSL_VERIFY}
|
||||||
|
USE_COOKIES: ${USE_COOKIES}
|
||||||
|
TTL: ${TTL}
|
||||||
|
labels:
|
||||||
|
io.rancher.container.create_agent: "true"
|
||||||
|
io.rancher.container.agent.role: "external-dns"
|
63
infra-templates/infoblox/0/rancher-compose.yml
Normal file
63
infra-templates/infoblox/0/rancher-compose.yml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# notemplating
|
||||||
|
.catalog:
|
||||||
|
name: "Infoblox DNS"
|
||||||
|
version: "v0.1.0"
|
||||||
|
description: "Rancher External DNS service powered by Infoblox"
|
||||||
|
minimum_rancher_version: v1.6.0
|
||||||
|
questions:
|
||||||
|
- variable: "INFOBLOX_URL"
|
||||||
|
label: "Infoblox url"
|
||||||
|
description: "Infoblox url for your Infoblox service"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "INFOBLOX_USER_NAME"
|
||||||
|
label: "Infoblox user name"
|
||||||
|
description: "Infoblox user name for your Infoblox service"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "INFOBLOX_PASSWORD"
|
||||||
|
label: "Infoblox password"
|
||||||
|
description: "Infoblox password for your Infoblox service"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "SSL_VERIFY"
|
||||||
|
label: "Ssl verify"
|
||||||
|
description: "Infoblox Ssl verify for your Infoblox service"
|
||||||
|
type: "boolean"
|
||||||
|
required: true
|
||||||
|
- variable: "USE_COOKIES"
|
||||||
|
label: "Use cookies"
|
||||||
|
description: "Uses cookies if specified, re-creating the request and falling back to basic auth if a cookie is not present"
|
||||||
|
type: "boolean"
|
||||||
|
required: true
|
||||||
|
- variable: "ROOT_DOMAIN"
|
||||||
|
label: "Domain"
|
||||||
|
description: "The DNS zone name (root domain) managed by Infoblox. DNS entries will be created for <service>.<stack>.<environment>.<domain>"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "TTL"
|
||||||
|
label: "TTL"
|
||||||
|
description: "The resource record cache time to live (TTL), in seconds"
|
||||||
|
type: "int"
|
||||||
|
default: 600
|
||||||
|
min: 1
|
||||||
|
max: 86400
|
||||||
|
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
|
||||||
|
|
||||||
|
infoblox:
|
||||||
|
health_check:
|
||||||
|
port: 1000
|
||||||
|
interval: 5000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
request_line: GET / HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
||||||
|
response_timeout: 2000
|
40
infra-templates/infoblox/1/README.md
Normal file
40
infra-templates/infoblox/1/README.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
## Infoblox DNS
|
||||||
|
|
||||||
|
Rancher External DNS service powered by Infoblox DNS
|
||||||
|
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
##### 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.
|
16
infra-templates/infoblox/1/docker-compose.yml
Normal file
16
infra-templates/infoblox/1/docker-compose.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
infoblox:
|
||||||
|
image: rancher/external-dns:v0.7.8
|
||||||
|
command: -provider=infoblox
|
||||||
|
expose:
|
||||||
|
- 1000
|
||||||
|
environment:
|
||||||
|
INFOBLOX_URL: ${INFOBLOX_URL}
|
||||||
|
INFOBLOX_USER_NAME: ${INFOBLOX_USER_NAME}
|
||||||
|
INFOBLOX_PASSWORD: ${INFOBLOX_PASSWORD}
|
||||||
|
ROOT_DOMAIN: ${ROOT_DOMAIN}
|
||||||
|
SSL_VERIFY: ${SSL_VERIFY}
|
||||||
|
USE_COOKIES: ${USE_COOKIES}
|
||||||
|
TTL: ${TTL}
|
||||||
|
labels:
|
||||||
|
io.rancher.container.create_agent: "true"
|
||||||
|
io.rancher.container.agent.role: "external-dns"
|
63
infra-templates/infoblox/1/rancher-compose.yml
Normal file
63
infra-templates/infoblox/1/rancher-compose.yml
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# notemplating
|
||||||
|
.catalog:
|
||||||
|
name: "Infoblox DNS"
|
||||||
|
version: "v0.2.0"
|
||||||
|
description: "Rancher External DNS service powered by Infoblox"
|
||||||
|
minimum_rancher_version: v1.6.0
|
||||||
|
questions:
|
||||||
|
- variable: "INFOBLOX_URL"
|
||||||
|
label: "Infoblox url"
|
||||||
|
description: "Infoblox url for your Infoblox service"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "INFOBLOX_USER_NAME"
|
||||||
|
label: "Infoblox user name"
|
||||||
|
description: "Infoblox user name for your Infoblox service"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "INFOBLOX_PASSWORD"
|
||||||
|
label: "Infoblox password"
|
||||||
|
description: "Infoblox password for your Infoblox service"
|
||||||
|
type: "password"
|
||||||
|
required: true
|
||||||
|
- variable: "SSL_VERIFY"
|
||||||
|
label: "Ssl verify"
|
||||||
|
description: "Infoblox Ssl verify for your Infoblox service"
|
||||||
|
type: "boolean"
|
||||||
|
required: true
|
||||||
|
- variable: "USE_COOKIES"
|
||||||
|
label: "Use cookies"
|
||||||
|
description: "Uses cookies if specified, re-creating the request and falling back to basic auth if a cookie is not present"
|
||||||
|
type: "boolean"
|
||||||
|
required: true
|
||||||
|
- variable: "ROOT_DOMAIN"
|
||||||
|
label: "Domain"
|
||||||
|
description: "The DNS zone name (root domain) managed by Infoblox. DNS entries will be created for <service>.<stack>.<environment>.<domain>"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
- variable: "TTL"
|
||||||
|
label: "TTL"
|
||||||
|
description: "The resource record cache time to live (TTL), in seconds"
|
||||||
|
type: "int"
|
||||||
|
default: 600
|
||||||
|
min: 1
|
||||||
|
max: 86400
|
||||||
|
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
|
||||||
|
|
||||||
|
infoblox:
|
||||||
|
health_check:
|
||||||
|
port: 1000
|
||||||
|
interval: 5000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
request_line: GET / HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
||||||
|
response_timeout: 2000
|
BIN
infra-templates/infoblox/catalogIcon-infoblox.png
Normal file
BIN
infra-templates/infoblox/catalogIcon-infoblox.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
7
infra-templates/infoblox/config.yml
Normal file
7
infra-templates/infoblox/config.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
name: Infoblox DNS
|
||||||
|
description: |
|
||||||
|
Rancher External DNS service powered by Infoblox
|
||||||
|
version: v0.2.0
|
||||||
|
category: External DNS
|
||||||
|
labels:
|
||||||
|
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
14
infra-templates/powerdns-external-dns/1/docker-compose.yml
Normal file
14
infra-templates/powerdns-external-dns/1/docker-compose.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
powerdns:
|
||||||
|
image: rancher/external-dns:v0.7.1
|
||||||
|
command: "-provider=powerdns"
|
||||||
|
expose:
|
||||||
|
- 1000
|
||||||
|
environment:
|
||||||
|
POWERDNS_API_KEY: ${POWERDNS_API_KEY}
|
||||||
|
POWERDNS_URL: ${POWERDNS_URL}
|
||||||
|
ROOT_DOMAIN: ${ROOT_DOMAIN}
|
||||||
|
TTL: ${TTL}
|
||||||
|
labels:
|
||||||
|
io.rancher.container.pull_image: always
|
||||||
|
io.rancher.container.create_agent: "true"
|
||||||
|
io.rancher.container.agent.role: "external-dns"
|
38
infra-templates/powerdns-external-dns/1/rancher-compose.yml
Normal file
38
infra-templates/powerdns-external-dns/1/rancher-compose.yml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
.catalog:
|
||||||
|
name: "PowerDNS External"
|
||||||
|
version: "v0.7.1"
|
||||||
|
description: Rancher External DNS service for PowerDNS.
|
||||||
|
minimum_rancher_version: v1.2.0-pre4-rc1
|
||||||
|
uuid: powerdns-external-dns:v0.7.1
|
||||||
|
questions:
|
||||||
|
- variable: POWERDNS_URL
|
||||||
|
label: PowerDNS URL
|
||||||
|
type: string
|
||||||
|
description: http[s] base url to PowerDNS
|
||||||
|
required: true
|
||||||
|
default: http://powerdns:8100
|
||||||
|
- variable: POWERDNS_API_KEY
|
||||||
|
label: PowerDNS API Key
|
||||||
|
type: password
|
||||||
|
description: API Key for PowerDNS
|
||||||
|
required: true
|
||||||
|
- variable: TTL
|
||||||
|
label: TTL
|
||||||
|
description: "The resource record cache time to live (TTL), in seconds"
|
||||||
|
type: int
|
||||||
|
default: 299
|
||||||
|
required: false
|
||||||
|
- variable: "ROOT_DOMAIN"
|
||||||
|
label: "Hosted zone name"
|
||||||
|
description: "Hosted zone name (zone has to be pre-created). DNS entries will be created for <service>.<stack>.<environment>.<hosted zone>"
|
||||||
|
type: "string"
|
||||||
|
required: true
|
||||||
|
|
||||||
|
powerdns:
|
||||||
|
health_check:
|
||||||
|
port: 1000
|
||||||
|
interval: 30000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
request_line: GET / HTTP/1.0
|
||||||
|
healthy_threshold: 2
|
||||||
|
response_timeout: 2000
|
@ -1,7 +1,7 @@
|
|||||||
name: PowerDNS External
|
name: PowerDNS External
|
||||||
description: |
|
description: |
|
||||||
Rancher External DNS service for PowerDNS
|
Rancher External DNS service for PowerDNS
|
||||||
version: v0.5.0-rancher1
|
version: v0.7.1
|
||||||
category: External DNS
|
category: External DNS
|
||||||
labels:
|
labels:
|
||||||
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
io.rancher.orchestration.supported: 'cattle,mesos,swarm,kubernetes'
|
||||||
|
@ -9,23 +9,42 @@ spec:
|
|||||||
template:
|
template:
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
|
- image: husseingalal/mongo-k8s-config:v0.2.0
|
||||||
|
name: mongo-config
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /opt/rancher/bin
|
||||||
|
name: utility
|
||||||
|
stdin: true
|
||||||
|
tty: true
|
||||||
- name: mongo-sec
|
- name: mongo-sec
|
||||||
image: husseingalal/mongo-k8s
|
image: mongo:3.4
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 27017
|
- containerPort: 27017
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: mongo-ephermal-storage
|
- name: mongo-datadir
|
||||||
mountPath: /data/db
|
mountPath: /data/db
|
||||||
|
- mountPath: /opt/rancher/bin
|
||||||
|
name: utility
|
||||||
command:
|
command:
|
||||||
- /run.sh
|
- /opt/rancher/bin/run.sh
|
||||||
- mongod
|
- mongod
|
||||||
- "--replSet"
|
- "--replSet"
|
||||||
- rs0
|
- rs0
|
||||||
- "--smallfiles"
|
- "--smallfiles"
|
||||||
- "--noprealloc"
|
- "--noprealloc"
|
||||||
|
env:
|
||||||
|
- name: PRIMARY
|
||||||
|
value: "false"
|
||||||
|
- name: POD_IP
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: status.podIP
|
||||||
volumes:
|
volumes:
|
||||||
- name: mongo-ephermal-storage
|
- name: mongo-datadir
|
||||||
emptyDir: {}
|
hostPath:
|
||||||
|
path: ${mongo_volume}
|
||||||
|
- name: utility
|
||||||
|
emptyDir: {}
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
secondary: "true"
|
secondary: "true"
|
||||||
|
@ -9,33 +9,49 @@ spec:
|
|||||||
- port: 27017
|
- port: 27017
|
||||||
targetPort: 27017
|
targetPort: 27017
|
||||||
selector:
|
selector:
|
||||||
name: mongo-master
|
name: mongo-primary
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Pod
|
kind: Pod
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
name: mongo-master
|
name: mongo-primary
|
||||||
name: mongo-master
|
name: mongo-primary
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: mongo-master
|
- name: mongo-config
|
||||||
image: "husseingalal/mongo-k8s"
|
image: husseingalal/mongo-k8s-config:v0.2.0
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /opt/rancher/bin
|
||||||
|
name: utility
|
||||||
|
stdin: true
|
||||||
|
tty: true
|
||||||
|
- name: mongo-primary
|
||||||
|
image: mongo:3.4
|
||||||
env:
|
env:
|
||||||
- name: PRIMARY
|
- name: PRIMARY
|
||||||
value: "true"
|
value: "true"
|
||||||
|
- name: POD_IP
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: status.podIP
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 27017
|
- containerPort: 27017
|
||||||
command:
|
command:
|
||||||
- /run.sh
|
- /opt/rancher/bin/run.sh
|
||||||
- mongod
|
- mongod
|
||||||
- "--replSet"
|
- "--replSet"
|
||||||
- rs0
|
- rs0
|
||||||
- "--smallfiles"
|
- "--smallfiles"
|
||||||
- "--noprealloc"
|
- "--noprealloc"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
|
- mountPath: /opt/rancher/bin
|
||||||
|
name: utility
|
||||||
- mountPath: /data/db
|
- mountPath: /data/db
|
||||||
name: mongo-primary-ephermal-storage
|
name: mongo-datadir
|
||||||
volumes:
|
volumes:
|
||||||
- name: mongo-primary-ephermal-storage
|
- name: mongo-datadir
|
||||||
emptyDir: {}
|
hostPath:
|
||||||
|
path: ${mongo_volume}
|
||||||
|
- name: utility
|
||||||
|
emptyDir: {}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
name: MongoDB
|
name: MongoDB
|
||||||
version: 3.2-rancher1
|
version: 3.2-rancher1
|
||||||
description: MongoDB Replica Set
|
description: MongoDB Replica Set
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "sec_no"
|
- variable: "sec_no"
|
||||||
label: "Number of Secondary nodes"
|
label: "Number of Secondary nodes"
|
||||||
@ -9,3 +10,8 @@
|
|||||||
type: int
|
type: int
|
||||||
default: 2
|
default: 2
|
||||||
description: "should be even number"
|
description: "should be even number"
|
||||||
|
- variable: "mongo_volume"
|
||||||
|
label: "hostpath volume for mongodb"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
default: "/data/db"
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
description: "Prometheus Monitoring Solution"
|
description: "Prometheus Monitoring Solution"
|
||||||
uuid: prometheus-1
|
uuid: prometheus-1
|
||||||
minimum_rancher_version: v0.56.0
|
minimum_rancher_version: v0.56.0
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "cattle_config_url"
|
- variable: "cattle_config_url"
|
||||||
label: "Rancher Server URL"
|
label: "Rancher Server URL"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
name: "K8s Example Cassandra"
|
name: "K8s Example Cassandra"
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
description: ""
|
description: ""
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "NODE_COUNT"
|
- variable: "NODE_COUNT"
|
||||||
label: "Initial number of Cassandra nodes"
|
label: "Initial number of Cassandra nodes"
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
(Experimental) Cloud 9 SDK
|
(Experimental) Cloud 9 SDK
|
||||||
version: 3.0-k8s1
|
version: 3.0-k8s1
|
||||||
minimum_rancher_version: v1.0.0
|
minimum_rancher_version: v1.0.0
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
maintainer: "Raul Sanchez <rawmind@gmail.com>"
|
maintainer: "Raul Sanchez <rawmind@gmail.com>"
|
||||||
uuid: cloud9-0
|
uuid: cloud9-0
|
||||||
questions:
|
questions:
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
name: Ghost
|
name: Ghost
|
||||||
version: 0.7.8-rancher1
|
version: 0.7.8-rancher1
|
||||||
description: Open source publishing platform
|
description: Open source publishing platform
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "mysql_root_pass"
|
- variable: "mysql_root_pass"
|
||||||
label: "MySQL root password"
|
label: "MySQL root password"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
name: "K8s Guestbook"
|
name: "K8s Guestbook"
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
description: "It's a guestbook, I guess"
|
description: "It's a guestbook, I guess"
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "SERVICE_NAME"
|
- variable: "SERVICE_NAME"
|
||||||
label: "Service Name"
|
label: "Service Name"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
name: Heapster Grafana InfluxDB
|
name: Heapster Grafana InfluxDB
|
||||||
version: canary-rancher1
|
version: canary-rancher1
|
||||||
description: A cluster-wide aggregator of monitoring and event data.
|
description: A cluster-wide aggregator of monitoring and event data.
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "GRAFANA_PORT"
|
- variable: "GRAFANA_PORT"
|
||||||
label: "Node port for Grafana"
|
label: "Node port for Grafana"
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
description: |
|
description: |
|
||||||
(Experimental) Apache Kafka cluster.
|
(Experimental) Apache Kafka cluster.
|
||||||
minimum_rancher_version: v0.59.0
|
minimum_rancher_version: v0.59.0
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
maintainer: "Raul Sanchez <rawmind@gmail.com>"
|
maintainer: "Raul Sanchez <rawmind@gmail.com>"
|
||||||
uuid: kafka-0
|
uuid: kafka-0
|
||||||
questions:
|
questions:
|
||||||
|
33
kubernetes-templates/kafka/1/README.md
Normal file
33
kubernetes-templates/kafka/1/README.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Apache Kafka (Experimental)
|
||||||
|
|
||||||
|
### Info:
|
||||||
|
|
||||||
|
This template creates, scale in and scale out a multinodes kafka broker cluster on top of k8s. The configuration is generated with confd from k8s.
|
||||||
|
Cluster size are variable after deployment, and get reconfigured.
|
||||||
|
|
||||||
|
|
||||||
|
### Usage:
|
||||||
|
|
||||||
|
Select Apache Kafka from catalog.
|
||||||
|
|
||||||
|
Enter the number of nodes, mem and refresh interval for the kafka cluster.
|
||||||
|
|
||||||
|
Change the following kafka default parameters, if you need:
|
||||||
|
|
||||||
|
- kafka_name="kafka" # kafka k8s service and rc name.
|
||||||
|
- kafka_namespace="kafka" # kafka k8s namespace
|
||||||
|
- kafka_scale=3 # kafka scale to deploy.
|
||||||
|
- kafka_mem=512 # kafka broker memory.
|
||||||
|
- kafka_log_dir="/opt/kafka/logs" # Kafka log dir.
|
||||||
|
- kafka_log_retention="168" # kafka log retention.
|
||||||
|
- kafka_num_partitions="1" # Kafka partitions number
|
||||||
|
- kafka_delete_topics="false" # kafka delete topics
|
||||||
|
- kafka_pub_ip= < true | false > # Advertise public ip to zookeeper.
|
||||||
|
- zk_link="kafka-zk/zk" # zookeeper namespace/service to connect to.
|
||||||
|
|
||||||
|
Click deploy.
|
||||||
|
|
||||||
|
Kafka can now be accessed over the Rancher network.
|
||||||
|
|
||||||
|
Note: When you scale the cluster, zero downtime is not guaranteed..yet..
|
||||||
|
|
77
kubernetes-templates/kafka/1/kafka-rc.yml
Normal file
77
kubernetes-templates/kafka/1/kafka-rc.yml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ReplicationController
|
||||||
|
metadata:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
namespace: "${kafka_namespace}"
|
||||||
|
labels:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
spec:
|
||||||
|
replicas: ${kafka_scale}
|
||||||
|
selector:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: "broker-conf"
|
||||||
|
image: "rawmind/k8s-kafka:0.10.2.0-1"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: "/opt/tools"
|
||||||
|
name: "broker-conf"
|
||||||
|
ports:
|
||||||
|
imagePullPolicy: "IfNotPresent"
|
||||||
|
- name: "broker-volume"
|
||||||
|
image: "rawmind/alpine-volume:0.0.2-1"
|
||||||
|
env:
|
||||||
|
- name: SERVICE_UID
|
||||||
|
value: "10003"
|
||||||
|
- name: SERVICE_GID
|
||||||
|
value: "10003"
|
||||||
|
- name: SERVICE_VOLUME
|
||||||
|
value: "${kafka_log_dir}"
|
||||||
|
- name: KEEP_ALIVE
|
||||||
|
value: "1"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: "${kafka_log_dir}"
|
||||||
|
name: "broker-data"
|
||||||
|
ports:
|
||||||
|
imagePullPolicy: "IfNotPresent"
|
||||||
|
- name: "broker-service"
|
||||||
|
image: "rawmind/alpine-kafka:0.10.2.0-2"
|
||||||
|
env:
|
||||||
|
- name: JVMFLAGS
|
||||||
|
value: "-Xmx${kafka_mem}m -Xms${kafka_mem}m"
|
||||||
|
- name: CONFD_INTERVAL
|
||||||
|
value: "${kafka_interval}"
|
||||||
|
- name: KAFKA_ZK_SERVICE
|
||||||
|
value: "${zk_link}"
|
||||||
|
- name: KAFKA_DELETE_TOPICS
|
||||||
|
value: "${kafka_delete_topics}"
|
||||||
|
- name: KAFKA_LOG_DIRS
|
||||||
|
value: "${kafka_log_dir}"
|
||||||
|
- name: KAFKA_LOG_RETENTION_HOURS
|
||||||
|
value: "${kafka_log_retention}"
|
||||||
|
- name: KAFKA_NUM_PARTITIONS
|
||||||
|
value: "${kafka_num_partitions}"
|
||||||
|
- name: ADVERTISE_PUB_IP
|
||||||
|
value: "${kafka_pub_ip}"
|
||||||
|
- name: POD_NAMESPACE
|
||||||
|
value: "${kafka_namespace}"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: "${kafka_log_dir}"
|
||||||
|
name: "broker-data"
|
||||||
|
- mountPath: "/opt/tools"
|
||||||
|
name: "broker-conf"
|
||||||
|
ports:
|
||||||
|
- containerPort: 9092
|
||||||
|
name: "broker-client"
|
||||||
|
protocol: "TCP"
|
||||||
|
imagePullPolicy: "IfNotPresent"
|
||||||
|
restartPolicy: "Always"
|
||||||
|
volumes:
|
||||||
|
- name: "broker-data"
|
||||||
|
emptyDir: {}
|
||||||
|
- name: "broker-conf"
|
||||||
|
emptyDir: {}
|
15
kubernetes-templates/kafka/1/kafka-service.yml
Normal file
15
kubernetes-templates/kafka/1/kafka-service.yml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
labels:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 9092
|
||||||
|
targetPort: 9092
|
||||||
|
name: "broker-client"
|
||||||
|
protocol: "TCP"
|
||||||
|
selector:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
clusterIP: "None"
|
95
kubernetes-templates/kafka/1/rancher-compose.yml
Normal file
95
kubernetes-templates/kafka/1/rancher-compose.yml
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
.catalog:
|
||||||
|
name: Kafka
|
||||||
|
version: 0.10.2.0-k8s
|
||||||
|
description: |
|
||||||
|
(Experimental) Apache Kafka cluster.
|
||||||
|
minimum_rancher_version: v0.59.0
|
||||||
|
maintainer: "Raul Sanchez <rawmind@gmail.com>"
|
||||||
|
uuid: kafka-0
|
||||||
|
questions:
|
||||||
|
- variable: "kafka_name"
|
||||||
|
description: "Name of kafka rc and service."
|
||||||
|
label: "K8s rc name:"
|
||||||
|
required: true
|
||||||
|
default: "kafka"
|
||||||
|
type: "string"
|
||||||
|
- variable: "kafka_namespace"
|
||||||
|
description: "Name of kafka namespace."
|
||||||
|
label: "K8s namespace:"
|
||||||
|
required: true
|
||||||
|
default: "default"
|
||||||
|
type: "string"
|
||||||
|
- variable: "kafka_scale"
|
||||||
|
description: "Number of brokers nodes. Note: Recommended an odd number"
|
||||||
|
label: "Broker Nodes:"
|
||||||
|
required: true
|
||||||
|
default: 3
|
||||||
|
type: "int"
|
||||||
|
- variable: "kafka_mem"
|
||||||
|
description: "Amount of memory to config brokers."
|
||||||
|
label: "Broker Memory (mb):"
|
||||||
|
required: true
|
||||||
|
default: 1024
|
||||||
|
type: "string"
|
||||||
|
- variable: "kafka_log_dir"
|
||||||
|
description: "Broker volume to log data"
|
||||||
|
label: "Broker log volume:"
|
||||||
|
required: true
|
||||||
|
default: "/opt/kafka/logs"
|
||||||
|
type: "string"
|
||||||
|
- variable: "kafka_log_retention"
|
||||||
|
description: "Broker log retention in hours"
|
||||||
|
label: "Broker log retention (h):"
|
||||||
|
required: true
|
||||||
|
default: "168"
|
||||||
|
type: "int"
|
||||||
|
- variable: "kafka_num_partitions"
|
||||||
|
description: "Number of broker partitions"
|
||||||
|
label: "Broker partitions:"
|
||||||
|
required: true
|
||||||
|
default: "1"
|
||||||
|
type: "int"
|
||||||
|
- variable: "kafka_delete_topics"
|
||||||
|
label: "Kafka delete topics:"
|
||||||
|
description: |
|
||||||
|
Enable delete topics in kafka.
|
||||||
|
default: false
|
||||||
|
required: true
|
||||||
|
type: enum
|
||||||
|
options:
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- variable: "kafka_interval"
|
||||||
|
description: "Interval to poll/apply configuration changes. 0 to disable"
|
||||||
|
label: "Broker Interval (s):"
|
||||||
|
required: true
|
||||||
|
default: 60
|
||||||
|
type: "int"
|
||||||
|
- variable: "kafka_pub_ip"
|
||||||
|
description: "Advertise local and host public ip"
|
||||||
|
label: "Broker public ip:"
|
||||||
|
default: false
|
||||||
|
required: true
|
||||||
|
type: enum
|
||||||
|
options:
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- variable: "zk_link"
|
||||||
|
description: |
|
||||||
|
Choose the Zookeeper service to use.
|
||||||
|
It's really recommended a dedicated zookeeper service just for Kafka.
|
||||||
|
label: "Zookeeper stack/service"
|
||||||
|
default: "default/zookeeper"
|
||||||
|
required: true
|
||||||
|
type: "service"
|
||||||
|
broker:
|
||||||
|
scale: ${kafka_scale}
|
||||||
|
retain_ip: true
|
||||||
|
health_check:
|
||||||
|
port: 9092
|
||||||
|
interval: 5000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
request_line: ''
|
||||||
|
healthy_threshold: 2
|
||||||
|
response_timeout: 5000
|
||||||
|
|
33
kubernetes-templates/kafka/2/README.md
Normal file
33
kubernetes-templates/kafka/2/README.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Apache Kafka (Experimental)
|
||||||
|
|
||||||
|
### Info:
|
||||||
|
|
||||||
|
This template creates, scale in and scale out a multinodes kafka broker cluster on top of k8s. The configuration is generated with confd from k8s.
|
||||||
|
Cluster size are variable after deployment, and get reconfigured.
|
||||||
|
|
||||||
|
|
||||||
|
### Usage:
|
||||||
|
|
||||||
|
Select Apache Kafka from catalog.
|
||||||
|
|
||||||
|
Enter the number of nodes, mem and refresh interval for the kafka cluster.
|
||||||
|
|
||||||
|
Change the following kafka default parameters, if you need:
|
||||||
|
|
||||||
|
- kafka_name="kafka" # kafka k8s service and rc name.
|
||||||
|
- kafka_namespace="kafka" # kafka k8s namespace
|
||||||
|
- kafka_scale=3 # kafka scale to deploy.
|
||||||
|
- kafka_mem=512 # kafka broker memory.
|
||||||
|
- kafka_log_dir="/opt/kafka/logs" # Kafka log dir.
|
||||||
|
- kafka_log_retention="168" # kafka log retention.
|
||||||
|
- kafka_num_partitions="1" # Kafka partitions number
|
||||||
|
- kafka_delete_topics="false" # kafka delete topics
|
||||||
|
- kafka_pub_ip= < true | false > # Advertise public ip to zookeeper.
|
||||||
|
- zk_link="kafka-zk/zk" # zookeeper namespace/service to connect to.
|
||||||
|
|
||||||
|
Click deploy.
|
||||||
|
|
||||||
|
Kafka can now be accessed over the Rancher network.
|
||||||
|
|
||||||
|
Note: When you scale the cluster, zero downtime is not guaranteed..yet..
|
||||||
|
|
77
kubernetes-templates/kafka/2/kafka-rc.yml
Normal file
77
kubernetes-templates/kafka/2/kafka-rc.yml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ReplicationController
|
||||||
|
metadata:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
namespace: "${kafka_namespace}"
|
||||||
|
labels:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
spec:
|
||||||
|
replicas: ${kafka_scale}
|
||||||
|
selector:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: "broker-conf"
|
||||||
|
image: "rawmind/k8s-kafka:0.10.2.0-1"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: "/opt/tools"
|
||||||
|
name: "broker-conf"
|
||||||
|
ports:
|
||||||
|
imagePullPolicy: "IfNotPresent"
|
||||||
|
- name: "broker-volume"
|
||||||
|
image: "rawmind/alpine-volume:0.0.2-1"
|
||||||
|
env:
|
||||||
|
- name: SERVICE_UID
|
||||||
|
value: "10003"
|
||||||
|
- name: SERVICE_GID
|
||||||
|
value: "10003"
|
||||||
|
- name: SERVICE_VOLUME
|
||||||
|
value: "${kafka_log_dir}"
|
||||||
|
- name: KEEP_ALIVE
|
||||||
|
value: "1"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: "${kafka_log_dir}"
|
||||||
|
name: "broker-data"
|
||||||
|
ports:
|
||||||
|
imagePullPolicy: "IfNotPresent"
|
||||||
|
- name: "broker-service"
|
||||||
|
image: "rawmind/alpine-kafka:0.10.2.1"
|
||||||
|
env:
|
||||||
|
- name: JVMFLAGS
|
||||||
|
value: "-Xmx${kafka_mem}m -Xms${kafka_mem}m"
|
||||||
|
- name: CONFD_INTERVAL
|
||||||
|
value: "${kafka_interval}"
|
||||||
|
- name: KAFKA_ZK_SERVICE
|
||||||
|
value: "${zk_link}"
|
||||||
|
- name: KAFKA_DELETE_TOPICS
|
||||||
|
value: "${kafka_delete_topics}"
|
||||||
|
- name: KAFKA_LOG_DIRS
|
||||||
|
value: "${kafka_log_dir}"
|
||||||
|
- name: KAFKA_LOG_RETENTION_HOURS
|
||||||
|
value: "${kafka_log_retention}"
|
||||||
|
- name: KAFKA_NUM_PARTITIONS
|
||||||
|
value: "${kafka_num_partitions}"
|
||||||
|
- name: ADVERTISE_PUB_IP
|
||||||
|
value: "${kafka_pub_ip}"
|
||||||
|
- name: POD_NAMESPACE
|
||||||
|
value: "${kafka_namespace}"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: "${kafka_log_dir}"
|
||||||
|
name: "broker-data"
|
||||||
|
- mountPath: "/opt/tools"
|
||||||
|
name: "broker-conf"
|
||||||
|
ports:
|
||||||
|
- containerPort: 9092
|
||||||
|
name: "broker-client"
|
||||||
|
protocol: "TCP"
|
||||||
|
imagePullPolicy: "IfNotPresent"
|
||||||
|
restartPolicy: "Always"
|
||||||
|
volumes:
|
||||||
|
- name: "broker-data"
|
||||||
|
emptyDir: {}
|
||||||
|
- name: "broker-conf"
|
||||||
|
emptyDir: {}
|
15
kubernetes-templates/kafka/2/kafka-service.yml
Normal file
15
kubernetes-templates/kafka/2/kafka-service.yml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
labels:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 9092
|
||||||
|
targetPort: 9092
|
||||||
|
name: "broker-client"
|
||||||
|
protocol: "TCP"
|
||||||
|
selector:
|
||||||
|
name: "${kafka_name}"
|
||||||
|
clusterIP: "None"
|
95
kubernetes-templates/kafka/2/rancher-compose.yml
Normal file
95
kubernetes-templates/kafka/2/rancher-compose.yml
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
.catalog:
|
||||||
|
name: Kafka
|
||||||
|
version: 0.10.2.1-k8s
|
||||||
|
description: |
|
||||||
|
(Experimental) Apache Kafka cluster.
|
||||||
|
minimum_rancher_version: v0.59.0
|
||||||
|
maintainer: "Raul Sanchez <rawmind@gmail.com>"
|
||||||
|
uuid: kafka-0
|
||||||
|
questions:
|
||||||
|
- variable: "kafka_name"
|
||||||
|
description: "Name of kafka rc and service."
|
||||||
|
label: "K8s rc name:"
|
||||||
|
required: true
|
||||||
|
default: "kafka"
|
||||||
|
type: "string"
|
||||||
|
- variable: "kafka_namespace"
|
||||||
|
description: "Name of kafka namespace."
|
||||||
|
label: "K8s namespace:"
|
||||||
|
required: true
|
||||||
|
default: "default"
|
||||||
|
type: "string"
|
||||||
|
- variable: "kafka_scale"
|
||||||
|
description: "Number of brokers nodes. Note: Recommended an odd number"
|
||||||
|
label: "Broker Nodes:"
|
||||||
|
required: true
|
||||||
|
default: 3
|
||||||
|
type: "int"
|
||||||
|
- variable: "kafka_mem"
|
||||||
|
description: "Amount of memory to config brokers."
|
||||||
|
label: "Broker Memory (mb):"
|
||||||
|
required: true
|
||||||
|
default: 1024
|
||||||
|
type: "string"
|
||||||
|
- variable: "kafka_log_dir"
|
||||||
|
description: "Broker volume to log data"
|
||||||
|
label: "Broker log volume:"
|
||||||
|
required: true
|
||||||
|
default: "/opt/kafka/logs"
|
||||||
|
type: "string"
|
||||||
|
- variable: "kafka_log_retention"
|
||||||
|
description: "Broker log retention in hours"
|
||||||
|
label: "Broker log retention (h):"
|
||||||
|
required: true
|
||||||
|
default: "168"
|
||||||
|
type: "int"
|
||||||
|
- variable: "kafka_num_partitions"
|
||||||
|
description: "Number of broker partitions"
|
||||||
|
label: "Broker partitions:"
|
||||||
|
required: true
|
||||||
|
default: "1"
|
||||||
|
type: "int"
|
||||||
|
- variable: "kafka_delete_topics"
|
||||||
|
label: "Kafka delete topics:"
|
||||||
|
description: |
|
||||||
|
Enable delete topics in kafka.
|
||||||
|
default: false
|
||||||
|
required: true
|
||||||
|
type: enum
|
||||||
|
options:
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- variable: "kafka_interval"
|
||||||
|
description: "Interval to poll/apply configuration changes. 0 to disable"
|
||||||
|
label: "Broker Interval (s):"
|
||||||
|
required: true
|
||||||
|
default: 60
|
||||||
|
type: "int"
|
||||||
|
- variable: "kafka_pub_ip"
|
||||||
|
description: "Advertise local and host public ip"
|
||||||
|
label: "Broker public ip:"
|
||||||
|
default: false
|
||||||
|
required: true
|
||||||
|
type: enum
|
||||||
|
options:
|
||||||
|
- false
|
||||||
|
- true
|
||||||
|
- variable: "zk_link"
|
||||||
|
description: |
|
||||||
|
Choose the Zookeeper service to use.
|
||||||
|
It's really recommended a dedicated zookeeper service just for Kafka.
|
||||||
|
label: "Zookeeper stack/service"
|
||||||
|
default: "default/zookeeper"
|
||||||
|
required: true
|
||||||
|
type: "service"
|
||||||
|
broker:
|
||||||
|
scale: ${kafka_scale}
|
||||||
|
retain_ip: true
|
||||||
|
health_check:
|
||||||
|
port: 9092
|
||||||
|
interval: 5000
|
||||||
|
unhealthy_threshold: 3
|
||||||
|
request_line: ''
|
||||||
|
healthy_threshold: 2
|
||||||
|
response_timeout: 5000
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
name: Apache Kafka
|
name: Apache Kafka
|
||||||
description: |
|
description: |
|
||||||
(Experimental) Kafka cluster
|
(Experimental) Kafka cluster
|
||||||
version: 0.10.0.1-k8s
|
version: 0.10.2.1-k8s
|
||||||
category: Clustering
|
category: Clustering
|
||||||
maintainer: "Raul Sanchez <rawmind@gmail.com>"
|
maintainer: "Raul Sanchez <rawmind@gmail.com>"
|
||||||
minimum_rancher_version: v0.59.0
|
minimum_rancher_version: v0.59.0
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
re-assembling of raw materials. It may be an elaborate parody of the
|
re-assembling of raw materials. It may be an elaborate parody of the
|
||||||
Australian economy.
|
Australian economy.
|
||||||
maintainer: "Rancher"
|
maintainer: "Rancher"
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: REPLICAS
|
- variable: REPLICAS
|
||||||
default: 1
|
default: 1
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
name: RabbitMQ
|
name: RabbitMQ
|
||||||
version: 3.6.0-rancher1
|
version: 3.6.0-rancher1
|
||||||
description: A reliable, distributed messaging broker
|
description: A reliable, distributed messaging broker
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: REPLICAS
|
- variable: REPLICAS
|
||||||
default: 1
|
default: 1
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
name: Redis
|
name: Redis
|
||||||
version: 2.8.23-rancher1
|
version: 2.8.23-rancher1
|
||||||
description: A highly-available in-memory data structure store
|
description: A highly-available in-memory data structure store
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "REDIS_REPLICAS"
|
- variable: "REDIS_REPLICAS"
|
||||||
label: "Initial number of Redis nodes"
|
label: "Initial number of Redis nodes"
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
version: 0.1.0-rancher1
|
version: 0.1.0-rancher1
|
||||||
description: "Spark cluster"
|
description: "Spark cluster"
|
||||||
maintainer: "Rancher"
|
maintainer: "Rancher"
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "SPARK_WORKER_REPLICAS"
|
- variable: "SPARK_WORKER_REPLICAS"
|
||||||
type: "string"
|
type: "string"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
name: "Sysdig Cloud"
|
name: "Sysdig Cloud"
|
||||||
version: "0.1"
|
version: "0.1"
|
||||||
description: "Container-Native Application and Infrastructure Monitoring"
|
description: "Container-Native Application and Infrastructure Monitoring"
|
||||||
|
maximum_rancher_version: v1.3.99
|
||||||
questions:
|
questions:
|
||||||
- variable: "SDC_ACCESS_KEY"
|
- variable: "SDC_ACCESS_KEY"
|
||||||
label: "Sysdig Cloud access key"
|
label: "Sysdig Cloud access key"
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user