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

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.