BEL configuration reference

Use these values to configure BEL during installation and upgrade.

linkerd install --crds --set=key=value

Learn more about using these flags.

Chart name
linkerd-enterprise-crds
TypeDefault
boolfalse
TypeDefault
booltrue
linkerd install --set=key=value

Learn more about using these flags.

Chart name
linkerd-enterprise-control-plane

Buoyant Enterprise for Linkerd license. Obtain at https://enterprise.buoyant.io. Exactly one of license or licenseSecret must be set.

TypeDefault
stringnil

Name of the secret containing the Buoyant Enterprise for Linkerd license, at key license. Exactly one of license or licenseSecret must be set.

TypeDefault
stringnil
TypeDefault
string"ghcr.io/buoyantio/controller"
TypeDefault
string"edge-24.8.2"
TypeDefault
string"enterprise-2.16.0"
TypeDefault
string"ghcr.io/buoyantio/policy-controller"
TypeDefault
string"ghcr.io/buoyantio/proxy"
TypeDefault
string"ghcr.io/buoyantio/proxy-init"
TypeDefault
string"enterprise-2.16.0"
TypeDefault
boolfalse

Kubernetes DNS Domain name to use

TypeDefault
string"cluster.local"

The cluster networks for which service discovery is performed. This should include the pod and service networks, but need not include the node network. By default, all IPv4 private networks and all accepted IPv6 ULAs are specified so that resolution works in typical Kubernetes environments.

TypeDefault
string"10.0.0.0/8,100.64.0.0/10,172.16.0.0/12,192.168.0.0/16,fd00::/8"

enabling this omits the NET_ADMIN capability in the PSP and the proxy-init container when injecting the proxy; requires the linkerd-cni plugin to already be installed

TypeDefault
boolfalse

Labels to apply to all resources

TypeDefault
object{}

enables control plane tracing

TypeDefault
boolfalse

namespace to send control plane traces to

TypeDefault
string"linkerd-jaeger"

sets pod disruption budget parameter for all deployments

TypeDefault
object{"maxUnavailable":1}

Maximum number of pods that can be unavailable during disruption

TypeDefault
int1

Optional customisation of the group ID for the control plane components (the group ID will be omitted if lower than 0)

TypeDefault
int-1

Docker image for the destination and identity components

TypeDefault
string"cr.l5d.io/linkerd/controller"

Optionally allow a specific container image Tag (or SHA) to be specified for the controllerImage.

TypeDefault
string""

Log format for the control plane components

TypeDefault
string"plain"

Log level for the control plane components

TypeDefault
string"info"

Number of replicas for each control plane pod

TypeDefault
int1

User ID for the control plane components

TypeDefault
int2103

Docker image for the debug container

TypeDefault
string"cr.l5d.io/linkerd/debug"

Pull policy for the debug container image

TypeDefault
stringimagePullPolicy

Tag for the debug container image

TypeDefault
stringlinkerdVersion

default kubernetes deployment strategy

