DirectorySecurity AdvisoriesPricing
Sign in
Directory
coredns logoHELM

coredns

Helm chart
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
# Default values for coredns.
2
# This is a YAML-formatted file.
3
# Declare variables to be passed into your templates.
4
5
# EKS add-on compatibility settings, in the shape of AWS's own CoreDNS add-on.
6
# templates/_eks-addon-compat.tpl maps them onto this chart's settings, and they
7
# win when both are set. Unset, they render nothing.
8
# The whole Corefile; replaces the one built from servers and extraConfig.
9
corefile: ""
10
# enabled, minReplicas, maxReplicas, nodesPerReplica, and cpuCoresPerReplica
11
# set autoscaler.enabled, min, max, nodesPerReplica, and coresPerReplica.
12
autoScaling: {}
13
# Sets service.trafficDistribution.
14
trafficDistribution: ""
15
# Disabled or Auto; sets the service.kubernetes.io/topology-mode annotation.
16
annotationTopologyMode: ""
17
# podDisruptionBudget also takes AWS's enabled key: false removes the PDB, and
18
# true alone creates one with maxUnavailable: 1 (see podDisruptionBudget below).
19
20
image:
21
repository: cgr.dev/chainguard-private/coredns-fips
22
# Overrides the image tag whose default is the chart appVersion.
23
tag: 1.15.0-r1@sha256:57bbf8bf574dbff315cccf6a0e2cc91c57c014cbfda174e07d6fb8e32c9b2b71
24
pullPolicy: IfNotPresent
25
## Optionally specify an array of imagePullSecrets.
26
## Secrets must be manually created in the namespace.
27
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
28
##
29
pullSecrets: []
30
# pullSecrets:
31
# - name: myRegistryKeySecretName
32
replicaCount: 1
33
resources:
34
limits:
35
cpu: 100m
36
memory: 128Mi
37
requests:
38
cpu: 100m
39
memory: 128Mi
40
rollingUpdate:
41
maxUnavailable: 1
42
maxSurge: 25%
43
terminationGracePeriodSeconds: 30
44
podAnnotations: {}
45
# cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
46
47
podLabels: {}
48
serviceType: "ClusterIP"
49
prometheus:
50
service:
51
enabled: false
52
annotations:
53
prometheus.io/scrape: "true"
54
prometheus.io/port: "9153"
55
selector: {}
56
monitor:
57
enabled: false
58
additionalLabels: {}
59
namespace: ""
60
interval: ""
61
scrapeTimeout: ""
62
scheme: ""
63
honorLabels: false
64
tlsConfig: {}
65
relabelings: []
66
metricRelabelings: []
67
selector: {}
68
service:
69
# clusterIP: ""
70
# clusterIPs: []
71
# loadBalancerIP: ""
72
# loadBalancerClass: ""
73
# externalIPs: []
74
# externalTrafficPolicy: ""
75
# ipFamilies: []
76
# ipFamilyPolicy: ""
77
# trafficDistribution: PreferClose
78
# The name of the Service
79
# If not set, a name is generated using the fullname template
80
name: "kube-dns"
81
annotations: {}
82
# Pod selector
83
selector: {}
84
serviceAccount:
85
# Create a ServiceAccount for CoreDNS. The ClusterRole (list/watch on pods,
86
# services, endpoints, endpointslices and namespaces) is bound to this
87
# account; with create: false and no name it is bound to the namespace's
88
# "default" ServiceAccount, and so granted to every pod that runs as it.
89
create: true
90
# The name of the ServiceAccount to use
91
# If not set and create is true, a name is generated using the fullname template
92
name: ""
93
annotations: {}
94
rbac:
95
# If true, create & use RBAC resources
96
create: true
97
clusterRole:
98
# By default a name is generated using the fullname template.
99
# Override here if desired:
100
nameOverride: ""
101
# isClusterService specifies whether chart should be deployed as cluster-service or normal k8s app.
102
isClusterService: true
103
# Optional priority class to be used for the coredns pods. Used for autoscaler if autoscaler.priorityClassName not set.
104
priorityClassName: ""
105
# Configure the pod level securityContext.
106
podSecurityContext: {}
107
# Configure SecurityContext for the CoreDNS container.
108
# The defaults satisfy the `restricted` Pod Security Standard, so the chart
109
# installs into a namespace that enforces it.
110
# Ensure that required linux capability to bind port number below 1024 is assigned (`CAP_NET_BIND_SERVICE`).
111
# The CoreDNS image runs as the distroless `nonroot` user (uid/gid 65532) since
112
# 1.11.0. The numeric ids are set here because images before 1.14.7 declare the
113
# user by name, which the kubelet cannot verify when `runAsNonRoot` is true.
114
securityContext:
115
allowPrivilegeEscalation: false
116
capabilities:
117
add:
118
- NET_BIND_SERVICE
119
drop:
120
- ALL
121
readOnlyRootFilesystem: true
122
runAsNonRoot: true
123
runAsUser: 65532
124
runAsGroup: 65532
125
seccompProfile:
126
type: RuntimeDefault
127
# Default zone is what Kubernetes recommends:
128
# https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options
129
servers:
130
- zones:
131
- zone: .
132
use_tcp: true
133
port: 53
134
# -- expose the service on a different port
135
# servicePort: 5353
136
# If serviceType is nodePort you can specify nodePort here
137
# nodePort: 30053
138
# hostPort: 53
139
plugins:
140
- name: errors
141
# Serves a /health endpoint on :8080, required for livenessProbe
142
- name: health
143
configBlock: |-
144
lameduck 10s
145
# Serves a /ready endpoint on :8181, required for readinessProbe
146
- name: ready
147
# Required to query kubernetes API for data
148
- name: kubernetes
149
parameters: cluster.local in-addr.arpa ip6.arpa
150
configBlock: |-
151
pods insecure
152
fallthrough in-addr.arpa ip6.arpa
153
ttl 30
154
# Serves a /metrics endpoint on :9153, required for serviceMonitor
155
- name: prometheus
156
parameters: 0.0.0.0:9153
157
- name: forward
158
parameters: . /etc/resolv.conf
159
- name: cache
160
parameters: 30
161
- name: loop
162
- name: reload
163
- name: loadbalance
164
# Complete example with all the options:
165
# - zones: # the `zones` block can be left out entirely, defaults to "."
166
# - zone: hello.world. # optional, defaults to "."
167
# scheme: tls:// # optional, defaults to "" (which equals "dns://" in CoreDNS)
168
# - zone: foo.bar.
169
# scheme: dns://
170
# use_tcp: true # set this parameter to optionally expose the port on tcp as well as udp for the DNS protocol
171
# # Note that this will not work if you are also exposing tls or grpc on the same server
172
# port: 12345 # optional, defaults to "" (which equals 53 in CoreDNS)
173
# plugins: # the plugins to use for this server block
174
# - name: kubernetes # name of plugin, if used multiple times ensure that the plugin supports it!
175
# parameters: foo bar # list of parameters after the plugin
176
# configBlock: |- # if the plugin supports extra block style config, supply it here
177
# hello world
178
# foo bar
179
180
# Extra configuration that is applied outside of the default zone block.
181
# Example to include additional config files, which may come from extraVolumes:
182
# extraConfig:
183
# import:
184
# parameters: /opt/coredns/*.conf
185
extraConfig: {}
186
# To use the livenessProbe, the health plugin needs to be enabled in CoreDNS' server config
187
livenessProbe:
188
enabled: true
189
initialDelaySeconds: 60
190
periodSeconds: 10
191
timeoutSeconds: 5
192
failureThreshold: 5
193
successThreshold: 1
194
# To use the readinessProbe, the ready plugin needs to be enabled in CoreDNS' server config
195
readinessProbe:
196
enabled: true
197
initialDelaySeconds: 30
198
periodSeconds: 5
199
timeoutSeconds: 5
200
failureThreshold: 1
201
successThreshold: 1
202
# expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#affinity-v1-core
203
# for example:
204
# affinity:
205
# nodeAffinity:
206
# requiredDuringSchedulingIgnoredDuringExecution:
207
# nodeSelectorTerms:
208
# - matchExpressions:
209
# - key: foo.bar.com/role
210
# operator: In
211
# values:
212
# - master
213
affinity: {}
214
# expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#topologyspreadconstraint-v1-core
215
# and supports Helm templating.
216
# For example:
217
# topologySpreadConstraints:
218
# - labelSelector:
219
# matchLabels:
220
# app.kubernetes.io/name: '{{ template "coredns.name" . }}'
221
# app.kubernetes.io/instance: '{{ .Release.Name }}'
222
# topologyKey: topology.kubernetes.io/zone
223
# maxSkew: 1
224
# whenUnsatisfiable: ScheduleAnyway
225
# - labelSelector:
226
# matchLabels:
227
# app.kubernetes.io/name: '{{ template "coredns.name" . }}'
228
# app.kubernetes.io/instance: '{{ .Release.Name }}'
229
# topologyKey: kubernetes.io/hostname
230
# maxSkew: 1
231
# whenUnsatisfiable: ScheduleAnyway
232
topologySpreadConstraints: []
233
# Node labels for pod assignment
234
# Ref: https://kubernetes.io/docs/user-guide/node-selection/
235
nodeSelector: {}
236
# expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#toleration-v1-core
237
# for example:
238
# tolerations:
239
# - key: foo.bar.com/role
240
# operator: Equal
241
# value: master
242
# effect: NoSchedule
243
tolerations: []
244
# https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget
245
podDisruptionBudget: {}
246
# configure custom zone files as per https://coredns.io/2017/05/08/custom-dns-entries-for-kubernetes/
247
zoneFiles: []
248
# - filename: example.db
249
# domain: example.com
250
# contents: |
251
# example.com. IN SOA sns.dns.icann.com. noc.dns.icann.com. 2015082541 7200 3600 1209600 3600
252
# example.com. IN NS b.iana-servers.net.
253
# example.com. IN NS a.iana-servers.net.
254
# example.com. IN A 192.168.99.102
255
# *.example.com. IN A 192.168.99.102
256
257
# optional array of sidecar containers
258
extraContainers: []
259
# - name: some-container-name
260
# image: some-image:latest
261
# imagePullPolicy: Always
262
# optional array of extra volumes to create
263
extraVolumes: []
264
# - name: some-volume-name
265
# emptyDir: {}
266
# optional array of mount points for extraVolumes
267
extraVolumeMounts: []
268
# - name: some-volume-name
269
# mountPath: /etc/wherever
270
271
# optional array of secrets to mount inside coredns container
272
# possible usecase: need for secure connection with etcd backend
273
extraSecrets: []
274
# - name: etcd-client-certs
275
# mountPath: /etc/coredns/tls/etcd
276
# defaultMode: 420
277
# - name: some-fancy-secret
278
# mountPath: /etc/wherever
279
# defaultMode: 440
280
281
# optional array of environment variables for coredns container
282
# possible usecase: provides username and password for etcd user authentications
283
env: []
284
# - name: WHATEVER_ENV
285
# value: whatever
286
# - name: SOME_SECRET_ENV
287
# valueFrom:
288
# secretKeyRef:
289
# name: some-secret-name
290
# key: secret-key
291
292
# To support legacy deployments using CoreDNS with the "k8s-app: kube-dns" label selectors.
293
# See https://github.com/coredns/helm/blob/master/charts/coredns/README.md#adopting-existing-coredns-resources
294
# k8sAppLabelOverride: "kube-dns"
295
296
# Custom labels to apply to Deployment, Pod, Configmap, Service, ServiceMonitor.
297
# Also applied to the autoscaler when autoscaler.inheritCustomLabels is true.
298
customLabels: {}
299
# Custom annotations to apply to Deployment, Pod, Configmap, Service, ServiceMonitor. Including autoscaler if enabled.
300
customAnnotations: {}
301
## Alternative configuration for HPA deployment if wanted
302
## Create HorizontalPodAutoscaler object.
303
##
304
# hpa:
305
# enabled: false
306
# minReplicas: 1
307
# maxReplicas: 10
308
# metrics:
309
# metrics:
310
# - type: Resource
311
# resource:
312
# name: memory
313
# target:
314
# type: Utilization
315
# averageUtilization: 60
316
# - type: Resource
317
# resource:
318
# name: cpu
319
# target:
320
# type: Utilization
321
# averageUtilization: 60
322
hpa:
323
enabled: false
324
minReplicas: 1
325
maxReplicas: 2
326
metrics: []
327
## Configue a cluster-proportional-autoscaler for coredns
328
# See https://github.com/kubernetes-incubator/cluster-proportional-autoscaler
329
autoscaler:
330
# Enabled the cluster-proportional-autoscaler
331
enabled: false
332
# Number of autoscaler pods. null omits replicas (Kubernetes defaults to one).
333
# Multiple replicas run independent scaling loops without leader election.
334
replicaCount: null
335
# Optional PodDisruptionBudget for autoscaler pods, e.g. {maxUnavailable: 1}.
336
# Use multiple replicas to retain availability during voluntary disruptions.
337
podDisruptionBudget: {}
338
# Number of cores in the cluster per coredns replica
339
coresPerReplica: 256
340
# Number of nodes in the cluster per coredns replica
341
nodesPerReplica: 16
342
# Min size of replicaCount
343
min: 0
344
# Max size of replicaCount (default of 0 is no max)
345
max: 0
346
# Whether to include unschedulable nodes in the nodes/cores calculations - this requires version 1.8.0+ of the autoscaler
347
includeUnschedulableNodes: false
348
# If true does not allow single points of failure to form
349
preventSinglePointFailure: true
350
# Annotations for the coredns proportional autoscaler pods
351
podAnnotations: {}
352
# When true, top-level customLabels are also applied to the autoscaler Deployment/pods.
353
inheritCustomLabels: true
354
# Extra labels for the autoscaler Deployment and pods. Independent of customLabels
355
# when inheritCustomLabels is false.
356
customLabels: {}
357
# Extra labels applied only to autoscaler pods.
358
podLabels: {}
359
# Optional pod selector override for the autoscaler Deployment.
360
# If set, pod template labels must match this selector.
361
selector: {}
362
podSecurityContext: {}
363
securityContext:
364
allowPrivilegeEscalation: false
365
readOnlyRootFilesystem: true
366
privileged: false
367
## Optionally specify some extra flags to pass to cluster-proprtional-autoscaler.
368
## Useful for e.g. the nodelabels flag.
369
# customFlags:
370
# - --nodelabels=topology.kubernetes.io/zone=us-east-1a
371
image:
372
repository: cgr.dev/chainguard-private/cluster-proportional-autoscaler-fips
373
tag: 1.11.0-r7@sha256:d7b7e39d655bf9a583885eb668c9034b54e043340d805c40185f18c96a02bbfa
374
pullPolicy: IfNotPresent
375
## Optionally specify an array of imagePullSecrets.
376
## Secrets must be manually created in the namespace.
377
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
378
##
379
pullSecrets: []
380
# pullSecrets:
381
# - name: myRegistryKeySecretName
382
# Optional priority class to be used for the autoscaler pods. priorityClassName used if not set.
383
priorityClassName: ""
384
# expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#affinity-v1-core
385
affinity: {}
386
# Node labels for pod assignment
387
# Ref: https://kubernetes.io/docs/user-guide/node-selection/
388
nodeSelector: {}
389
# expects input structure as per specification https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#toleration-v1-core
390
tolerations: []
391
# resources for autoscaler pod
392
resources:
393
requests:
394
cpu: "20m"
395
memory: "10Mi"
396
limits:
397
cpu: "20m"
398
memory: "10Mi"
399
# Options for autoscaler configmap
400
configmap:
401
## Annotations for the coredns-autoscaler configmap
402
# i.e. strategy.spinnaker.io/versioned: "false" to ensure configmap isn't renamed
403
annotations: {}
404
# Enables the livenessProbe for cluster-proportional-autoscaler - this requires version 1.8.0+ of the autoscaler
405
livenessProbe:
406
enabled: true
407
initialDelaySeconds: 10
408
periodSeconds: 5
409
timeoutSeconds: 5
410
failureThreshold: 3
411
successThreshold: 1
412
# optional array of sidecar containers
413
extraContainers: []
414
# - name: some-container-name
415
# image: some-image:latest
416
# imagePullPolicy: Always
417
deployment:
418
skipConfig: false
419
enabled: true
420
name: ""
421
## Annotations for the coredns deployment
422
annotations: {}
423
## Pod selector
424
selector: {}
425
# dnsPolicy determines how DNS resolution is handled for the pod.
426
# When isClusterService is true, this defaults to "Default" to avoid circular DNS resolution.
427
# Options: Default, ClusterFirst, ClusterFirstWithHostNet, None
428
# If set to "None", you must provide dnsConfig.
429
dnsPolicy: "Default"
430
# dnsConfig allows fine-grained DNS configuration for the pod.
431
# Only used when dnsPolicy is set to "None" or when custom DNS settings are needed.
432
# Example:
433
# dnsConfig:
434
# nameservers:
435
# - 8.8.8.8
436
# searches:
437
# - my.dns.search.suffix
438
# options:
439
# - name: ndots
440
# value: "2"
441
dnsConfig: {}
442
# Configures initcontainers for the coredns deployment.
443
initContainers: []
444

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.