Skip to content

Commit

Permalink
command line options and updated README
Browse files Browse the repository at this point in the history
  • Loading branch information
MartinWeindel committed Dec 10, 2024
1 parent fd06cdc commit 7bdab98
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 38 deletions.
43 changes: 13 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -406,31 +406,15 @@ and/or DNS zone identifiers to override the scanning results of the account.
### Owner Identifiers
Every DNS Provisioning Controller is responsible for a set of _Owner Identifiers_.
DNS records in an external DNS environment are attached to such an identifier.
This is used to identify the records in the DNS environment managed by a dedicated
controller (manager). Every controller manager hosting DNS Provisioning Controllers
offers an option to specify a default identifier. Additionally there might
be dedicated `DNSOwner` objects that enable or disable additional owner ids.
Every `DNSEntry` object may specify a dedicated owner that is used to tag
the records in the DNS environment. A DNS provisioning controller only acts
of DNS entries it is responsible for. Other resources in the external DNS
environment are not touched at all.
This way it is possbible to
- identify records in the external DNS management environment that are managed
by the actual controller instance
- distinguish different DNS source environments sharing the same hosted zones
in the external management environment
- cleanup unused entries, even if the whole resource set is already
gone
- move the responsibility for dedicated sets of DNS entries among different
kubernetes clusters or DNS source environments running different
DNS Provisioning Controller without loosing the entries during the
migration process.
**If multiple DNS controller instances have access to the same DNS zones, it is very important, that every instance uses a unique owner identifier! Otherwise the cleanup of stale DNS record will delete entries created by another instance if they use the same identifier.**
Starting with release `v0.23`, owner identifier are no longer supported.
Formerly, every DNS Provisioning Controller was responsible for a set of _Owner Identifiers_.
For every DNS record, there was an additional `TXT` DNS record ("metadata record") referencing the owner identifier.
It was decided to remove this feature, as it doubles the number of DNS records without adding
enough value.
In the release `v0.23`, it is still important to specify the `--identifier` option for the compound DNSq
Provisioning Controller and also to keep the `DNSOwner` resources as they are used to clean up the "metadata records".
In the future, the `DNSOwner` resources will be removed completely.
### DNS Classes
Expand Down Expand Up @@ -536,7 +520,8 @@ unique controller identity using the `--identifier` option.
This identifier is stored in the DNS system to identify the DNS entries
managed by a dedicated controller. There should never be two
DNS controllers with the same identifier running at the same time for the
same DNS domains/accounts.
same DNS domains/accounts. In release `v0.23`, the `--identifier` option is only used to
cleanup the "metadata records" created by the DNS Provisioning Controller.
Here is the complete list of options provided:
Expand Down Expand Up @@ -640,6 +625,7 @@ Flags:
--compound.infoblox-dns.ratelimiter.enabled enables rate limiter for DNS provider requests of controller compound
--compound.infoblox-dns.ratelimiter.qps int maximum requests/queries per second of controller compound
--compound.lock-status-check-period duration interval for dns lock status checks of controller compound
--compound.max-metadata-record-deletions-per-reconciliation int maximum number of metadata owner records that can be deleted per zone reconciliation of controller compound
--compound.netlify-dns.advanced.batch-size int batch size for change requests (currently only used for aws-route53) of controller compound
--compound.netlify-dns.advanced.max-retries int maximum number of retries to avoid paging stops on throttling (currently only used for aws-route53) of controller compound
--compound.netlify-dns.blocked-zone zone-id Blocks a zone given in the format zone-id from a provider as if the zone is not existing. of controller compound
Expand Down Expand Up @@ -680,7 +666,6 @@ Flags:
--compound.rfc2136.ratelimiter.qps int maximum requests/queries per second of controller compound
--compound.secrets.pool.size int Worker pool size for pool secrets of controller compound
--compound.setup int number of processors for controller setup of controller compound
--compound.statistic.pool.size int Worker pool size for pool statistic of controller compound
--compound.ttl int Default time-to-live for DNS entries. Defines how long the record is kept in cache by DNS servers or resolvers. of controller compound
--compound.zonepolicies.pool.size int Worker pool size for pool zonepolicies of controller compound
--config string config file
Expand Down Expand Up @@ -812,6 +797,7 @@ Flags:
--lock-status-check-period duration interval for dns lock status checks
-D, --log-level string logrus log level
--maintainer string maintainer key for crds (default "dns-controller-manager")
--max-metadata-record-deletions-per-reconciliation int maximum number of metadata owner records that can be deleted per zone reconciliation
--name string name used for controller manager (default "dns-controller-manager")
--namespace string namespace for lease (default "kube-system")
-n, --namespace-local-access-only enable access restriction for namespace local access only (deprecated)
Expand Down Expand Up @@ -884,7 +870,6 @@ Flags:
--service-dns.target-set-ignore-owners mark generated DNS entries to omit owner based access control of controller service-dns
--service-dns.targets.pool.size int Worker pool size for pool targets of controller service-dns
--setup int number of processors for controller setup
--statistic.pool.size int Worker pool size for pool statistic
--target string target cluster for dns requests
--target-creator-label-name string label name to store the creator for replicated DNS providers, label name to store the creator for generated DNS entries
--target-creator-label-value string label value for creator label
Expand Down Expand Up @@ -1178,8 +1163,6 @@ The Gardener DNS controller uses a custom resource DNSProvider to dynamically ma
A DNS provider can also restrict its actions on subset of the DNS domains (includes and excludes) for which the credentials are capable to edit.
Each provider can define a separate “owner” identifier, to differentiate DNS entries in the same DNS zone from different providers.
3. Multi cluster support
The Gardener DNS controller distinguish three different logical Kubernetes clusters: Source cluster, target cluster and runtime cluster. The source cluster is monitored by the DNS source controllers for annotations on ingress and service resources. These controllers then create DNS entries in the target cluster. DNS entries in the target cluster are then reconciliated/synchronized with the corresponding DNS backend service by the provider controller. The runtime cluster is the cluster the DNS controller runs on. For example, this enables needed flexibility in the Gardener deployment. The DNS controller runs on the seed cluster. This is also the target cluster. DNS providers and entries resources are created in the corresponding namespace of the shoot control plane, while the source cluster is the shoot cluster itself.
Expand Down
12 changes: 6 additions & 6 deletions charts/external-dns-management/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,9 @@ spec:
{{- if .Values.configuration.compoundLockStatusCheckPeriod }}
- --compound.lock-status-check-period={{ .Values.configuration.compoundLockStatusCheckPeriod }}
{{- end }}
{{- if .Values.configuration.compoundMaxMetadataRecordDeletionsPerReconciliation }}
- --compound.max-metadata-record-deletions-per-reconciliation={{ .Values.configuration.compoundMaxMetadataRecordDeletionsPerReconciliation }}
{{- end }}
{{- if .Values.configuration.compoundNetlifyDnsAdvancedBatchSize }}
- --compound.netlify-dns.advanced.batch-size={{ .Values.configuration.compoundNetlifyDnsAdvancedBatchSize }}
{{- end }}
Expand Down Expand Up @@ -420,9 +423,6 @@ spec:
{{- if .Values.configuration.compoundSetup }}
- --compound.setup={{ .Values.configuration.compoundSetup }}
{{- end }}
{{- if .Values.configuration.compoundStatisticPoolSize }}
- --compound.statistic.pool.size={{ .Values.configuration.compoundStatisticPoolSize }}
{{- end }}
{{- if .Values.configuration.compoundTtl }}
- --compound.ttl={{ .Values.configuration.compoundTtl }}
{{- end }}
Expand Down Expand Up @@ -801,6 +801,9 @@ spec:
{{- if .Values.configuration.maintainer }}
- --maintainer={{ .Values.configuration.maintainer }}
{{- end }}
{{- if .Values.configuration.maxMetadataRecordDeletionsPerReconciliation }}
- --max-metadata-record-deletions-per-reconciliation={{ .Values.configuration.maxMetadataRecordDeletionsPerReconciliation }}
{{- end }}
{{- if .Values.configuration.namespace }}
- --namespace={{ .Values.configuration.namespace }}
{{- end }}
Expand Down Expand Up @@ -975,9 +978,6 @@ spec:
{{- if .Values.configuration.setup }}
- --setup={{ .Values.configuration.setup }}
{{- end }}
{{- if .Values.configuration.statisticPoolSize }}
- --statistic.pool.size={{ .Values.configuration.statisticPoolSize }}
{{- end }}
{{- if .Values.configuration.target }}
- --target={{ .Values.configuration.target }}
{{- end }}
Expand Down
4 changes: 2 additions & 2 deletions charts/external-dns-management/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ configuration:
# compoundInfobloxDnsRatelimiterEnabled:
# compoundInfobloxDnsRatelimiterQps:
# compoundLockStatusCheckPeriod:
# compoundMaxMetadataRecordDeletionsPerReconciliation:
# compoundNetlifyDnsAdvancedBatchSize:
# compoundNetlifyDnsAdvancedMaxRetries:
# compoundNetlifyDnsRatelimiterBurst:
Expand Down Expand Up @@ -164,7 +165,6 @@ configuration:
# compoundRfc2136RatelimiterQps:
# compoundSecretsPoolSize: 2
# compoundSetup: 10
# compoundStatisticPoolSize:
# compoundTtl: 120
# compoundZonepoliciesPoolSize:
# config:
Expand Down Expand Up @@ -291,6 +291,7 @@ configuration:
# lockStatusCheckPeriod:
# logLevel: info
# maintainer:
# maxMetadataRecordDeletionsPerReconciliation:
# namespace: default
# namespaceLocalAccessOnly: false
# netlifyDnsAdvancedBatchSize:
Expand Down Expand Up @@ -350,7 +351,6 @@ configuration:
# serviceDNSTargetsPoolSize: 2
# servicesPoolSize:
# setup: 10
# statisticPoolSize:
# target: ""
# targetCreatorLabelName: ""
# targetCreatorLabelValue: ""
Expand Down
2 changes: 2 additions & 0 deletions examples/60-owner.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Please note that starting with release `v0.23` DNSOwner resources are only used to clean up metadata DNS records.
# The owner identifiers are not used for any other purpose anymore.
apiVersion: dns.gardener.cloud/v1alpha1
kind: DNSOwner
metadata:
Expand Down

0 comments on commit 7bdab98

Please sign in to comment.