Linkerd can also be installed with a number of Add-On's, allowing users to get a great out of the box experience around popular service mesh use-cases. These Add-On's are coupled with the control plane installation and integrate well with Linkerd.
Add-On's in Linkerd are optional and configurable. A configuration file is passed
to the install operation (available both through Helm and CLI).
This config is also stored as a configmap called
allowing upgrades to work seamlessly
without having user to pass the config file again.
Configuration can be updated during upgrades.
You can find the list of add-ons present in the Linkerd2 Add-On's charts directory.
Now, Let us see the installation of the Tracing Add-On. In this demo, We
also enable the
control-plane-tracing flag which would,
make the control-plane components send traces to the collector.
Other Add-On's would also have a similar installation approach.
The following is the Add-On configuration file, that will be passed to installation. Here we configure the Tracing Add-On to be enabled, and also overwrite the trace collector's resources. If values are not overwritten, The default values will be used.
cat > config.yaml << EOF tracing: enabled: true collector: resources: cpu: limit: 100m request: 10m memory: limit: 100Mi request: 50Mi EOF
The same configuration file can be used both through the CLI and Helm.
Installation through CLI
linkerd CLI now supports a
addon-config flag, which is used to pass the confiugration
of add-ons. Now, the above configuration file can be passed as
# Install with control plane tracing enabled, and a add-on configuration file linkerd install --control-plane-tracing --addon-config ./config.yaml
Installation through Helm
First, You have to follow the usual process of installing Linkerd2 through Helm, . Only the final installation command is changed to include the add-on configuration.
Now, we pass the add-on configuration file to the helm install command.
# Install with control plane tracing enabled, and a add-on configuration file helm install \ --name=linkerd2 \ --set-file global.identityTrustAnchorsPEM=ca.crt \ --set-file identity.issuer.tls.crtPEM=issuer.crt \ --set-file identity.issuer.tls.keyPEM=issuer.key \ --set identity.issuer.crtExpiry=$exp \ --set global.controlPlaneTracing=true \ -f config.yaml \ linkerd-edge/linkerd2
First, you should also see two new components be installed
$ kubectl -n linkerd get deployments NAME READY UP-TO-DATE AVAILABLE AGE linkerd-collector 1/1 1 1 4m11s linkerd-controller 1/1 1 1 4m11s linkerd-destination 1/1 1 1 4m11s linkerd-grafana 1/1 1 1 4m11s linkerd-identity 1/1 1 1 4m11s linkerd-jaeger 1/1 1 1 4m11s linkerd-prometheus 1/1 1 1 4m11s linkerd-proxy-injector 1/1 1 1 4m11s linkerd-smi-metrics 1/1 1 1 4m11s linkerd-sp-validator 1/1 1 1 4m11s linkerd-tap 1/1 1 1 4m11s linkerd-web 1/1 1 1 4m11s
Now, The control-plane components traces, along with the linkerd-proxy traces are
sent to the
linkerd-collector, which are then sent to the
These Traces can be viewed in the jaeger UI by port-forwarding the service as
kubectl -n linkerd port-forward svc/linkerd-jaeger 16686:16686
Traces from the control-plane components can be viewed at