From 0eab88789c58863aeb0f211a58b299e40a598081 Mon Sep 17 00:00:00 2001 From: Andre Aguas Date: Tue, 5 Nov 2024 08:28:09 +0100 Subject: [PATCH 1/3] Add options to configure `labelFilter` and `managedRecordTypes` in Helm Chart By promoting this options to dedicated values they no longer have to be configured via `extraArgs` In the [K8GB project](https://github.com/k8gb-io/k8gb), a DNS based load balancer, we use external-dns as a chart dependency. We would like to configure all values specific to the controller in the default values of our Chart, and leave to the users the provider configuration. This provider configuration usually includes `extraArgs`. Since `extraArgs` is a list that would be overwritten we would like to keep it empty, otherwise users will have to copy paste our base configuration. --- charts/external-dns/CHANGELOG.md | 2 ++ charts/external-dns/README.md | 2 ++ charts/external-dns/templates/deployment.yaml | 6 ++++++ charts/external-dns/values.yaml | 6 ++++++ 4 files changed, 16 insertions(+) diff --git a/charts/external-dns/CHANGELOG.md b/charts/external-dns/CHANGELOG.md index 19863f493..a9c4c5d9f 100644 --- a/charts/external-dns/CHANGELOG.md +++ b/charts/external-dns/CHANGELOG.md @@ -20,6 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Added options to configure `labelFilter` and `managedRecordTypes` via dedicated helm values ([#4849](https://github.com/kubernetes-sigs/external-dns/pull/4849)) _@abaguas_ + - Ability to configure `imagePullSecrets` via helm `global` value ([#4667](https://github.com/kubernetes-sigs/external-dns/pull/4667)) _@jkroepke_ ## [v1.15.0] - 2023-09-10 diff --git a/charts/external-dns/README.md b/charts/external-dns/README.md index fd0d4e29b..048f43a13 100644 --- a/charts/external-dns/README.md +++ b/charts/external-dns/README.md @@ -112,9 +112,11 @@ If `namespaced` is set to `true`, please ensure that `sources` my only contains | imagePullSecrets | list | `[]` | Image pull secrets. | | initContainers | list | `[]` | [Init containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) to add to the `Pod` definition. | | interval | string | `"1m"` | Interval for DNS updates. | +| labelFilter | string | `nil` | | | livenessProbe | object | See _values.yaml_ | [Liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) configuration for the `external-dns` container. | | logFormat | string | `"text"` | Log format. | | logLevel | string | `"info"` | Log level. | +| managedRecordTypes | list | `[]` | | | nameOverride | string | `nil` | Override the name of the chart. | | namespaced | bool | `false` | if `true`, _ExternalDNS_ will run in a namespaced scope (`Role`` and `Rolebinding`` will be namespaced too). | | nodeSelector | object | `{}` | Node labels to match for `Pod` [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/). | diff --git a/charts/external-dns/templates/deployment.yaml b/charts/external-dns/templates/deployment.yaml index 8a097c338..89028b8a0 100644 --- a/charts/external-dns/templates/deployment.yaml +++ b/charts/external-dns/templates/deployment.yaml @@ -114,6 +114,12 @@ spec: {{- range .Values.excludeDomains }} - --exclude-domains={{ . }} {{- end }} + {{- if .Values.labelFilter }} + - --label-filter={{ .Values.labelFilter }} + {{- end }} + {{- range .Values.managedRecordTypes }} + - --managed-record-types={{ . }} + {{- end }} - --provider={{ $providerName }} {{- range .Values.extraArgs }} - {{ tpl . $ }} diff --git a/charts/external-dns/values.yaml b/charts/external-dns/values.yaml index d6daacf96..cd6708f11 100644 --- a/charts/external-dns/values.yaml +++ b/charts/external-dns/values.yaml @@ -229,6 +229,12 @@ domainFilters: [] ## -- Intentionally exclude domains from being managed. excludeDomains: [] +## -- (string) Filter resources queried for endpoints by label selector +labelFilter: + +## -- Record types to manage (default: A, AAAA, CNAME) +managedRecordTypes: [] + provider: # -- _ExternalDNS_ provider name; for the available providers and how to configure them see [README](https://github.com/kubernetes-sigs/external-dns/blob/master/charts/external-dns/README.md#providers). name: aws From c20fdea85dd6ad91d0a517a1ce9b782936ad564b Mon Sep 17 00:00:00 2001 From: Andre Aguas Date: Mon, 18 Nov 2024 22:26:09 +0100 Subject: [PATCH 2/3] update changelog & ci-values Signed-off-by: Andre Aguas --- charts/external-dns/CHANGELOG.md | 3 +-- charts/external-dns/ci/ci-values.yaml | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/charts/external-dns/CHANGELOG.md b/charts/external-dns/CHANGELOG.md index a9c4c5d9f..b8074e57a 100644 --- a/charts/external-dns/CHANGELOG.md +++ b/charts/external-dns/CHANGELOG.md @@ -20,9 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Added options to configure `labelFilter` and `managedRecordTypes` via dedicated helm values ([#4849](https://github.com/kubernetes-sigs/external-dns/pull/4849)) _@abaguas_ - - Ability to configure `imagePullSecrets` via helm `global` value ([#4667](https://github.com/kubernetes-sigs/external-dns/pull/4667)) _@jkroepke_ +- Added options to configure `labelFilter` and `managedRecordTypes` via dedicated helm values ([#4849](https://github.com/kubernetes-sigs/external-dns/pull/4849)) _@abaguas_ ## [v1.15.0] - 2023-09-10 diff --git a/charts/external-dns/ci/ci-values.yaml b/charts/external-dns/ci/ci-values.yaml index 4d278e94b..b53703c02 100644 --- a/charts/external-dns/ci/ci-values.yaml +++ b/charts/external-dns/ci/ci-values.yaml @@ -1,2 +1,4 @@ +labelFilter: +managedRecordTypes: [] provider: name: inmemory From 84ce7d9abe1c390c31ca84dc52bb8667c08b2db7 Mon Sep 17 00:00:00 2001 From: Andre Aguas Date: Wed, 20 Nov 2024 12:47:23 +0100 Subject: [PATCH 3/3] fix helm comment syntax & labelFilter for testing Signed-off-by: Andre Aguas --- charts/external-dns/README.md | 8 ++++---- charts/external-dns/ci/ci-values.yaml | 2 +- charts/external-dns/values.yaml | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/charts/external-dns/README.md b/charts/external-dns/README.md index 048f43a13..d88545c38 100644 --- a/charts/external-dns/README.md +++ b/charts/external-dns/README.md @@ -97,9 +97,9 @@ If `namespaced` is set to `true`, please ensure that `sources` my only contains | deploymentStrategy | object | `{"type":"Recreate"}` | [Deployment Strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy). | | dnsConfig | object | `nil` | [DNS config](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config) for the pod, if not set the default will be used. | | dnsPolicy | string | `nil` | [DNS policy](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy) for the pod, if not set the default will be used. | -| domainFilters | list | `[]` | | +| domainFilters | list | `[]` | Limit possible target zones by domain suffixes. | | env | list | `[]` | [Environment variables](https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/) for the `external-dns` container. | -| excludeDomains | list | `[]` | | +| excludeDomains | list | `[]` | Intentionally exclude domains from being managed. | | extraArgs | list | `[]` | Extra arguments to provide to _ExternalDNS_. | | extraContainers | object | `{}` | Extra containers to add to the `Deployment`. | | extraVolumeMounts | list | `[]` | Extra [volume mounts](https://kubernetes.io/docs/concepts/storage/volumes/) for the `external-dns` container. | @@ -112,11 +112,11 @@ If `namespaced` is set to `true`, please ensure that `sources` my only contains | imagePullSecrets | list | `[]` | Image pull secrets. | | initContainers | list | `[]` | [Init containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) to add to the `Pod` definition. | | interval | string | `"1m"` | Interval for DNS updates. | -| labelFilter | string | `nil` | | +| labelFilter | string | `nil` | Filter resources queried for endpoints by label selector | | livenessProbe | object | See _values.yaml_ | [Liveness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) configuration for the `external-dns` container. | | logFormat | string | `"text"` | Log format. | | logLevel | string | `"info"` | Log level. | -| managedRecordTypes | list | `[]` | | +| managedRecordTypes | list | `[]` | Record types to manage (default: A, AAAA, CNAME) | | nameOverride | string | `nil` | Override the name of the chart. | | namespaced | bool | `false` | if `true`, _ExternalDNS_ will run in a namespaced scope (`Role`` and `Rolebinding`` will be namespaced too). | | nodeSelector | object | `{}` | Node labels to match for `Pod` [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/). | diff --git a/charts/external-dns/ci/ci-values.yaml b/charts/external-dns/ci/ci-values.yaml index b53703c02..97a662641 100644 --- a/charts/external-dns/ci/ci-values.yaml +++ b/charts/external-dns/ci/ci-values.yaml @@ -1,4 +1,4 @@ -labelFilter: +labelFilter: foo=bar managedRecordTypes: [] provider: name: inmemory diff --git a/charts/external-dns/values.yaml b/charts/external-dns/values.yaml index cd6708f11..dc12cdd65 100644 --- a/charts/external-dns/values.yaml +++ b/charts/external-dns/values.yaml @@ -223,16 +223,16 @@ txtPrefix: # Mutually exclusive with `txtPrefix`. txtSuffix: -## - Limit possible target zones by domain suffixes. +# -- Limit possible target zones by domain suffixes. domainFilters: [] -## -- Intentionally exclude domains from being managed. +# -- Intentionally exclude domains from being managed. excludeDomains: [] -## -- (string) Filter resources queried for endpoints by label selector +# -- (string) Filter resources queried for endpoints by label selector labelFilter: -## -- Record types to manage (default: A, AAAA, CNAME) +# -- Record types to manage (default: A, AAAA, CNAME) managedRecordTypes: [] provider: