Synchronize Traefik host rules with Cloudflare
50K+
Synchronize Traefik host rules and/or Kubernetes Ingresses with Cloudflare®.
Create a config file based on the example located at configs/config.yml.
syncflaer --config-path /opt/syncflaer.yml
Flags:
-c, --config-path string Path to config file (default "config.yml")
-d, --debug Enable debug mode
-v, --version Print the current version and exit
You can run SyncFlaer as a Kubernetes CronJob. For an example deployment, please refer to the files located at deployments/kubernetes.
SyncFlaer must be configured via a YAML config file. Some secrets can be configured using environment variables.
The full configuration file can be found at configs/config.yml.
You can configure SyncFlaer to gather host rules from multiple Traefik instances.
The configuration for two instances would look like this:
traefikInstances:
- name: instance1
url: https://traefik1.example.com
user: admin1
password: supersecure
customRequestHeaders:
X-Example-Header: instance1
ignoredRules:
- instance1.example.com
- name: instance2
url: https://traefik2.example.com
user: admin2
password: stillsupersecure
customRequestHeaders:
Authorization: env:TREAFIK_AUTH_HEADER
ignoredRules:
- instance2.example.com
Every instance can be configured to use different HTTP basic auth, custom request headers and ignored rules.
SyncFlaer can be configured to support Kubernetes Ingresses. By default, SyncFlaer will sync all Ingresses.
If you run SyncFlaer in a Kubernetes cluster, please refer to the deployments/kubernetes folder for an example deployment.
If you run SyncFlaer outside a Kubernetes cluster, you can use the KUBECONFIG environment variable to configure a specific kubeconfig file.
If the KUBECONFIG environment variable is not set, SyncFlaer will use the default kubeconfig file located at $HOME/.kube/config.
If you want to ignore specific Ingresses, use the annotation syncflaer.containeroo.ch/ignore=true.
To overwrite the default configuration for DNS records, you can specify the following annotations for each Ingress:
| Annotation | Example |
|---|---|
syncflaer.containeroo.ch/type | A or CNAME |
syncflaer.containeroo.ch/content | example.com |
syncflaer.containeroo.ch/proxied | true |
syncflaer.containeroo.ch/ttl | 120 |
Instead of putting secrets in the config file, SyncFlaer can grab secrets from environment variables.
You can define the names of the environment variables by using the env: prefix.
| Configuration | Example |
|---|---|
notifications.slack.webhookURL | env:SLACK_TOKEN |
password in traefikInstances | env:TRAEFIK_K8S_PW |
customRequestHeaders in traefikInstances | env:TRAEFIK_AUTH_HEADER |
cloudflare.apiToken | env:CF_API_TOKEN |
If not specified, the following defaults apply:
| Name | Default Value |
|---|---|
ipProviders | ["https://ifconfig.me/ip", "https://ipecho.net/plain", "https://myip.is/ip", "https://checkip.amazonaws.com", "https://api.ipify.org"] |
kubernetes.enabled | false |
managedRootRecord | true |
cloudflare.deleteGrace | 0 (delete records instantly) |
cloudflare.defaults.type | CNAME |
cloudflare.defaults.proxied | true |
cloudflare.defaults.ttl | 1 |
notifications.slack.username | SyncFlaer |
notifications.slack.iconURL | https://www.cloudflare.com/img/cf-facebook-card.png |
You can specify additional DNS records which are not configured as Traefik hosts.
| Key | Example | Default Value | Required |
|---|---|---|---|
name | a.example.com | none | yes |
type | A | cloudflare.defaults.type | no |
proxied | true | cloudflare.defaults.proxied | no |
ttl | 1 | cloudflare.defaults.ttl | no |
content | 1.1.1.1 | current public IP | no |
| Key | Example | Default Value | Required |
|---|---|---|---|
name | vpn.example.com | none | yes |
type | CNAME | cloudflare.defaults.type | no |
proxied | false | cloudflare.defaults.proxied | no |
ttl | 120 | cloudflare.defaults.ttl | no |
content | mysite.com | cloudflare.zoneName | no |
To create an API token visit https://dash.cloudflare.com/profile/api-tokens, click on Create token and select Get started.
Select the following settings:
Permissions:
Zone - DNS - EditZone Resources:
Include - All ZonesThe cloudflare.apiToken config is now required to be present in config file.
If you want to use environment variables for Slack webhook URL, Traefik HTTP basic auth password and Cloudflare API token, you have to use the env: prefix.
Everything after the env: part will be used as the name of the environment variable.
2022 containeroo
Cloudflare and the Cloudflare logo are registered trademarks owned by Cloudflare Inc. This project is not affiliated with Cloudflare®.
Content type
Image
Digest
sha256:be006eff9…
Size
21.5 MB
Last updated
over 3 years ago
docker pull containeroo/syncflaer