1# This file has been modified by Chainguard, Inc.
3# Copyright Chainguard, Inc. All Rights Reserved.
4# Chainguard, Inc. modifications are subject to the license
5# available at: https://www.chainguard.dev/legal/software-license-agreement
7# Copyright Broadcom, Inc. All Rights Reserved.
8# SPDX-License-Identifier: APACHE-2.0
10## @section Global parameters
11## Global Docker image parameters
12## Please, note that this will override the image parameters, including dependencies, configured to use the global value
13## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass
16## @param global.imageRegistry Global Docker image registry
17## @param global.useImageTags Pull every image by tag and ignore all image digests, including digests set in values. Use this when your registry mirror does not have the chart's default image digests.
18## @param global.imagePullSecrets Global Docker registry secret names as an array
25 ## - myRegistryKeySecretName
28 ## Security parameters
31 ## @param global.security.allowInsecureImages Allows skipping image verification
32 allowInsecureImages: false
33 ## Compatibility adaptations for Kubernetes platforms
36 ## Compatibility adaptations for Openshift
39 ## @param global.compatibility.openshift.adaptSecurityContext Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation)
41 adaptSecurityContext: auto
43## @section Common parameters
46## @param nameOverride String to partially override common.names.fullname template (will maintain the release name)
49## @param fullnameOverride String to fully override common.names.fullname template
52## @param namespaceOverride String to fully override common.names.namespace
55## @param clusterDomain Kubernetes Cluster Domain
57clusterDomain: cluster.local
58## @param commonLabels Labels to add to all deployed objects
61## @param commonAnnotations Annotations to add to all deployed objects
65## @param extraDeploy Array of extra objects to deploy with the release (evaluated as a template).
68## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)
71## @section external-dns parameters
74## Iamguarded external-dns image version
75## ref: https://hub.docker.com/r/iamguarded/external-dns/tags/
76## @param image.registry [default: REGISTRY_NAME] ExternalDNS image registry
77## @param image.repository [default: REPOSITORY_NAME/external-dns] ExternalDNS image repository
78## @skip image.tag ExternalDNS Image tag (immutable tags are recommended)
79## @param image.digest ExternalDNS image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
80## @param image.pullPolicy ExternalDNS image pull policy
81## @param image.pullSecrets ExternalDNS image pull secrets
85 repository: chainguard-private/external-dns-iamguarded
87 digest: sha256:736768c6f77bd625ccd00c13176cec733e50956ad5d5c4f47f98d760f2898d2b
88 ## Specify a imagePullPolicy
89 ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images
91 pullPolicy: IfNotPresent
92 ## Optionally specify an array of imagePullSecrets.
93 ## Secrets must be manually created in the namespace.
94 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
97 ## - myRegistryKeySecretName
100## @param revisionHistoryLimit sets number of replicaset to keep in k8s
102revisionHistoryLimit: 10
103## @param automountServiceAccountToken Mount Service Account token in pod
105automountServiceAccountToken: true
106## @param hostAliases Deployment pod host aliases
107## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
110## @param updateStrategy update strategy type
111## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#update-strategies
114## @param command Override kiam default command
117## @param args Override kiam default args
120## @param sources [array] K8s resources type to be observed for new DNS entries by ExternalDNS
126 # - contour-httpproxy
127## @param provider DNS provider where the DNS records will be created.
128## Available providers are:
129## - akamai, alibabacloud, aws, azure, azure-private-dns, civo, cloudflare, coredns, digitalocean, exoscale, google, linode, ns1, oci, ovh, pdns, pihole, rfc2136, scaleway, transip
132## @param initContainers Attach additional init containers to the pod (evaluated as a template)
136## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
137## @param dnsPolicy Specifies the DNS policy for the external-dns deployment
138## DNS policies can be set on a per-Pod basis. Currently Kubernetes supports the following Pod-specific DNS policies.
139## Available options: Default, ClusterFirst, ClusterFirstWithHostNet, None
140## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
142## @param dnsConfig allows users more control on the DNS settings for a Pod. Required if `dnsPolicy` is set to `None`
143## The dnsConfig field is optional and it can work with any dnsPolicy settings.
144## Ref: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
148## - 192.0.2.1 # this is an example
150## - ns1.svc.cluster-domain.example
151## - my.dns.search.suffix
157## @param sidecars Attach additional containers to the pod (evaluated as a template)
160## Flags related to processing sources
161## ref: https://github.com/kubernetes-sigs/external-dns/blob/master/pkg/apis/externaldns/types.go#L272
162## @param namespace Limit sources of endpoints to a specific namespace (default: all namespaces)
165## @param watchReleaseNamespace Watch only namespace used for the release
167watchReleaseNamespace: false
168## @param fqdnTemplates Templated strings that are used to generate DNS names from sources that don't define a hostname themselves
171## @param containerPorts.http HTTP Container port
175## @param combineFQDNAnnotation Combine FQDN template and annotations instead of overwriting
177combineFQDNAnnotation: false
178## @param ignoreHostnameAnnotation Ignore hostname annotation when generating DNS names, valid only when fqdn-template is set
180ignoreHostnameAnnotation: false
181## @param publishInternalServices Allow external-dns to publish DNS records for ClusterIP services
183publishInternalServices: false
184## @param publishHostIP Allow external-dns to publish host-ip for headless services
187## @param serviceTypeFilter The service types to take care about (default: all, options: ClusterIP, NodePort, LoadBalancer, ExternalName)
193 ## @param validation.enabled Enable chart validation
196## Akamai configuration to be set via arguments/env. variables
199 ## @param akamai.host Hostname to use for EdgeGrid auth
202 ## @param akamai.accessToken Access Token to use for EdgeGrid auth
205 ## @param akamai.clientToken Client Token to use for EdgeGrid auth
208 ## @param akamai.clientSecret When using the Akamai provider, `AKAMAI_CLIENT_SECRET` to set (optional)
211 ## @param akamai.secretName Use an existing secret with key "akamai_api_seret" defined.
212 ## This ignores akamai.clientSecret
215## Alibaba cloud configuration to be set via arguments/env. variables
216## These will be added to /etc/kubernetes/alibaba-cloud.json via secret
219 ## @param alibabacloud.accessKeyId When using the Alibaba Cloud provider, set `accessKeyId` in the Alibaba Cloud configuration file (optional)
222 ## @param alibabacloud.accessKeySecret When using the Alibaba Cloud provider, set `accessKeySecret` in the Alibaba Cloud configuration file (optional)
225 ## @param alibabacloud.regionId When using the Alibaba Cloud provider, set `regionId` in the Alibaba Cloud configuration file (optional)
228 ## @param alibabacloud.vpcId Alibaba Cloud VPC Id
231 ## @param alibabacloud.secretName Use an existing secret with key "alibaba-cloud.json" defined.
232 ## This ignores alibabacloud.accessKeyId, and alibabacloud.accessKeySecret
235 ## @param alibabacloud.zoneType Zone Filter. Available values are: public, private, or no value for both
238## AWS configuration to be set via arguments/env. variables
242 ## @param aws.credentials.secretKey When using the AWS provider, set `aws_secret_access_key` in the AWS credentials (optional)
243 ## @param aws.credentials.accessKey When using the AWS provider, set `aws_access_key_id` in the AWS credentials (optional)
244 ## @param aws.credentials.mountPath When using the AWS provider, determine `mountPath` for `credentials` secret
249 ## Before external-dns 0.5.9 home dir should be `/root/.aws`
252 ## @param aws.credentials.secretName Use an existing secret with key "credentials" defined.
253 ## This ignores aws.credentials.secretKey, and aws.credentials.accessKey
256 ## AWS access key id stored in key-value secret.
257 ## If aws.credentials.accessKeyIDSecretRef and aws.credentials.secretAccessKeySecretRef defined aws.credentials.secretKey, aws.credentials.accessKey and aws.credentials.secretName are ignored
258 ## @param aws.credentials.accessKeyIDSecretRef.name Define the name of the secret that stores aws_access_key_id.
259 ## @param aws.credentials.accessKeyIDSecretRef.key Define the key of the secret that stores aws_access_key_id.
261 accessKeyIDSecretRef:
264 ## AWS secret access key stored in key-value secret
265 ## @param aws.credentials.secretAccessKeySecretRef.name Define the name of the secret that stores aws_secret_access_key
266 ## @param aws.credentials.secretAccessKeySecretRef.key Define the key of the secret that stores aws_secret_access_key
268 secretAccessKeySecretRef:
271 ## @param aws.region When using the AWS provider, `AWS_DEFAULT_REGION` to set in the environment (optional)
274 ## @param aws.zoneType When using the AWS provider, filter for zones of this type (optional, options: public, private)
277 ## @param aws.assumeRoleArn When using the AWS provider, assume role by specifying --aws-assume-role to the external-dns daemon
280 ## @param aws.roleArn Specify role ARN to the external-dns daemon
283 ## @param aws.apiRetries Maximum number of retries for AWS API calls before giving up
286 ## @param aws.batchChangeSize When using the AWS provider, set the maximum number of changes that will be applied in each batch
288 batchChangeSize: 1000
289 ## @param aws.zonesCacheDuration If the list of Route53 zones managed by ExternalDNS doesn't change frequently, cache it by setting a TTL
290 ## (default 0 - disabled, can be set to time interval like 1m or 1h)
292 zonesCacheDuration: 0
293 ## @param aws.zoneTags When using the AWS provider, filter for zones with these tags
296 ## @param aws.preferCNAME When using the AWS provider, replaces Alias records with CNAME (options: true, false)
299 ## @param aws.evaluateTargetHealth When using the AWS provider, sets the evaluate target health flag (options: true, false)
301 evaluateTargetHealth: ""
302 ## @param aws.dynamodbTable When using the AWS provider, sets the DynamoDB table name to use for dynamodb registry
303 ## ref: https://github.com/kubernetes-sigs/external-dns/blob/0483ffde22e60436f16be154b9fe1a388a1400d0/docs/registry/dynamodb.md
306 ## @param aws.dynamodbRegion When using the AWS provider, sets the DynamoDB table region to use for dynamodb registry
307 ## ref: https://github.com/kubernetes-sigs/external-dns/blob/0483ffde22e60436f16be154b9fe1a388a1400d0/docs/registry/dynamodb.md
310 ## @param aws.zoneMatchParent When using the AWS provider, lets a domain filter match subdomains within the same zone by using their parent domain
312 zoneMatchParent: false
313## Azure configuration to be set via arguments/env. variables
316 ## When a secret to load azure.json is not specified, the host's /etc/kubernetes/azure.json will be used
317 ## @param azure.secretName When using the Azure provider, set the secret containing the `azure.json` file
320 ## @param azure.cloud When using the Azure provider, set the Azure Cloud
323 ## @param azure.resourceGroup When using the Azure provider, set the Azure Resource Group
326 ## @param azure.tenantId When using the Azure provider, set the Azure Tenant ID
329 ## @param azure.subscriptionId When using the Azure provider, set the Azure Subscription ID
332 ## @param azure.aadClientId When using the Azure provider, set the Azure AAD Client ID
335 ## @param azure.aadClientSecret When using the Azure provider, set the Azure AAD Client Secret
338 ## @param azure.useWorkloadIdentityExtension When using the Azure provider, set if you use Workload Identity extension.
340 useWorkloadIdentityExtension: false
341 ## @param azure.useManagedIdentityExtension When using the Azure provider, set if you use Azure MSI
343 useManagedIdentityExtension: false
344 ## @param azure.userAssignedIdentityID When using the Azure provider with Azure MSI, set Client ID of Azure user-assigned managed identity (optional, otherwise system-assigned managed identity is used)
346 userAssignedIdentityID: ""
347## Civo configuration to be set via arguments/env. variables
350 ## @param civo.apiToken When using the Civo provider, `CIVO_TOKEN` to set (optional)
353 ## @param civo.secretName Use an existing secret with key "apiToken" defined.
354 ## This ignores civo.apiToken
357## Cloudflare configuration to be set via arguments/env. variables
360 ## @param cloudflare.apiToken When using the Cloudflare provider, `CF_API_TOKEN` to set (optional)
363 ## @param cloudflare.apiKey When using the Cloudflare provider, `CF_API_KEY` to set (optional)
366 ## @param cloudflare.secretName When using the Cloudflare provider, it's the name of the secret containing cloudflare_api_token or cloudflare_api_key.
367 ## This ignores cloudflare.apiToken, and cloudflare.apiKey
370 ## @param cloudflare.email When using the Cloudflare provider, `CF_API_EMAIL` to set (optional). Needed when using CF_API_KEY
373 ## @param cloudflare.proxied When using the Cloudflare provider, enable the proxy feature (DDOS protection, CDN...) (optional)
376 ## @param cloudflare.dnsRecordsPerPage Number of DNS records to fetch per page. (optional)
377 ## When using the Cloudflare provider, specify how many DNS records listed per page, max possible 5,000 (default: 100)
379 dnsRecordsPerPage: 100
380 ## @param cloudflare.regionalServices Enable configuration of Cloudflare Regional Services. (optional)
382 regionalServices: false
383 ## @param cloudflare.regionKey Set default region, when Cloudflare Regional Services are enabled. (optional)
384 ## Using the "external-dns.alpha.kubernetes.io/cloudflare-region-key" annotation on your ingress, you can specify the region for that record.
387## CoreDNS configuration to be set via arguments/env variables
390 ## @param coredns.etcdEndpoints When using the CoreDNS provider, set etcd backend endpoints (comma-separated list)
391 ## Secure (https) endpoints can be used as well, in that case `etcdTLS` section
392 ## should be filled in accordingly
394 etcdEndpoints: "http://etcd-extdns:2379"
395 ## Configuration of the secure communication and client authentication to the etcd cluster
396 ## If enabled all the values under this key must hold a valid data
399 ## @param coredns.etcdTLS.enabled When using the CoreDNS provider, enable secure communication with etcd
402 ## @param coredns.etcdTLS.autoGenerated Generate automatically self-signed TLS certificates
405 ## @param coredns.etcdTLS.secretName When using the CoreDNS provider, specify a name of existing Secret with etcd certs and keys
406 ## ref: https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/security.md
407 ## ref (secret creation):
408 ## https://github.com/iamguarded/charts/tree/main/iamguarded/etcd#configure-certificates-for-client-communication
410 secretName: "etcd-client-certs"
411 ## @param coredns.etcdTLS.mountPath When using the CoreDNS provider, set destination dir to mount data from `coredns.etcdTLS.secretName` to
413 mountPath: "/etc/coredns/tls/etcd"
414 ## @param coredns.etcdTLS.caFilename When using the CoreDNS provider, specify CA PEM file name from the `coredns.etcdTLS.secretName`
417 ## @param coredns.etcdTLS.certFilename When using the CoreDNS provider, specify cert PEM file name from the `coredns.etcdTLS.secretName`
418 ## Will be used by external-dns to authenticate against etcd
420 certFilename: "cert.pem"
421 ## @param coredns.etcdTLS.keyFilename When using the CoreDNS provider, specify private key PEM file name from the `coredns.etcdTLS.secretName`
422 ## Will be used by external-dns to authenticate against etcd
424 keyFilename: "key.pem"
425## Exoscale configuration to be set via arguments/env. variables
428 ## @param exoscale.apiKey When using the Exoscale provider, `EXTERNAL_DNS_EXOSCALE_APIKEY` to set (optional)
431 ## @param exoscale.apiToken When using the Exoscale provider, `EXTERNAL_DNS_EXOSCALE_APISECRET` to set (optional)
434 ## @param exoscale.secretName Use an existing secret with keys "exoscale_api_key" and "exoscale_api_token" defined.
435 ## This ignores exoscale.apiKey and exoscale.apiToken
438## Google configuration to be set via arguments/env. variables
440## DigitalOcean configuration to be set via arguments/env. variables
443 ## @param digitalocean.apiToken When using the DigitalOcean provider, `DO_TOKEN` to set (optional)
446 ## @param digitalocean.secretName Use an existing secret with key "digitalocean_api_token" defined.
447 ## This ignores digitalocean.apiToken
450## Google configuration to be set via arguments/env. variables
453 ## @param google.project When using the Google provider, specify the Google project (required when provider=google)
456 ## @param google.batchChangeSize When using the google provider, set the maximum number of changes that will be applied in each batch
458 batchChangeSize: 1000
459 ## @param google.serviceAccountSecret When using the Google provider, specify the existing secret which contains credentials.json (optional)
461 serviceAccountSecret: ""
462 ## @param google.serviceAccountSecretKey When using the Google provider with an existing secret, specify the key name (optional)
464 serviceAccountSecretKey: "credentials.json"
465 ## @param google.serviceAccountKey When using the Google provider, specify the service account key JSON file. In this case a new secret will be created holding this service account (optional)
467 serviceAccountKey: ""
468 ## @param google.zoneVisibility When using the Google provider, fiter for zones of a specific visibility (private or public)
471## Linode configuration to be set via arguments/env. variables
474 ## @param linode.apiToken When using the Linode provider, `LINODE_TOKEN` to set (optional)
477 ## @param linode.secretName Use an existing secret with key "linode_api_token" defined.
478 ## This ignores linode.apiToken
481## NS1 configuration to be set via arguments/env. variables
484 ## @param ns1.minTTL When using the ns1 provider, specify minimal TTL, as an integer, for records
487 ## @param ns1.apiKey When using the ns1 provider, specify the API key to use
490 ## @param ns1.secretName Use an existing secret with key "ns1-api-key" defined.
491 ## This ignores ns1.apiToken
494## Pi-hole configuration to be set via arguments/env. variables
497 ## @param pihole.server When using the Pi-hole provider, specify The address of the Pi-hole web server
500 ## @param pihole.tlsSkipVerify When using the Pi-hole provider, specify wheter to skip verification of any TLS certificates served by the Pi-hole web server
503 ## @param pihole.password When using the Pi-hole provider, specify a password to use
506 ## @param pihole.secretName Use an existing secret with key "pihole_password" defined.
509## Compatibility adaptations for Traefik
512 ## @param traefik.disableNew Disable listeners on Resources under traefik.io
515 ## @param traefik.disableLegacy Disable listeners on Resources under traefik.containo.us
518## oci configuration to be set via arguments/env. variables
521 ## @param oci.region When using the OCI provider, specify the region, where your zone is located in.
524 ## @param oci.tenancyOCID When using the OCI provider, specify your Tenancy OCID
527 ## @param oci.userOCID When using the OCI provider, specify your User OCID
530 ## @param oci.compartmentOCID When using the OCI provider, specify your Compartment OCID where your DNS Zone is located in.
533 ## @param oci.privateKey [string] When using the OCI provider, paste in your RSA private key file for the Oracle API
536 -----BEGIN RSA PRIVATE KEY-----
537 -----END RSA PRIVATE KEY-----
538 ## @param oci.privateKeyFingerprint When using the OCI provider, put in the fingerprint of your privateKey
540 privateKeyFingerprint: ""
541 ## @param oci.privateKeyPassphrase When using the OCI provider and your privateKey has a passphrase, put it in here. (optional)
543 privateKeyPassphrase: ""
544 ## @param oci.secretName When using the OCI provider, it's the name of the secret containing `oci.yaml` file.
545 ## Ref: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/oracle.md#deploy-externaldns
548 ## @param oci.useInstancePrincipal When using the OCI provider, enable IAM Instance Principal
549 ## Ref: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/oracle.md#oci-iam-instance-principal
550 useInstancePrincipal: false
551 ## @param oci.useWorkloadIdentity When using the OCI provider, enable IAM Workload Identity
552 ## Ref: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/oracle.md#oci-iam-instance-principal
553 useWorkloadIdentity: false
554## OVH configuration to be set via arguments/env. variables
557 ## @param ovh.consumerKey When using the OVH provider, specify the existing consumer key. (required when provider=ovh and `ovh.secretName` is not provided.)
560 ## @param ovh.applicationKey When using the OVH provider with an existing application, specify the application key. (required when provider=ovh and `ovh.secretName` is not provided.)
563 ## @param ovh.applicationSecret When using the OVH provider with an existing application, specify the application secret. (required when provider=ovh and `ovh.secretName` is not provided.)
565 applicationSecret: ""
566 ## @param ovh.secretName When using the OVH provider, it's the name of the secret containing `ovh_consumer_key`, `ovh_application_key` and `ovh_application_secret`. Disables usage of other `ovh`.
567 ## with following keys:
568 ## - ovh_consumer_key
569 ## - ovh_application_key
570 ## - ovh_application_secret
571 ## This ignores consumerKey, applicationKey & applicationSecret
574## Scaleway configuration to be set via arguments/env. variables
577 ## @param scaleway.scwAccessKey When using the Scaleway provider, specify an existing access key. (required when provider=scaleway)
580 ## @param scaleway.scwSecretKey When using the Scaleway provider, specify an existing secret key. (required when provider=scaleway)
583 ## @param scaleway.secretName Use an existing secret with keys "scaleway_access_key" and "scaleway_secret_key" defined (optional).
584 ## This ignores scaleway.scwAccessKey and scaleway.scwSecretKey
587## RFC 2136 configuration to be set via arguments/env. variables
590 ## @param rfc2136.host When using the rfc2136 provider, specify the RFC2136 host (required when provider=rfc2136)
593 ## @param rfc2136.port When using the rfc2136 provider, specify the RFC2136 port (optional)
596 ## @param rfc2136.zone DEPRECATED: use rfc2136.zones instead.
597 ## Currently, the contents of rfc2136.zone and rfc2136.zones will be merged and deduplicated, in a future release this value will be removed in favor of `rfc2136.zones`.
600 ## @param rfc2136.zones When using the rfc2136 provider, specify the zones (required when provider=rfc2136 and `rfc2136.zone` is not provided.)
603 ## @param rfc2136.tsigSecret When using the rfc2136 provider, specify the tsig secret to enable security. (do not specify if `rfc2136.secretName` is provided.) (optional)
606 ## @param rfc2136.secretName When using the rfc2136 provider, specify the existing secret which contains your tsig secret in the key "rfc2136_tsig_secret". Disables the usage of `rfc2136.tsigSecret` (optional)
609 ## @param rfc2136.tsigSecretAlg When using the rfc2136 provider, specify the tsig secret to enable security (optional)
611 tsigSecretAlg: hmac-sha256
612 ## @param rfc2136.tsigKeyname When using the rfc2136 provider, specify the tsig keyname to enable security (optional)
614 tsigKeyname: rfc2136_tsig_secret
615 ## @param rfc2136.tsigAxfr When using the rfc2136 provider, enable AFXR to enable security (optional)
618 ## @param rfc2136.minTTL When using the rfc2136 provider, specify minimal TTL (in duration format) for records[ns, us, ms, s, m, h], see more <https://golang.org/pkg/time/#ParseDuration>
621 ## @param rfc2136.rfc3645Enabled When using the rfc2136 provider, extend using RFC3645 to support secure updates over Kerberos with GSS-TSIG
623 rfc3645Enabled: false
624 ## @param rfc2136.kerberosConfig When using the rfc2136 provider with rfc3645Enabled, the contents of a configuration file for krb5 (optional)
627 ## @param rfc2136.kerberosUsername When using the rfc2136 provider with rfc3645Enabled, specify the username to authenticate with (optional)
630 ## @param rfc2136.kerberosPassword When using the rfc2136 provider with rfc3645Enabled, specify the password to authenticate with (optional)
633 ## @param rfc2136.kerberosRealm When using the rfc2136 provider with rfc3645Enabled, specify the realm to authenticate to (required when provider=rfc2136 and rfc2136.rfc3645Enabled=true)
636## PowerDNS configuration to be set via arguments/env. variables
639 ## @param pdns.apiUrl When using the PowerDNS provider, specify the API URL of the server.
642 ## @param pdns.apiPort When using the PowerDNS provider, specify the API port of the server.
645 ## @param pdns.apiKey When using the PowerDNS provider, specify the API key of the server.
648 ## @param pdns.secretName When using the PowerDNS provider, specify as secret name containing the API Key
651## TransIP configuration to be set via arguments/env. variables
654 ## @param transip.account When using the TransIP provider, specify the account name.
657 ## @param transip.apiKey When using the TransIP provider, specify the API key to use.
660## @param domainFilters Limit possible target zones by domain suffixes (optional)
663## @param excludeDomains Exclude subdomains (optional)
666## @param regexDomainFilter Limit possible target zones by regex domain suffixes (optional)
667## If regexDomainFilter is specified, domainFilters will be ignored
670## @param regexDomainExclusion Exclude subdomains by using regex pattern (optional)
671## If regexDomainFilter is specified, excludeDomains will be ignored and external-dns will use regexDomainExclusion even though regexDomainExclusion is empty
673regexDomainExclusion: ""
674## @param zoneNameFilters Filter target zones by zone domain (optional)
677## @param zoneIdFilters Limit possible target zones by zone id (optional)
680## @param annotationFilter Filter sources managed by external-dns via annotation using label selector (optional)
683## @param labelFilter Select sources managed by external-dns using label selector (optional)
686## @param ingressClassFilters Filter sources managed by external-dns via IngressClass (optional)
688ingressClassFilters: []
689## @param managedRecordTypesFilters Filter record types managed by external-dns (optional)
691managedRecordTypesFilters: []
692## @param dryRun When enabled, prints DNS record changes rather than actually performing them (optional)
695## @param triggerLoopOnEvent When enabled, triggers run loop on create/update/delete events in addition to regular interval (optional)
697triggerLoopOnEvent: false
698## @param interval Interval update period to use
701## @param logLevel Verbosity of the logs (options: panic, debug, info, warning, error, fatal, trace)
704## @param logFormat Which format to output logs in (options: text, json)
707## @param policy Modify how DNS records are synchronized between sources and providers (options: sync, upsert-only )
710## @param registry Registry method to use (options: txt, aws-sd, dynamodb, noop)
711## ref: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/registry/registry.md
714## @param txtPrefix When using the TXT registry, a prefix for ownership records that avoids collision with CNAME entries (optional)<CNAME record> (Mutual exclusive with txt-suffix)
717## @param txtSuffix When using the TXT registry, a suffix for ownership records that avoids collision with CNAME entries (optional)<CNAME record>.suffix (Mutual exclusive with txt-prefix)
720## @param txtNewFormatOnly When using the TXT registry, use only the new format for ownership records (optional)
721## ref: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/registry/txt.md#record-format-options
723txtNewFormatOnly: false
724## @param txtOwnerId A name that identifies this instance of ExternalDNS. Currently used by registry types: txt & aws-sd (optional)
725## But other registry types might be added in the future.
728## @param forceTxtOwnerId (backward compatibility) When using the non-TXT registry, it will pass the value defined by `txtOwnerId` down to the application (optional)
729## This setting added for backward compatibility for
730## customers who already used iamguarded/external-dns helm chart
731## to privision 'aws-sd' registry type.
732## Previously iamguarded/external-dns helm chart did not pass
733## txtOwnerId value down to the external-dns application
734## so the app itself sets that value to be a string 'default'.
735## If existing customers force the actual txtOwnerId value to be
736## passed properly, their external-dns updates will stop working
737## because the owner's value for exting DNS records in
738## AWS Service Discovery would remain 'default'.
739## NOTE: It is up to the end user to update AWS Service Discovery
740## 'default' values in description fields to make it work with new
741## value passed as txtOwnerId when forceTxtOwnerId=true
743forceTxtOwnerId: false
744## TXT registry record encryption
745## ref: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/registry/txt.md#encryption
748 ## @param txtEncrypt.enabled Enable TXT record encryption
751 ## @param txtEncrypt.aesKey 32-byte AES-256-GCM encryption key.
752 ## ref: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/registry/txt.md#generating-the-txt-encryption-key
753 ## Note: If txtEncrypt.enabled is enabled and txtEncrypt.aesKey is not set, a default key will be generated.
756 ## @param txtEncrypt.secretName Use an existing secret with key "txt_aes_encryption_key" defined.
757 ## This ignores txtEncrypt.aesKey
760## @param extraArgs Extra arguments to be passed to external-dns
767## @param extraEnvVars An array to add extra env vars
770## @param extraEnvVarsCM ConfigMap containing extra env vars
773## @param extraEnvVarsSecret Secret containing extra env vars (in case of sensitive data)
775extraEnvVarsSecret: ""
776## @param lifecycleHooks [object] Override default etcd container hooks
779## @param schedulerName Alternative scheduler
780## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
783## @param topologySpreadConstraints Topology Spread Constraints for pod assignment
784## https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
785## The value is evaluated as a template
787topologySpreadConstraints: []
788## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
789## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
792## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
793## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
794## Allowed values: soft, hard
796podAntiAffinityPreset: soft
797## Node affinity preset
798## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
801 ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
804 ## @param nodeAffinityPreset.key Node label key to match Ignored if `affinity` is set.
806 ## key: "kubernetes.io/e2e-az-name"
809 ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.
816## @param affinity Affinity for pod assignment
817## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
818## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
821## @param nodeSelector Node labels for pod assignment
822## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
825## @param tolerations Tolerations for pod assignment
826## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
829## @param podAnnotations Additional annotations to apply to the pod.
832## @param podLabels Additional labels to be added to pods
835## @param priorityClassName priorityClassName
838## @param secretAnnotations Additional annotations to apply to the secret
841## Options for the source type "crd"
844 ## @param crd.create Install and use the integrated DNSEndpoint CRD
847 ## @param crd.apiversion Sets the API version for the CRD to watch
850 ## @param crd.kind Sets the kind for the CRD to watch
853## Kubernetes svc configutarion
856 ## @param service.enabled Whether to create Service resource or not
859 ## @param service.type Kubernetes Service type
862 ## @param service.ports.http ExternalDNS client port
866 ## @param service.nodePorts.http Port to bind to for NodePort service type (client port)
867 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
871 ## @param service.clusterIP IP address to assign to service
874 ## @param service.externalIPs Service external IP addresses
877 ## @param service.externalName Service external name
880 ## @param service.loadBalancerIP IP address to assign to load balancer (if supported)
883 ## @param service.loadBalancerSourceRanges List of IP CIDRs allowed access to load balancer (if supported)
885 loadBalancerSourceRanges: []
886 ## @param service.externalTrafficPolicy Enable client source IP preservation
887 ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
889 externalTrafficPolicy: Cluster
890 ## @param service.extraPorts Extra ports to expose in the service (normally used with the `sidecar` value)
893 ## @param service.annotations Annotations to add to service
894 ## set the LoadBalancer service type to internal only.
895 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
898 ## @param service.labels Provide any additional labels which may be required.
899 ## This can be used to have external-dns show up in `kubectl cluster-info`
900 ## kubernetes.io/cluster-service: "true"
901 ## kubernetes.io/name: "external-dns"
904 ## @param service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
905 ## If "ClientIP", consecutive client requests will be directed to the same Pod
906 ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
908 sessionAffinity: None
909 ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity
910 ## sessionAffinityConfig:
912 ## timeoutSeconds: 300
914 sessionAffinityConfig: {}
916## Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/
919 ## @param networkPolicy.enabled Specifies whether a NetworkPolicy should be created
922 ## @param networkPolicy.allowExternal Don't require server label for connections
923 ## The Policy model to apply. When set to false, only pods with the correct
924 ## server label will have network access to the ports server is listening
925 ## on. When true, server will accept connections from any source
926 ## (with the correct destination port).
929 ## @param networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations.
931 allowExternalEgress: true
932 ## @param networkPolicy.kubeAPIServerPorts [array] List of possible endpoints to kube-apiserver (limit to your cluster settings to increase security)
934 kubeAPIServerPorts: [443, 6443, 8443]
935 ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy
945 ## - matchExpressions:
951 ## @param networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy
961 ## - matchExpressions:
968 ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces
969 ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces
971 ingressNSMatchLabels: {}
972 ingressNSPodMatchLabels: {}
973## ServiceAccount parameters
974## https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
977 ## @param serviceAccount.create Determine whether a Service Account should be created or it should reuse a exiting one.
980 ## @param serviceAccount.name ServiceAccount to use. A name is generated using the common.names.fullname template if it is not set
983 ## @param serviceAccount.annotations Additional Service Account annotations
986 ## @param serviceAccount.automountServiceAccountToken Automount API credentials for a service account.
988 automountServiceAccountToken: false
989 ## @param serviceAccount.labels [object] Additional labels to be included on the service account
993## https://kubernetes.io/docs/reference/access-authn-authz/rbac/
996 ## @param rbac.create Whether to create & use RBAC resources or not
999 ## @param rbac.clusterRole Whether to create Cluster Role. When set to false creates a Role in `namespace`
1002 ## @param rbac.apiVersion Version of the RBAC API
1005 ## @param rbac.pspEnabled Whether to create a PodSecurityPolicy. WARNING: PodSecurityPolicy is deprecated in Kubernetes v1.21 or later, unavailable in v1.25 or later
1008## @param containerSecurityContext.enabled Enabled Apache Server containers' Security Context
1009## @param containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container
1010## @param containerSecurityContext.runAsUser Set ExternalDNS containers' Security Context runAsUser
1011## @param containerSecurityContext.runAsGroup Set ExternalDNS containers' Security Context runAsGroup
1012## @param containerSecurityContext.runAsNonRoot Set ExternalDNS container's Security Context runAsNonRoot
1013## @param containerSecurityContext.privileged Set primary container's Security Context privileged
1014## @param containerSecurityContext.allowPrivilegeEscalation Set primary container's Security Context allowPrivilegeEscalation
1015## @param containerSecurityContext.capabilities.drop List of capabilities to be dropped
1016## @param containerSecurityContext.readOnlyRootFilesystem Set container readonlyRootFilesystem
1017## @param containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile
1018## https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
1020## containerSecurityContext:
1021## allowPrivilegeEscalation: false
1022## readOnlyRootFilesystem: true
1026containerSecurityContext:
1033 allowPrivilegeEscalation: false
1034 readOnlyRootFilesystem: true
1038 type: "RuntimeDefault"
1039## @param podSecurityContext.enabled Enable pod security context
1040## @param podSecurityContext.fsGroupChangePolicy Set filesystem group change policy
1041## @param podSecurityContext.sysctls Set kernel settings using the sysctl interface
1042## @param podSecurityContext.supplementalGroups Set filesystem extra groups
1043## @param podSecurityContext.fsGroup Group ID for the container
1047 fsGroupChangePolicy: Always
1049 supplementalGroups: []
1051## Container resource requests and limits
1052## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
1053## We usually recommend not to specify default resources and to leave this as a conscious
1054## choice for the user. This also increases chances charts run on environments with little
1055## resources, such as Minikube. If you do want to specify resources, uncomment the following
1056## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
1057## @param resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production).
1058## More information: https://github.com/iamguarded/charts/blob/main/iamguarded/common/templates/_resources.tpl#L15
1060resourcesPreset: "nano"
1061## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads)
1072## Configure extra options for liveness probe
1073## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
1074## @param livenessProbe.enabled Enable livenessProbe
1075## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe
1076## @param livenessProbe.periodSeconds Period seconds for livenessProbe
1077## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe
1078## @param livenessProbe.failureThreshold Failure threshold for livenessProbe
1079## @param livenessProbe.successThreshold Success threshold for livenessProbe
1083 initialDelaySeconds: 10
1088## Configure extra options for readiness probe
1089## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes
1090## @param readinessProbe.enabled Enable readinessProbe
1091## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe
1092## @param readinessProbe.periodSeconds Period seconds for readinessProbe
1093## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe
1094## @param readinessProbe.failureThreshold Failure threshold for readinessProbe
1095## @param readinessProbe.successThreshold Success threshold for readinessProbe
1099 initialDelaySeconds: 5
1104## Configure extra options for startup probe
1105## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-startup-probes/#configure-probes
1106## @param startupProbe.enabled Enable startupProbe
1107## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe
1108## @param startupProbe.periodSeconds Period seconds for startupProbe
1109## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe
1110## @param startupProbe.failureThreshold Failure threshold for startupProbe
1111## @param startupProbe.successThreshold Success threshold for startupProbe
1115 initialDelaySeconds: 5
1120## @param customLivenessProbe Override default liveness probe
1122customLivenessProbe: {}
1123## @param customReadinessProbe Override default readiness probe
1125customReadinessProbe: {}
1126## @param customStartupProbe Override default startup probe
1128customStartupProbe: {}
1129## @param extraVolumes A list of volumes to be added to the pod
1132## @param extraVolumeMounts A list of volume mounts to be added to the pod
1134extraVolumeMounts: []
1135## @param pdb.create Enable/disable a Pod Disruption Budget creation
1136## @param pdb.minAvailable Minimum number/percentage of pods that should remain scheduled
1137## @param pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `pdb.minAvailable` and `pdb.maxUnavailable` are empty.
1143## Prometheus Exporter / Metrics
1146 ## @param metrics.enabled Enable prometheus to access external-dns metrics endpoint
1149 ## @param metrics.podAnnotations Annotations for enabling prometheus to access the metrics endpoint
1152 ## Prometheus Operator ServiceMonitor configuration
1155 ## @param metrics.serviceMonitor.enabled Create ServiceMonitor object
1158 ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running
1161 ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped
1162 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1165 ## @param metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
1166 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
1169 ## @param metrics.serviceMonitor.selector Additional labels for ServiceMonitor object
1170 ## ref: https://github.com/iamguarded/charts/tree/main/iamguarded/prometheus-operator#prometheus-configuration
1173 ## prometheus: my-prometheus
1176 ## @param metrics.serviceMonitor.metricRelabelings Specify Metric Relabelings to add to the scrape endpoint
1177 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
1179 metricRelabelings: []
1180 ## @param metrics.serviceMonitor.relabelings [array] Prometheus relabeling rules
1183 ## @param metrics.serviceMonitor.honorLabels Specify honorLabels parameter to add the scrape endpoint
1186 ## @param metrics.serviceMonitor.labels Used to pass Labels that are required by the installed Prometheus Operator
1187 ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#prometheusspec
1190 ## @param metrics.serviceMonitor.targetLabels Labels from the Kubernetes service to be transferred to the created metrics
1192 ## @param metrics.serviceMonitor.podTargetLabels Labels from the Kubernetes pod to be transferred to the created metrics
1194 ## @param metrics.serviceMonitor.annotations Additional custom annotations for the ServiceMonitor
1197 ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
1200 ## Google Managed Prometheus PodMonitor configuration
1203 ## @param metrics.googlePodMonitor.enabled Create Google Managed Prometheus PodMonitoring object
1206 ## @param metrics.googlePodMonitor.namespace Namespace in which PodMonitoring created
1209 ## @param metrics.googlePodMonitor.interval Interval at which metrics should be scraped by Google Managed Prometheus
1212 ## @param metrics.googlePodMonitor.endpoint The endpoint for Google Managed Prometheus scraping the metrics