TypeDefault
object{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"}}
TypeDefault
int10
TypeDefault
int3
TypeDefault
booltrue

Set to true to not start the heartbeat cronjob

TypeDefault
boolfalse

disables routing IPv6 traffic in addition to IPv4 traffic through the proxy (IPv6 routing only available as of proxy-init v2.3.0 and linkerd-cni v1.4.0)

TypeDefault
booltrue

enables the use of EndpointSlice informers for the destination service; enableEndpointSlices should be set to true only if EndpointSlice K8s feature gate is on

TypeDefault
booltrue

Allow proxies to perform transparent HTTP/2 upgrading

TypeDefault
booltrue

Add a PSP resource and bind it to the control plane ServiceAccounts. Note PSP has been deprecated since k8s v1.21

TypeDefault
boolfalse

enables pod anti affinity creation on deployments for high availability

TypeDefault
boolfalse

enables the creation of pod disruption budgets for control plane components

TypeDefault
boolfalse

enables the use of pprof endpoints on control plane component’s admin servers

TypeDefault
boolfalse

If the linkerd-identity-trust-roots ConfigMap has already been created

TypeDefault
boolfalse

Amount of time to allow for clock skew within a Linkerd cluster

TypeDefault
string"20s"

Amount of time for which the Identity issuer should certify identity

TypeDefault
string"24h0m0s"
TypeDefault
string"linkerd.io/tls"

Which scheme is used for the identity issuer secret format

TypeDefault
object{"crtPEM":"","keyPEM":""}

Issuer certificate (ECDSA). It must be provided during install.

TypeDefault
string""

Key for the issuer certificate (ECDSA). It must be provided during install

TypeDefault
string""

Burst value over clientQPS

TypeDefault
int200

Maximum QPS sent to the kube-apiserver before throttling. See token bucket rate limiter implementation

TypeDefault
int100

Use Service Account token Volume projection for pod validation instead of the default token

TypeDefault
booltrue

Trust root certificate (ECDSA). It must be provided during install.

TypeDefault
string""

Trust domain used for identity

TypeDefault
stringclusterDomain

Docker image pull policy

TypeDefault
string"IfNotPresent"

For Private docker registries, authentication is needed. Registry secrets are applied to the respective service accounts

TypeDefault
list[]

Burst value over clientQPS

TypeDefault
int200

Maximum QPS sent to the kube-apiserver before throttling. See token bucket rate limiter implementation

TypeDefault
int100

control plane version. See Proxy section for proxy version

TypeDefault
string"linkerdVersionValue"

Address to which the network-validator will attempt to connect. This should be an IP that the cluster is expected to be able to reach but a port it should not, e.g., a public IP for public clusters and a private IP for air-gapped clusters with a port like 20001. If empty, defaults to 1.1.1.1:20001 and [fd00::1]:20001 for IPv4 and IPv6 respectively.

TypeDefault
string""

Include a securityContext in the network-validator pod spec

TypeDefault
booltrue

Address to which network-validator listens to requests from itself. If empty, defaults to 0.0.0.0:4140 and [::]:4140 for IPv4 and IPv6 respectively.

TypeDefault
string""

Log format (plain or json) for network-validator

TypeDefault
stringplain

Log level for the network-validator

TypeDefault
stringdebug

Timeout before network-validator fails to validate the pod’s network connectivity

TypeDefault
string"10s"

NodeSelector section, See the K8S documentation for more information

TypeDefault
object{"kubernetes.io/os":"linux"}

Additional annotations to add to all pods

TypeDefault
object{}

Additional labels to add to all pods

TypeDefault
object{}

Enables the creation of PodMonitor for the control-plane

TypeDefault
booltrue

Selector to select which namespaces the Endpoints objects are discovered from

TypeDefault
string"matchNames: - {{ .Release.Namespace }} - linkerd-viz - linkerd-jaeger "

Enables the creation of Prometheus Operator PodMonitor

TypeDefault
boolfalse

Labels to apply to all pod Monitors

TypeDefault
object{}

Enables the creation of PodMonitor for the data-plane

TypeDefault
booltrue

Interval at which metrics should be scraped

TypeDefault
string"10s"

Iimeout after which the scrape is ended

TypeDefault
string"10s"

Enables the creation of PodMonitor for the Service Mirror component

TypeDefault
booltrue

Docker image for the policy controller

TypeDefault
string"cr.l5d.io/linkerd/policy-controller"

Pull policy for the policy controller container image

TypeDefault
stringimagePullPolicy

Tag for the policy controller container image

TypeDefault
stringlinkerdVersion

Log level for the policy controller

TypeDefault
string"info"

The networks from which probes are performed. By default, all networks are allowed so that all probes are authorized.

TypeDefault
list["0.0.0.0/0","::/0"]

policy controller resource requests & limits

TypeDefault
object{"cpu":{"limit":"","request":""},"ephemeral-storage":{"limit":"","request":""},"memory":{"limit":"","request":""}}

Maximum amount of CPU units that the policy controller can use

TypeDefault
string""

Amount of CPU units that the policy controller requests

TypeDefault
string""

Maximum amount of ephemeral storage that the policy controller can use

TypeDefault
string""

Amount of ephemeral storage that the policy controller requests

TypeDefault
string""

Maximum amount of memory that the policy controller can use

TypeDefault
string""

Maximum amount of memory that the policy controller requests

TypeDefault
string""

Bundle of CA certificates for proxy injector. If not provided nor injected with cert-manager, then Helm will use the certificate generated for policyValidator.crtPEM. If policyValidator.externalSecret is set to true, this value, injectCaFrom, or injectCaFromSecret must be set, as no certificate will be generated. See the cert-manager CA Injector Docs for more information.

TypeDefault
string""

Certificate for the policy validator. If not provided and not using an external secret then Helm will generate one.

TypeDefault
string""

Do not create a secret resource for the policyValidator webhook. If this is set to true, the value policyValidator.caBundle must be set or the ca bundle must injected with cert-manager ca injector using policyValidator.injectCaFrom or policyValidator.injectCaFromSecret (see below).

TypeDefault
boolfalse

Inject the CA bundle from a cert-manager Certificate. See the cert-manager CA Injector Docs for more information.

TypeDefault
string""

Inject the CA bundle from a Secret. If set, the cert-manager.io/inject-ca-from-secret annotation will be added to the webhook. The Secret must have the CA Bundle stored in the ca.crt key and have the cert-manager.io/allow-direct-injection annotation set to true. See the cert-manager CA Injector Docs for more information.

TypeDefault
string""

Certificate key for the policy validator. If not provided and not using an external secret then Helm will generate one.

TypeDefault
string""

Namespace selector used by admission webhook

TypeDefault
object{"matchExpressions":[{"key":"config.linkerd.io/admission-webhooks","operator":"NotIn","values":["disabled"]}]}

Kubernetes priorityClassName for the Linkerd Pods

TypeDefault
string""

Bundle of CA certificates for proxy injector. If not provided nor injected with cert-manager, then Helm will use the certificate generated for profileValidator.crtPEM. If profileValidator.externalSecret is set to true, this value, injectCaFrom, or injectCaFromSecret must be set, as no certificate will be generated. See the cert-manager CA Injector Docs for more information.

TypeDefault
string""

Certificate for the service profile validator. If not provided and not using an external secret then Helm will generate one.

TypeDefault
string""

Do not create a secret resource for the profileValidator webhook. If this is set to true, the value proxyInjector.caBundle must be set or the ca bundle must injected with cert-manager ca injector using proxyInjector.injectCaFrom or proxyInjector.injectCaFromSecret (see below).

TypeDefault
boolfalse

Inject the CA bundle from a cert-manager Certificate. See the cert-manager CA Injector Docs for more information.

TypeDefault
string""

Inject the CA bundle from a Secret. If set, the cert-manager.io/inject-ca-from-secret annotation will be added to the webhook. The Secret must have the CA Bundle stored in the ca.crt key and have the cert-manager.io/allow-direct-injection annotation set to true. See the cert-manager CA Injector Docs for more information.

TypeDefault
string""

Certificate key for the service profile validator. If not provided and not using an external secret then Helm will generate one.

TypeDefault
string""

Namespace selector used by admission webhook

TypeDefault
object{"matchExpressions":[{"key":"config.linkerd.io/admission-webhooks","operator":"NotIn","values":["disabled"]}]}

url of external prometheus instance (used for the heartbeat)

TypeDefault
string""

If set, the application container will not start until the proxy is ready

TypeDefault
booltrue

The timeout between consecutive updates from the control plane.

TypeDefault
string"5m"

The timeout for the first update from the control plane.

TypeDefault
string"3s"

The maximum duration for a response stream (i.e. before it will be reinitialized).

TypeDefault
string"1h"

The cpu.limit and cores should be kept in sync. The value of cores must be an integer and should typically be set by rounding up from the limit. E.g. if cpu.limit is ‘1500m’, cores should be 2.

TypeDefault
int0

The default allow policy to use when no Server selects a pod. One of: “all-authenticated”, “all-unauthenticated”, “cluster-authenticated”, “cluster-unauthenticated”, “deny”, “audit”

TypeDefault
string"all-unauthenticated"

When set to true, disables the protocol detection timeout on the inbound side of the proxy by setting it to a very high value

TypeDefault
boolfalse

When set to true, disables the protocol detection timeout on the outbound side of the proxy by setting it to a very high value

TypeDefault
boolfalse

Enable service profiles for non-Kubernetes services

TypeDefault
boolfalse

Enables the proxy’s /shutdown admin endpoint

TypeDefault
boolfalse

Optional customisation of the group id under which the proxy runs (the group ID will be omitted if lower than 0)

TypeDefault
int-1

Docker image for the proxy

TypeDefault
string"cr.l5d.io/linkerd/proxy"

Pull policy for the proxy container image

TypeDefault
stringimagePullPolicy

Tag for the proxy container image

TypeDefault
stringlinkerdVersion

The interval at which PINGs are issued to remote HTTP/2 clients.

TypeDefault
string"10s"

The timeout within which keep-alive PINGs must be acknowledged on inbound HTTP/2 connections.

TypeDefault
string"3s"

Maximum time allowed for the proxy to establish an inbound TCP connection

TypeDefault
string"100ms"

Maximum time allowed before an unused inbound discovery result is evicted from the cache

TypeDefault
string"90s"

LivenessProbe timeout and delay configuration

TypeDefault
object{"initialDelaySeconds":10,"timeoutSeconds":1}

Log format (plain or json) for the proxy

TypeDefault
string"plain"

If set to off, will prevent the proxy from logging HTTP headers. If set to insecure, HTTP headers may be logged verbatim. Note that setting this to insecure is not alone sufficient to log HTTP headers; the proxy logLevel must also be set to debug.

TypeDefault
`off` or `insecure`"off"

Log level for the proxy

TypeDefault
string"warn,linkerd=info,hickory=error"

Enable KEP-753 native sidecars This is an experimental feature. It requires Kubernetes >= 1.29. If enabled, .proxy.waitBeforeExitSeconds should not be used.

TypeDefault
boolfalse

Default set of opaque ports - SMTP (25,587) server-first - MYSQL (3306) server-first - Galera (4444) server-first - PostgreSQL (5432) server-first - Redis (6379) server-first - ElasticSearch (9300) server-first - Memcached (11211) clients do not issue any preamble, which breaks detection

TypeDefault
string"25,587,3306,4444,5432,6379,9300,11211"

The interval at which PINGs are issued to local application HTTP/2 clients.

TypeDefault
string"10s"

The timeout within which keep-alive PINGs must be acknowledged on outbound HTTP/2 connections.

TypeDefault
string"3s"

Maximum time allowed for the proxy to establish an outbound TCP connection

TypeDefault
string"1000ms"

Maximum time allowed before an unused outbound discovery result is evicted from the cache

TypeDefault
string"5s"

Admin port for the proxy container

TypeDefault
int4191

Control port for the proxy container

TypeDefault
int4190

Inbound port for the proxy container

TypeDefault
int4143

Outbound port for the proxy container

TypeDefault
int4140

ReadinessProbe timeout and delay configuration

TypeDefault
object{"initialDelaySeconds":2,"timeoutSeconds":1}
TypeDefault
string""

Maximum amount of CPU units that the proxy can use

TypeDefault
string""

Amount of CPU units that the proxy requests

TypeDefault
string""

Maximum amount of ephemeral storage that the proxy can use

TypeDefault
string""

Amount of ephemeral storage that the proxy requests

TypeDefault
string""

Maximum amount of memory that the proxy can use

TypeDefault
string""

Maximum amount of memory that the proxy requests

TypeDefault
string""

Grace period for graceful proxy shutdowns. If this timeout elapses before all open connections have completed, the proxy will terminate forcefully, closing any remaining connections.

TypeDefault
string""
TypeDefault
int120
TypeDefault
int0
TypeDefault
int1

User id under which the proxy runs

TypeDefault
int2102

If set the injected proxy sidecars in the data plane will stay alive for at least the given period before receiving the SIGTERM signal from Kubernetes but no longer than the pod’s terminationGracePeriodSeconds. See Lifecycle hooks for more info on container lifecycle hooks.

TypeDefault
int0
TypeDefault
int0

Default set of inbound ports to skip via iptables - Galera (4567,4568)

TypeDefault
string"4567,4568"

Default set of outbound ports to skip via iptables - Galera (4567,4568)

TypeDefault
string"4567,4568"

Docker image for the proxy-init container

TypeDefault
string"cr.l5d.io/linkerd/proxy-init"

Pull policy for the proxy-init container image

TypeDefault
stringimagePullPolicy

Tag for the proxy-init container image

TypeDefault
string"v2.4.1"

Variant of iptables that will be used to configure routing. Currently, proxy-init can be run either in ’nft’ or in ’legacy’ mode. The mode will control which utility binary will be called. The host must support whichever mode will be used

TypeDefault
string"legacy"

Default set of ports to skip via iptables for control plane components so they can communicate with the Kubernetes API Server

TypeDefault
string"443,6443"

Log format (plain or json) for the proxy-init

TypeDefault
stringplain

Log level for the proxy-init

TypeDefault
stringinfo

Privileged mode allows the container processes to inherit all security capabilities and bypass any security limitations enforced by the kubelet. When used with ‘runAsRoot: true’, the container will behave exactly as if it was running as root on the host. May escape cgroup limits and see other processes and devices on the host.

TypeDefault
boolfalse

This value is used only if runAsRoot is false; otherwise runAsGroup will be 0

TypeDefault
int65534

Allow overriding the runAsNonRoot behaviour (https://github.com/linkerd/linkerd2/issues/7308)

TypeDefault
boolfalse

This value is used only if runAsRoot is false; otherwise runAsUser will be 0

TypeDefault
int65534

Comma-separated list of subnets in valid CIDR format that should be skipped by the proxy

TypeDefault
string""
TypeDefault
string"/run"
TypeDefault
string"linkerd-proxy-init-xtables-lock"

Bundle of CA certificates for proxy injector. If not provided nor injected with cert-manager, then Helm will use the certificate generated for proxyInjector.crtPEM. If proxyInjector.externalSecret is set to true, this value, injectCaFrom, or injectCaFromSecret must be set, as no certificate will be generated. See the cert-manager CA Injector Docs for more information.

TypeDefault
string""

Certificate for the proxy injector. If not provided and not using an external secret then Helm will generate one.

TypeDefault
string""

Do not create a secret resource for the proxyInjector webhook. If this is set to true, the value proxyInjector.caBundle must be set or the ca bundle must injected with cert-manager ca injector using proxyInjector.injectCaFrom or proxyInjector.injectCaFromSecret (see below).

TypeDefault
boolfalse

Inject the CA bundle from a cert-manager Certificate. See the cert-manager CA Injector Docs for more information.

TypeDefault
string""

Inject the CA bundle from a Secret. If set, the cert-manager.io/inject-ca-from-secret annotation will be added to the webhook. The Secret must have the CA Bundle stored in the ca.crt key and have the cert-manager.io/allow-direct-injection annotation set to true. See the cert-manager CA Injector Docs for more information.

TypeDefault
string""

Certificate key for the proxy injector. If not provided and not using an external secret then Helm will generate one.

TypeDefault
string""

Namespace selector used by admission webhook.

TypeDefault
object{"matchExpressions":[{"key":"config.linkerd.io/admission-webhooks","operator":"NotIn","values":["disabled"]},{"key":"kubernetes.io/metadata.name","operator":"NotIn","values":["kube-system","cert-manager"]}]}

Object selector used by admission webhook.

TypeDefault
object{"matchExpressions":[{"key":"linkerd.io/control-plane-component","operator":"DoesNotExist"},{"key":"linkerd.io/cni-resource","operator":"DoesNotExist"}]}

Timeout in seconds before the API Server cancels a request to the proxy injector. If timeout is exceeded, the webhookfailurePolicy is used.

TypeDefault
int10

Specifies the number of old ReplicaSets to retain to allow rollback.

TypeDefault
int10

Runtime Class Name for all the pods

TypeDefault
string""

Failure policy for the proxy injector

TypeDefault
string"Ignore"
linkerd multicluster install --set=key=value

Learn more about using these flags.

Chart name
linkerd-enterprise-multicluster
TypeDefault
string"enterprise-2.16.0"
TypeDefault
string"ghcr.io/buoyantio"
TypeDefault
string"enterprise-2.16.0"

Labels to apply to all resources

TypeDefault
object{}

Creates a Job that adds necessary metadata to the extension’s namespace during install; disable if lack of privileges require doing this manually

TypeDefault
booltrue

Create Roles and RoleBindings to associate this extension’s ServiceAccounts to the control plane PSP resource. This requires that enabledPSP is set to true on the control plane install. Note PSP has been deprecated since k8s v1.21

TypeDefault
boolfalse

Enables Pod Anti Affinity logic to balance the placement of replicas across hosts and zones for High Availability. Enable this only when you have multiple replicas of components.

TypeDefault
boolfalse

Group id under which the gateway shall be ran

TypeDefault
int2103

User id under which the gateway shall be ran

TypeDefault
int2103

Annotations to add to the gateway deployment

TypeDefault
object{}

If the gateway component should be installed

TypeDefault
booltrue

Set loadBalancerClass on gateway service

TypeDefault
string""

Set loadBalancerIP on gateway service

TypeDefault
string""

Set loadBalancerSourceRanges on gateway service

TypeDefault
list[]

The name of the gateway that will be installed

TypeDefault
string"linkerd-gateway"

Node selectors for the gateway pod

TypeDefault
object{}

The pause container to use

TypeDefault
string"gcr.io/google_containers/pause:3.2"

The port on which all the gateway will accept incoming traffic

TypeDefault
int4143

The path that will be used by remote clusters for determining whether the gateway is alive

TypeDefault
string"/ready"

The port used for liveliness probing

TypeDefault
int4191

The interval (in seconds) between liveness probes

TypeDefault
int3

Number of replicas for the gateway pod

TypeDefault
int1

Annotations to add to the gateway service

TypeDefault
object{}

Service Type of gateway Service

TypeDefault
string"LoadBalancer"

Set terminationGracePeriodSeconds on gateway deployment

TypeDefault
string""

Tolerations for the gateway pod

TypeDefault
list[]

Identity Trust Domain of the certificate authority

TypeDefault
string"cluster.local"

Docker imagePullPolicy for all multicluster components

TypeDefault
string"IfNotPresent"

For Private docker registries, authentication is needed. Registry secrets are applied to the respective service accounts

TypeDefault
list[]

Namespace of linkerd installation

TypeDefault
string"linkerd"

Control plane version

TypeDefault
string"linkerdVersionValue"

Docker image name for the namespace-metadata instance

TypeDefault
string"extension-init"

Pull policy for the namespace-metadata instance

TypeDefault
stringimagePullPolicy

Docker registry for the namespace-metadata instance

TypeDefault
string"cr.l5d.io/linkerd"

Docker image tag for the namespace-metadata instance

TypeDefault
string"v0.1.1"

Node selectors for the namespace-metadata instance

TypeDefault
object{}

Tolerations for the namespace-metadata instance

TypeDefault
list[]

Additional labels to add to all pods

TypeDefault
object{}

The port on which the proxy accepts outbound traffic

TypeDefault
int4140

If the remote mirror service account should be installed

TypeDefault
booltrue

The name of the service account used to allow remote clusters to mirror local services

TypeDefault
string"linkerd-service-mirror-remote-access-default"

Specifies the number of old ReplicaSets to retain to allow rollback.

TypeDefault
int10