Skip to content

Commit

Permalink
chore(docs): Update README (#168)
Browse files Browse the repository at this point in the history
* update readme

* update readme

* update readme

* update readme

* update readme

* update license

* Trigger CI
  • Loading branch information
mircea-pavel-anton authored Jan 5, 2025
1 parent d6e3886 commit 69b82ce
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]
Copyright 2025 Mircea-Pavel ANTON

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
28 changes: 26 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,19 @@ For examples of creating DNS records either via CRDs or via Ingress/Service anno

## 🎯 Requirements

- ExternalDNS >= `v0.15.0`

> [!Note]
> `v0.15.0` of ExternalDNS added support for `providerSpecific` annotations in Ingress/Service objects for webhook providers.
>
> While older versions of ExternalDNS may work, support for this feature will not be present.
- ExternalDNS >= `v0.15.0`
- Mikrotik RouterOS (tested on `7.16`, `7.17` stable)
- Mikrotik RouterOS (tested on `7.16` stable)

> [!Note]
> While other versions of RouterOS **might** work, they have not been officially tested. If you are using this webhook successfully with a different ROS version, feel free to post a comment in mirceanton/external-dns-provider-mikrotik#141
>
> Thus far, we know for sure `7.16` works and `7.12` does not.
## 🚫 Limitations

Expand Down Expand Up @@ -48,6 +54,24 @@ spec:

The problem is that the External DNS controller will detect a drift on this and it will continuously attempt to update the DNS record, thus it will constantly send `PUT` requests to your RouterOS instance on every reconciliation loop.

### Regexp Records

While the webhook can read records with a regexp defined, external-dns itself cannot manage them. This means that they either need to be excluded via `domainFilters` or `excludeDomains` so that external-dns will not try to assume ownership over them.

The problem is that from Mikrotiks perspective, a DNS record can **either** have a `name` or a `regexp`. They are mutually exclusive.

This is problematic because, even though we can create an `Endpoint` with no name, external-dns will try to create a TXT record to keep track of the ownership over said record. If the main record has no name, it errors out creating the TXT record too, since the TXT record name is based on the name of the main record.

See mirceanton/external-dns-provider-mikrotik#166

### Multiple provider-specific annotations

In the case of multiple external-dns instances, each with a different provider (for example this one and the cloudflare one), there are problems with passing in annotations for provider-specific configuration. Due to a bug in the upstream external-dns, all annotations will be passed as provider-configuration.

This will cause the webhook to complain that invalid provider-specific configuration entries have been passed and error out. While this check can be removed, it will cause external-dns to continuously detect a drift between the Endpoint and the DNS records in RouterOS, thus attempting a new reconcile at every loop. This is also not desired.

See mirceanton/external-dns-provider-mikrotik#140 and kubernetes-sigs/external-dns#4951

## ⚙️ Configuration Options

### MikroTik Configuration
Expand Down

0 comments on commit 69b82ce

Please sign in to comment.