string
A string. While the YAML spec does not require strings to be quoted, it is highly recommended to quote strings to prevent YAML type coercion (e.g., values such as country: NO
are treated as country: false
by YAML).
Example:
key1: "value"
# or multi-line
key2: |
value
number
A number.
key1: 42
# or float
key2: 3.14
boolean
A true or false. While the YAML spec also treats keywords such as “yes” and “no” as true and false, respectively, it is highly recommended to use explicit true and false as the value for maintainability.
key1: true
object
A pair of key value.
key1:
subkey1: "string"
subkey2: 3.14
subkey3: true
# alternatively, using JSON syntax
key2: { "subkey1": "string", "subkey2": 3.14, "subkey3": true }
array of objects
An array of objects.
key1:
- name: "value1"
subkey: "value"
- name: "value2"
subkey: "value"
array of strings
An array of strings.
key1:
- "string1"
- "string2"
- "string3"
# alternatively, using JSON syntax
key1: ["string1", "string2", "string3"]
template string
A pair of key value as a string. Template functions exposed by Helm are available in this type.
key1: |
subkey1: {{ .Release.Name | quote }}
subkey2: "hello, world"
# in array of objects
key2: |
- name: {{ .Release.Name | quote }}
subkey1: "hello, world"
Overrides the name of the chart (without the release name). For example, setting nameOverride
to “hello” would produce a deployment named “release-name-hello”. Containers within a pod derive their name from this setting. By default, the name of the chart is used (i.e., “varnish-controller-router”)
Overrides the full name of the chart (with the release name). This setting allows overriding both release name and a deployment name altogether. For example, setting fullnameOverride
to “hello” would produce a deployment named “hello”. By default, a composition of a Helm release name and the name of the chart is used (i.e., “release-name-varnish-controller-router”).
Applies extra annotations to all workloads. The value can be set as either an object or a template string. Workload annotations can be used to for applying additional metadata or for integrating with external tooling. The annotations specified here will be applied to the workload itself.
To apply annotations on a Pod, use global.podAnnotations
. To apply annotations on a specific workload,
use router.annotations
, and powerdns.annotations
.
An array of object that conforms to Kubernetes’ imagePullSecrets definition. When set, each item in an array must consist of an object with a key name
referencing the Kubernetes a secret.
For example:
global:
imagePullSecrets:
- name: registry-quay-k7c2f4m2d5
Applies extra labels to all workloads. The value can be set as either an object or a template string. Workload labels can be used to for applying additional metadata or for integrating with external tooling. The labels specified here will be applied to the workload itself.
To apply labels on a Pod, use global.podLabels
. To apply labels on a specific workload,
use router.labels
, and powerdns.labels
.
Applies extra annotations to all Pods. The value can be set as either an object or a template string. Pod annotations can be used to for applying additional metadata or for integrating with external tooling. Annotations specified here will be applied to a Pod itself.
To apply labels on a workload, use global.annotations
. To apply labels on a specific Pod,
use router.podAnnotations
, and powerdns.podAnnotations
.
Applies extra labels to all Pods. The value can be set as either an object or a template string. Pod labels can be used to for applying additional metadata or for integrating with external tooling. Labels specified here will be applied to a Pod itself.
To apply labels on a workload, use global.labels
. To apply labels on a specific Pod,
use router.podLabels
, and powerdns.podLabels
.
An object that conforms to Kubernetes’ securityContext definition of a Pod.
For example:
global:
podSecurityContext:
fsGroup: 999
This securityContext will be set on all Pods within this chart. For setting securityContext on all containers, see global.securityContext
.
An object that conforms to the Kubernetes resources
definition of a Container. This configuration will resources constraint to all containers.
To specify resources on a single container, use router.resources
, and powerdns.resources
.
An object that conforms to Kubernetes’ securityContext definition of a Container.
For example:
global:
securityContext:
runAsUser: 999
runAsNonRoot: true
This securityContext will be set on all containers within this chart. For setting securityContext on the Pod itself, see global.podSecurityContext
.
An FQDN to the NATS server. The value is ignored if global.natsServer.internal.enabled
is set to true.
-
Configures Varnish Controller Router to use the internal NATS server. Set this to “-” to inherit the value of nats.enabled
. Note that when using a shared values file between Varnish Controller, Varnish Controller Router, and Varnish Enterprise, this value should be set to boolean.
Discovers the internal NATS server within the given namespace. By default, the current namespace is used.
Overrides the full name of the internal NATS server. Use the current release name if left blank.
cluster.local
Overrides the Kubernetes cluster domain. Required if Kubernetes cluster is configured to use different cluster domain than the default. By default, “cluster.local” is used. In most cases, this value should not be changed.
name: varnish-controller-router-credentials
key: nats-varnish-password
Sets internal NATS password from external secret. For example:
global:
natsServer:
internal:
passwordFrom:
name: secret-name
key: nats-password
Internal NATS must be configured separately by setting the following values:
nats:
container:
env:
VARNISH_CONTROLLER_NATS_PASSWORD:
valueFrom:
secretKeyRef:
name: secret-name
key: nats-password
true
Create a Kubernetes service account to use with the deployment.
Applies extra labels to the service account. The value can be set as either an object or a template string.
Applies extra annotations to the service account. The value can be set as either an object or a template string.
Overrides the name of the service account. By default, the full name of the chart is used.
true
Enables the Varnish Controller Router.
[]
Sets the extra arguments to the Varnish Controller Router.
Sets an additional environment variable for Varnish Controller Router container.
Can be set as an array of objects:
extraEnvs:
- name: MY_ENVIRONMENT_VARIABLE
value: my_value
Or an object:
extraEnvs:
MY_ENVIRONMENT_VARIABLE: my_value
Or a templated string:
extraEnvs: |
- name: MY_ENVIRONMENT_VARIABLE
value: my_value
1
Specifies the number of replicas to deploy Varnish Controller Router server. The value is ignored if router.autoscaling.enabled
is set to true.
Applies extra labels to the deployment. The value can be set as either an object or a template string. Labels specified here will be applied to the deployment itself. To apply labels on the Pod, use router.podLabels
.
Applies extra annotations to the deployment. The value can be set as either an object or a template string. Deployment annotations can be used to for applying additional metadata or for integrating with external tooling. Annotations specified here will be applied to the deployment itself. To apply labels on the Pod, use router.podAnnotations
.
Configures a deployment strategy to use to replace existing Pod with a new one
true
Enables an HTTP-based routing for Varnish Controller Router.
6081
Specifies a port for an HTTP routing endpoint.
false
Enables an [HTTPS-based routing][varnish-controller-router-https] for Varnish Controller Router.
6443
Specifies a port for an HTTPS routing endpoint.
false
Enables a management interface.
8092
Specifies a port for a management interface.
false
Whether to enable TLS for a management interface.
"-"
Enables a DNS-based routing for Varnish Controller Router. When set to “-”, a DNS-based routing will inherit the value of powerdns.enabled
. As Varnish Controller Router does not provide a DNS server on its own, a PowerDNS Authoritative Server setup is also required. See also powerdns.enabled
for internal PowerDNS Authoritative Server.
If an external PowerDNS Authoritative Server is used, it must be configured to forward DNS traffic to router.dnsService
.
8091
Specifies a port for a DNS backend.
false
An object for configuring HorizontalPodAutoscaling.
1
Sets the minimum number of replicas to always keep running.
100
Sets the maximum number of replicas to run at most.
Sets the HorizontalPodAutoscaling metrics. The value can be set as either an object or a template string.
quay.io/varnish-software/varnish-controller-router
Sets the repository for Varnish Controller Router image.
IfNotPresent
Sets the imagePullPolicy for the Varnish Controller Router image. This can be one of Always, Never, or IfNotPreset.
Sets the tag for the Varnish Controller Router image. By default, this is set to the same application version as in the Varnish Controller Helm Chart. If the tag is set to non-exact versions (such as “latest”), make sure to set router.image.pullPolicy
to “Always” to make sure the image is always updated.
"-"
Configures a HTTP Service to expose HTTP/HTTPS routing endpoints to the cluster or outside of the cluster. When this value is set to “-”, a HTTP service will be enabled based on the values of router.http.enabled
and router.https.enabled
.
Applies extra labels to the Service. The value can be set as either an object or a template string.
Applies extra annotations to the Service. The value can be set as either an object or a template string.
NodePort
Sets the type of the Service. Can be either CluterIP
, LoadBalancer
, or NodePort
.
Sets a custom Service ClusterIP. This value can be set as either an IP address, or a literal string “None”. Only applicable when router.httpService.type
is set to ClusterIP.
When set to “None”, Kubernetes will create a Headless Service, skipping Kubernetes’ proxying mechanism. Note that when Headless Service is used, router.httpService.*.port
will be ignored, as Kubernetes port mapping is skipped. The service will instead be accessible via router.http.port
and router.https.port
.
Sets a custom Load Balancer IP. Only applicable when router.service.type
is set to LoadBalancer.
"-"
Enables a HTTP Service for HTTP-based routing. When set to “-”, a HTTP Service for HTTP-based will inherit the value of router.http.enabled
.
80
Sets the port to expose HTTP Service for HTTP-based routing. Traffic to this port will be forwarded to router.http.port
within a Pod.
Sets the port to expose HTTP Service for HTTP-based routing directly on the node itself. Only applicable when router.service.type
is set to NodePort. This value must be within the Kubernetes service-node-port-range (default: 30000-32767).
"-"
Enables a HTTP Service for HTTPS-based routing. When set to “-”, a HTTP Service for HTTP-based will inherit the value of router.https.enabled
.
443
Sets the port to expose HTTP Service for HTTP-based routing. Traffic to this port will be forwarded to router.https.port
within a Pod.
Sets the port to expose HTTP Service for HTTP-based routing directly on the node itself. Only applicable when router.service.type
is set to NodePort. This value must be within the Kubernetes service-node-port-range (default: 30000-32767).
"-"
Configures a DNS Service to expose DNS-based routing backend to the cluster or outside of the cluster. When this value is set to “-”, a DNS service will be enabled based on the value of router.dns.enabled
.
Applies extra labels to the Service. The value can be set as either an object or a template string.
Applies extra annotations to the Service. The value can be set as either an object or a template string.
NodePort
Sets the type of the Service. Can be either CluterIP
, LoadBalancer
, or NodePort
.
Sets a custom Service ClusterIP. This value can be set as either an IP address, or a literal string “None”. Only applicable when router.dnsService.type
is set to ClusterIP.
When set to “None”, Kubernetes will create a Headless Service, skipping Kubernetes’ proxying mechanism. Note that when Headless Service is used, router.dnsService.port
will be ignored, as Kubernetes port mapping is skipped. The service will instead be accessible via router.dns.port
.
Sets a custom Load Balancer IP. Only applicable when router.service.type
is set to LoadBalancer.
8091
Sets the port to expose DNS Service for DNS-based routing backend. Traffic to this port will be forwarded to router.dns.port
within a Pod.
"-"
Configures a Management Service. When this value is set to “-”, a management service will be enabled based on the value of router.management.enabled
.
Applies extra labels to the Service. The value can be set as either an object or a template string.
Applies extra annotations to the Service. The value can be set as either an object or a template string.
NodePort
Sets the type of the Service. Can be either CluterIP
, LoadBalancer
, or NodePort
.
Sets a custom Service ClusterIP. This value can be set as either an IP address, or a literal string “None”. Only applicable when router.managementService.type
is set to ClusterIP.
When set to “None”, Kubernetes will create a Headless Service, skipping Kubernetes’ proxying mechanism. Note that when Headless Service is used, router.managementService.port
will be ignored, as Kubernetes port mapping is skipped. The service will instead be accessible via router.management.port
.
Sets a custom Load Balancer IP. Only applicable when router.service.type
is set to LoadBalancer.
8092
Sets the port to expose Management Service. Traffic to this port will be forwarded to router.management.port
within a Pod.
Applies extra annotations to the Pod. The value can be set as either an object or a template string. Pod annotations can be used to for applying additional metadata or for integrating with external tooling. Annotations specified here will be applied to the Pod. To apply labels on the deployment, use router.annotations
.
Applies extra labels to the Pod. The value can be set as either an object or a template string. Labels specified here will be applied to the Pod itself. To apply labels on the deployment, use router.labels
.
An object that conforms to Kubernetes’ securityContext definition of a Container.
For example:
router:
securityContext:
runAsUser: 999
This securityContext will be set on the Varnish Controller Router container. For setting securityContext on the Pod itself, see global.podSecurityContext
. For setting securityContext to all containers, see global.securityContext
.
Whether to make Varnish Controller Router keep an endpoint active after the Varnish Controller Agent has stopped, as long as it is still responding to the health check. Setting this to false
makes an endpoint disappear immediately once Varnish Controller Agent has stopped.
false
When router.replicas
is set to 1, use Helm Chart release name as Varnish Controller Router server name.
{}
An object that conforms to Kubernetes’ startupProbe definition of a Container.
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
An object that confirms to the Kubernetes readinessProbe definition of a Container.
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
An object that confirms to the Kubernetes livenessProbe definition of a Container.
An object that conforms to the Kubernetes resources definition of a Container. This configuration can be used to limit resources consumed by the Varnish Controller Router container.
An object that conforms to Kubernetes’ nodeSelector definition of a Pod. This configuration is used to select a node to schedule a Pod to. The value can be set as either an object or a template string.
An object that conforms to Kubernetes’ tolerations definition of a Pod. This configuration is used to allow the Pod to be scheduled to nodes with specific taints. The value can be set as either an array of strings or a template string.
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/name: {{ include "varnish-controller-router.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
topologyKey: kubernetes.io/hostname
This configuration is used to fine-grain control the scheduling of the Pod. By default, this is set to ensure all Varnish Controller Router Pods are always run in a different node. To disable this behavior, set to empty string (""). The value can be set as either an object or a template string.
false
Enables the PowerDNS Authoritative Server.
[]
Sets the extra arguments to the PowerDNS server.
Sets an additional environment variable for PowerDNS Authoritative Server container.
Can be set as an array of objects:
extraEnvs:
- name: MY_ENVIRONMENT_VARIABLE
value: my_value
Or an object:
extraEnvs:
MY_ENVIRONMENT_VARIABLE: my_value
Or a templated string:
extraEnvs: |
- name: MY_ENVIRONMENT_VARIABLE
value: my_value
Specifies the number of replicas to deploy PowerDNS Authoritative Server. The value is ignored if powerdns.autoscaling.enabled
is set to true.
Applies extra labels to the deployment. The value can be set as either an object or a template string. Labels specified here will be applied to the deployment itself. To apply labels on the Pod, use powerdns.podLabels
.
Applies extra annotations to the deployment. The value can be set as either an object or a template string. Deployment annotations can be used to for applying additional metadata or for integrating with external tooling. Annotations specified here will be applied to the deployment itself. To apply labels on the Pod, use powerdns.podAnnotations
.
Configures a deployment strategy to use to replace existing Pod with a new one
false
An object for configuring HorizontalPodAutoscaling.
1
Sets the minimum number of replicas to always keep running.
100
Sets the maximum number of replicas to run at most.
Sets the HorizontalPodAutoscaling metrics. The value can be set as either an object or a template string.
docker.io/powerdns/pdns-auth-45
Sets the repository for PowerDNS Authoritative Server image.
IfNotPresent
Sets the imagePullPolicy for the PowerDNS Authoritative Server image. This can be one of Always, Never, or IfNotPreset.
4.5.5
Sets the tag for the PowerDNS Authoritative Server image.
53
Specifies a port for a DNS service.
true
Configures a DNS Service to the cluster or outside of the cluster.
Applies extra labels to the Service. The value can be set as either an object or a template string.
Applies extra annotations to the Service. The value can be set as either an object or a template string.
NodePort
Sets the type of the Service. Can be either CluterIP
, LoadBalancer
, or NodePort
.
Sets a custom Service ClusterIP. This value can be set as either an IP address, or a literal string “None”. Only applicable when powerdns.service.type
is set to ClusterIP.
When set to “None”, Kubernetes will create a Headless Service, skipping Kubernetes’ proxying mechanism. Note that when Headless Service is used, powerdns.service.port
will be ignored, as Kubernetes port mapping is skipped. The service will instead be accessible via powerdns.dns.port
.
Sets a custom Load Balancer IP. Only applicable when powerdns.service.type
is set to LoadBalancer.
53
Sets the port to expose DNS Service. Traffic to this port will be forwarded to powerdns.dns.port
within a Pod.
Sets the port to expose DNS Service on the node itself. Only applicable when powerdns.service.type
is set to NodePort. This value must be within the Kubernetes service-node-port-range (default: 30000-32767).
Applies extra annotations to the Pod. The value can be set as either an object or a template string. Pod annotations can be used to for applying additional metadata or for integrating with external tooling. Annotations specified here will be applied to the Pod. To apply labels on the deployment, use powerdns.annotations
.
Applies extra labels to the Pod. The value can be set as either an object or a template string. Labels specified here will be applied to the Pod itself. To apply labels on the deployment, use powerdns.labels
.
An object that conforms to Kubernetes’ securityContext definition of a Container.
For example:
router:
securityContext:
runAsUser: 999
This securityContext will be set on the Varnish Controller Router container. For setting securityContext on the Pod itself, see global.podSecurityContext
. For setting securityContext to all containers, see global.securityContext
.
negqueryCacheTtl: 0
queryCacheTtl: 0
cacheTtl: 0
zoneCacheRefreshInterval: 0
loglevel: 4
logDnsQueries: true
queryLogging: true
maxTcpConnections: 20000
maxQueueLength: 50000
distributorThreads: 50
ednsSubnetProcessing: true
consistentBackends: true
A PowerDNS Authoritative Server configuration. All key names will be transformed to a kebab-case expected by PowerDNS Authoritative Server. For example, negqueryCacheTtl
will be transformed into negquery-cache-ttl
.
If not present, launch
will be set to remote
, and remoteConnectionString
will be set to the Varnish Controller Router’s DNS routing backend service. It is advised to not add these configuration keys to powerdns.config
.
An object that conforms to Kubernetes’ startupProbe definition of a Container.
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
An object that confirms to the Kubernetes readinessProbe definition of a Container.
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 3
An object that confirms to the Kubernetes livenessProbe definition of a Container.
An object that conforms to the Kubernetes resources definition of a Container. This configuration can be used to limit resources consumed by the PowerDNS Authoritative Server container.
An object that conforms to Kubernetes’ nodeSelector definition of a Pod. This configuration is used to select a node to schedule a Pod to. The value can be set as either an object or a template string.
An object that conforms to Kubernetes’ tolerations definition of a Pod. This configuration is used to allow the Pod to be scheduled to nodes with specific taints. The value can be set as either an array of strings or a template string.
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/name: {{ include "varnish-controller-router.name" . }}-powerdns
app.kubernetes.io/instance: {{ .Release.Name }}
topologyKey: kubernetes.io/hostname
This configuration is used to fine-grain control the scheduling of the Pod. By default, this is set to ensure all PowerDNS Authoritative Server Pods are always run in a different node. To disable this behavior, set to empty string (""). The value can be set as either an object or a template string.