Repository: linkerd/linkerd2
Pull request #14181 (2025-06-26 03:54:04)

build(deps): bump errno from 0.3.12 to 0.3.13
Bumps [errno](https://github.com/lambda-fairy/rust-errno) from 0.3.12 to 0.3.13.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/lambda-fairy/rust-errno/blob/main/CHANGELOG.md">errno's changelog</a>.</em></p>
<blockquote>
<h1>[0.3.13] - 2025-06-19</h1>
<ul>
<li>Update windows-sys requirement from &gt;=0.52, <!-- raw HTML omitted -->=0.52, &lt;=0.60
<a href="https://redirect.github.com/lambda-fairy/rust-errno/pull/113">#113</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/lambda-fairy/rust-errno/commit/d09eaa4b54e610a4bc2e2ad9f46b11e37e0b8e60"><code>d09eaa4</code></a> Release 0.3.13. (<a href="https://redirect.github.com/lambda-fairy/rust-errno/issues/114">#114</a>)</li>
<li><a href="https://github.com/lambda-fairy/rust-errno/commit/9ec212e7e885199a5f20012b54d321c98cf2cdd0"><code>9ec212e</code></a> Update windows-sys requirement from &gt;=0.52, &lt;=0.59 to &gt;=0.52, &lt;=0.60 (<a href="https://redirect.github.com/lambda-fairy/rust-errno/issues/113">#113</a>)</li>
<li>See full diff in <a href="https://github.com/lambda-fairy/rust-errno/compare/v0.3.12...v0.3.13">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=errno&package-manager=cargo&previous-version=0.3.12&new-version=0.3.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>


Patch:
diff --git a/.proxy-version b/.proxy-version
index b77a31a9f..01c30f910 100644
--- a/.proxy-version
+++ b/.proxy-version
@@ -1,1 +1,1 @@
-v2.303.0
+v2.304.0
diff --git a/Cargo.lock b/Cargo.lock
index 4b29c80d4..ef1cd8c64 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -496,12 +496,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
 
 [[package]]
 name = "errno"
-version = "0.3.12"
+version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18"
+checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
 dependencies = [
  "libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
diff --git a/charts/linkerd-control-plane/templates/destination.yaml b/charts/linkerd-control-plane/templates/destination.yaml
index c57d6fb03..84bccdb49 100644
--- a/charts/linkerd-control-plane/templates/destination.yaml
+++ b/charts/linkerd-control-plane/templates/destination.yaml
@@ -447,3 +447,6 @@ spec:
       - {{- include "partials.proxy.volumes.service-account-token" . | indent 8 | trimPrefix (repeat 7 " ") }}
       {{ end -}}
       - {{- include "partials.proxy.volumes.identity" . | indent 8 | trimPrefix (repeat 7 " ") }}
+      {{ if .Values.proxy.tracing.enable -}}
+      - {{- include "partials.proxy.volumes.podinfo" . | indent 8 | trimPrefix (repeat 7 " ") }}
+      {{ end }}
diff --git a/charts/linkerd-control-plane/templates/identity.yaml b/charts/linkerd-control-plane/templates/identity.yaml
index 37b5fbe2b..fe80df929 100644
--- a/charts/linkerd-control-plane/templates/identity.yaml
+++ b/charts/linkerd-control-plane/templates/identity.yaml
@@ -270,8 +270,11 @@ spec:
       {{ if not .Values.cniEnabled -}}
       - {{- include "partials.proxyInit.volumes.xtables" . | indent 8 | trimPrefix (repeat 7 " ") }}
       {{ end -}}
-      {{if .Values.identity.serviceAccountTokenProjection -}}
+      {{ if .Values.identity.serviceAccountTokenProjection -}}
       - {{- include "partials.proxy.volumes.service-account-token" . | indent 8 | trimPrefix (repeat 7 " ") }}
       {{ end -}}
       - {{- include "partials.proxy.volumes.identity" . | indent 8 | trimPrefix (repeat 7 " ") }}
+      {{ if .Values.proxy.tracing.enable -}}
+      - {{- include "partials.proxy.volumes.podinfo" . | indent 8 | trimPrefix (repeat 7 " ") }}
+      {{ end }}
 {{end -}}
diff --git a/charts/linkerd-control-plane/templates/proxy-injector.yaml b/charts/linkerd-control-plane/templates/proxy-injector.yaml
index 31983ae29..280657296 100644
--- a/charts/linkerd-control-plane/templates/proxy-injector.yaml
+++ b/charts/linkerd-control-plane/templates/proxy-injector.yaml
@@ -185,6 +185,9 @@ spec:
       - {{- include "partials.proxy.volumes.service-account-token" . | indent 8 | trimPrefix (repeat 7 " ") }}
       {{ end -}}
       - {{- include "partials.proxy.volumes.identity" . | indent 8 | trimPrefix (repeat 7 " ") }}
+      {{if .Values.proxy.tracing.enable -}}
+      - {{- include "partials.proxy.volumes.podinfo" . | indent 8 | trimPrefix (repeat 7 " ") }}
+      {{ end }}
 ---
 kind: Service
 apiVersion: v1
diff --git a/charts/linkerd-control-plane/values.yaml b/charts/linkerd-control-plane/values.yaml
index 0c5a2a4f9..c949ccf3e 100644
--- a/charts/linkerd-control-plane/values.yaml
+++ b/charts/linkerd-control-plane/values.yaml
@@ -284,6 +284,18 @@ proxy:
   metrics:
       # -- Whether or not to export hostname labels in outbound request metrics.
       hostnameLabels: false
+  # Configures tracing in the proxy and how they are exported
+  tracing:
+    # -- Enables trace collection and export in the proxy
+    enable: false
+    traceServiceName: linkerd-proxy
+    collector:
+      # -- The collector endpoint to send traces to.
+      endpoint: ""
+      # -- The identity of the collector in the linkerd mesh. If the collector
+      # is unmeshed, this should remain unset.
+      meshIdentity:
+        serviceAccountName: ""
   inbound:
     server:
       http2:
diff --git a/charts/partials/templates/_proxy.tpl b/charts/partials/templates/_proxy.tpl
index 277a1909a..119eea0c9 100644
--- a/charts/partials/templates/_proxy.tpl
+++ b/charts/partials/templates/_proxy.tpl
@@ -148,6 +148,28 @@ env:
   value: 30s
 - name: LINKERD2_PROXY_OUTBOUND_METRICS_HOSTNAME_LABELS
   value: {{ .Values.proxy.metrics.hostnameLabels | quote }}
+{{ if .Values.proxy.tracing.enable -}}
+- name: LINKERD2_PROXY_TRACE_ATTRIBUTES_PATH
+  value: /var/run/linkerd/podinfo/labels
+- name: LINKERD2_PROXY_TRACE_PROTOCOL
+  value: {{ default "opentelemetry" .Values.proxy.tracing.protocol }}
+- name: LINKERD2_PROXY_TRACE_SERVICE_NAME
+  value: {{ .Values.proxy.tracing.traceServiceName }}
+{{- if empty .Values.proxy.tracing.collector.endpoint }}
+{{- fail "proxy.tracing.collector.endpoint must be set if proxy tracing is enabled" }}
+{{- end }}
+- name: LINKERD2_PROXY_TRACE_COLLECTOR_SVC_ADDR
+  value: {{ .Values.proxy.tracing.collector.endpoint }}
+{{ if .Values.proxy.tracing.collector.meshIdentity.serviceAccountName -}}
+- name: LINKERD2_PROXY_TRACE_COLLECTOR_SVC_NAME
+  value: {{ .Values.proxy.tracing.collector.meshIdentity.serviceAccountName }}.serviceaccount.identity.{{.Release.Namespace}}.{{ .Values.clusterDomain }}
+{{ end -}}
+- name: LINKERD2_PROXY_TRACE_EXTRA_ATTRIBUTES
+  value: |
+    k8s.pod.ip=$(_pod_ip)
+    k8s.pod.uid=$(_pod_uid)
+    k8s.container.name=$(_pod_containerName)
+{{ end -}}
 {{- /* Configure inbound and outbound parameters, e.g. for HTTP/2 servers. */}}
 {{ range $proxyK, $proxyV := (dict "inbound" .Values.proxy.inbound "outbound" .Values.proxy.outbound) -}}
 {{   range $scopeK, $scopeV := $proxyV -}}
@@ -288,6 +310,10 @@ lifecycle:
 volumeMounts:
 - mountPath: /var/run/linkerd/identity/end-entity
   name: linkerd-identity-end-entity
+{{- if .Values.proxy.tracing.enable }}
+- mountPath: /var/run/linkerd/podinfo
+  name: linkerd-podinfo
+{{- end }}
 {{- if .Values.identity.serviceAccountTokenProjection }}
 - mountPath: /var/run/secrets/tokens
   name: linkerd-identity-token
diff --git a/charts/partials/templates/_volumes.tpl b/charts/partials/templates/_volumes.tpl
index ecb24cfe6..1b22a0ea2 100644
--- a/charts/partials/templates/_volumes.tpl
+++ b/charts/partials/templates/_volumes.tpl
@@ -4,6 +4,15 @@ emptyDir:
 name: linkerd-identity-end-entity
 {{- end -}}
 
+{{- define "partials.proxy.volumes.podinfo" -}}
+name: linkerd-podinfo
+downwardAPI:
+  items:
+    - path: labels
+      fieldRef:
+        fieldPath: metadata.labels
+{{- end -}}
+
 {{ define "partials.proxyInit.volumes.xtables" -}}
 emptyDir: {}
 name: {{ .Values.proxyInit.xtMountPath.name }}
@@ -38,4 +47,4 @@ projected:
           apiVersion: v1
           fieldPath: metadata.namespace
         path: namespace
-{{- end -}}
\ No newline at end of file
+{{- end -}}
diff --git a/charts/patch/templates/patch.json b/charts/patch/templates/patch.json
index 8f83f59c0..8a5e9b69e 100644
--- a/charts/patch/templates/patch.json
+++ b/charts/patch/templates/patch.json
@@ -103,6 +103,25 @@ structs.
       }
     }
   },
+  {{- if .Values.proxy.tracing.enable }}
+  {
+    "op": "add",
+    "path": "{{$prefix}}/spec/volumes/-",
+    "value": {
+       "downwardAPI": {
+         "items": [
+            {
+              "fieldRef": {
+                "fieldPath": "metadata.labels"
+              },
+              "path": "labels"
+            }
+          ]
+       },
+       "name": "linkerd-podinfo"
+     }
+  },
+  {{- end }}
   {{- if .Values.identity.serviceAccountTokenProjection}}
   {
     "op": "add",
diff --git a/go.mod b/go.mod
index 292487b3c..867c4426a 100644
--- a/go.mod
+++ b/go.mod
@@ -52,7 +52,7 @@ require (
 	k8s.io/kube-aggregator v0.32.3
 	k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
 	sigs.k8s.io/gateway-api v0.8.1
-	sigs.k8s.io/yaml v1.4.0
+	sigs.k8s.io/yaml v1.5.0
 )
 
 require (
@@ -147,6 +147,8 @@ require (
 	go.opentelemetry.io/otel v1.35.0 // indirect
 	go.opentelemetry.io/otel/metric v1.35.0 // indirect
 	go.opentelemetry.io/otel/trace v1.35.0 // indirect
+	go.yaml.in/yaml/v2 v2.4.2 // indirect
+	go.yaml.in/yaml/v3 v3.0.3 // indirect
 	golang.org/x/crypto v0.39.0 // indirect
 	golang.org/x/mod v0.25.0 // indirect
 	golang.org/x/oauth2 v0.30.0 // indirect
diff --git a/go.sum b/go.sum
index 7895bd4a4..3b18a454d 100644
--- a/go.sum
+++ b/go.sum
@@ -479,6 +479,10 @@ go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt
 go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
 go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE=
+go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI=
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -785,5 +789,6 @@ sigs.k8s.io/kustomize/kyaml v0.18.1 h1:WvBo56Wzw3fjS+7vBjN6TeivvpbW9GmRaWZ9CIVmt
 sigs.k8s.io/kustomize/kyaml v0.18.1/go.mod h1:C3L2BFVU1jgcddNBE1TxuVLgS46TjObMwW5FT9FcjYo=
 sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA=
 sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
 sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ=
+sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4=
diff --git a/pkg/charts/linkerd2/values.go b/pkg/charts/linkerd2/values.go
index 619d9758c..6c7e3c263 100644
--- a/pkg/charts/linkerd2/values.go
+++ b/pkg/charts/linkerd2/values.go
@@ -156,6 +156,7 @@ type (
 		LivenessProbe                        *Probe           `json:"livenessProbe"`
 		Control                              *ProxyControl    `json:"control"`
 		Metrics                              *ProxyMetrics    `json:"metrics"`
+		Tracing                              *ProxyTracing    `json:"tracing"`
 
 		AdditionalEnv   []corev1.EnvVar `json:"additionalEnv"`
 		ExperimentalEnv []corev1.EnvVar `json:"experimentalEnv"`
@@ -187,6 +188,22 @@ type (
 		HostnameLabels bool `json:"hostnameLabels"`
 	}
 
+	ProxyTracing struct {
+		Enable           bool                   `json:"enable"`
+		Protocol         string                 `json:"protocol"`
+		TraceServiceName string                 `json:"traceServiceName"`
+		Collector        *ProxyTracingCollector `json:"collector"`
+	}
+
+	ProxyTracingCollector struct {
+		Endpoint     string                         `json:"endpoint"`
+		MeshIdentity *ProxyTracingCollectorIdentity `json:"meshIdentity"`
+	}
+
+	ProxyTracingCollectorIdentity struct {
+		ServiceAccountName string `json:"serviceAccountName"`
+	}
+
 	ProxyRuntime struct {
 		Workers ProxyRuntimeWorkers `json:"workers,omitempty"`
 	}
diff --git a/web/app/package.json b/web/app/package.json
index 54e0dbe87..a583a8229 100644
--- a/web/app/package.json
+++ b/web/app/package.json
@@ -71,7 +71,7 @@
     "history": "5.3.0",
     "html-webpack-plugin": "^5.6.3",
     "jest": "^30.0.0",
-    "jest-environment-jsdom": "^30.0.0",
+    "jest-environment-jsdom": "^30.0.2",
     "lodash-webpack-plugin": "^0.11.6",
     "react-test-renderer": "16.14.0",
     "sinon": "21.0.0",
diff --git a/web/app/yarn.lock b/web/app/yarn.lock
index 9d5cfa1fd..9b28833df 100644
--- a/web/app/yarn.lock
+++ b/web/app/yarn.lock
@@ -1327,18 +1327,18 @@
   resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.0.tgz#402d27d14e9d5161dedfca98bf181018a8931eb1"
   integrity sha512-xMbtoCeKJDto86GW6AiwVv7M4QAuI56R7dVBr1RNGYbOT44M2TIzOiske2RxopBqkumDY+A1H55pGvuribRY9A==
 
-"@jest/environment-jsdom-abstract@30.0.0":
-  version "30.0.0"
-  resolved "https://registry.yarnpkg.com/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.0.tgz#fec9bbbba3c302ed9a720521d771cda871a8498b"
-  integrity sha512-Fcn1eZbH1JK+bqwUVkUVprlQL3xWUrhvOe/4L0PfDkaJOiAz3HUI1m4s0bgmXBYyCyTVogBuUFZkRpAKMox5Dw==
+"@jest/environment-jsdom-abstract@30.0.2":
+  version "30.0.2"
+  resolved "https://registry.yarnpkg.com/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.2.tgz#3538bcc206704a4a37ee18afcb5b88ce55f02dc4"
+  integrity sha512-8aMoEzGdUuJeQl71BUACkys1ZEX437AF376VBqdYXsGFd4l3F1SdTjFHmNq8vF0Rp+CYhUyxa0kRAzXbBaVzfQ==
   dependencies:
-    "@jest/environment" "30.0.0"
-    "@jest/fake-timers" "30.0.0"
-    "@jest/types" "30.0.0"
+    "@jest/environment" "30.0.2"
+    "@jest/fake-timers" "30.0.2"
+    "@jest/types" "30.0.1"
     "@types/jsdom" "^21.1.7"
     "@types/node" "*"
-    jest-mock "30.0.0"
-    jest-util "30.0.0"
+    jest-mock "30.0.2"
+    jest-util "30.0.2"
 
 "@jest/environment@30.0.0":
   version "30.0.0"
@@ -1350,6 +1350,16 @@
     "@types/node" "*"
     jest-mock "30.0.0"
 
+"@jest/environment@30.0.2":
+  version "30.0.2"
+  resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.0.2.tgz#1b0d055070e97f697e9edb25059e9435221cbe65"
+  integrity sha512-hRLhZRJNxBiOhxIKSq2UkrlhMt3/zVFQOAi5lvS8T9I03+kxsbflwHJEF+eXEYXCrRGRhHwECT7CDk6DyngsRA==
+  dependencies:
+    "@jest/fake-timers" "30.0.2"
+    "@jest/types" "30.0.1"
+    "@types/node" "*"
+    jest-mock "30.0.2"
+
 "@jest/expect-utils@30.0.0":
   version "30.0.0"
   resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.0.tgz#118d41d9df420db61d307308848a9e12f0fc1fad"
@@ -1377,6 +1387,18 @@
     jest-mock "30.0.0"
     jest-util "30.0.0"
 
+"@jest/fake-timers@30.0.2":
+  version "30.0.2"
+  resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.0.2.tgz#ec758b28ae6f63a49eda9e8d6af274d152d37c09"
+  integrity sha512-jfx0Xg7l0gmphTY9UKm5RtH12BlLYj/2Plj6wXjVW5Era4FZKfXeIvwC67WX+4q8UCFxYS20IgnMcFBcEU0DtA==
+  dependencies:
+    "@jest/types" "30.0.1"
+    "@sinonjs/fake-timers" "^13.0.0"
+    "@types/node" "*"
+    jest-message-util "30.0.2"
+    jest-mock "30.0.2"
+    jest-util "30.0.2"
+
 "@jest/get-type@30.0.0":
   version "30.0.0"
   resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.0.tgz#59dcb5a9cbd9eb0004d3a2ed2fa9c9c3abfbf005"
@@ -6560,13 +6582,13 @@ jest-each@30.0.0:
     jest-util "30.0.0"
     pretty-format "30.0.0"
 
-jest-environment-jsdom@^30.0.0:
-  version "30.0.0"
-  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-30.0.0.tgz#972cbf0cbf8f7191bb5f9d0ea17a2886a081d389"
-  integrity sha512-IjDRABkSx+HpO7+WGVKPZL5XZajWRsMo2iQIudyiG4BhCi9Uah9HrFluqLUXdjPkIOoox+utUEUl8TDR2kc/Og==
+jest-environment-jsdom@^30.0.2:
+  version "30.0.2"
+  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-30.0.2.tgz#8f0eb3544ba5abb8de71a2be42b5a95f04485e91"
+  integrity sha512-lwMpe7hZ81e2PpHj+4nowAzSkC0p8ftRfzC+qEjav9p5ElCs6LAce3y46iLwMS27oL9+/KQe55gUvUDwrlDeJQ==
   dependencies:
-    "@jest/environment" "30.0.0"
-    "@jest/environment-jsdom-abstract" "30.0.0"
+    "@jest/environment" "30.0.2"
+    "@jest/environment-jsdom-abstract" "30.0.2"
     "@types/jsdom" "^21.1.7"
     "@types/node" "*"
     jsdom "^26.1.0"
@@ -6658,6 +6680,21 @@ jest-message-util@30.0.0:
     slash "^3.0.0"
     stack-utils "^2.0.6"
 
+jest-message-util@30.0.2:
+  version "30.0.2"
+  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.2.tgz#9dfdc37570d172f0ffdc42a0318036ff4008837f"
+  integrity sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==
+  dependencies:
+    "@babel/code-frame" "^7.27.1"
+    "@jest/types" "30.0.1"
+    "@types/stack-utils" "^2.0.3"
+    chalk "^4.1.2"
+    graceful-fs "^4.2.11"
+    micromatch "^4.0.8"
+    pretty-format "30.0.2"
+    slash "^3.0.0"
+    stack-utils "^2.0.6"
+
 jest-mock@30.0.0:
   version "30.0.0"
   resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.0.tgz#f3b3115cd80c3eec7df93809430ab1feaeeb7229"
@@ -6667,6 +6704,15 @@ jest-mock@30.0.0:
     "@types/node" "*"
     jest-util "30.0.0"
 
+jest-mock@30.0.2:
+  version "30.0.2"
+  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.2.tgz#5e4245f25f6f9532714906cab10a2b9e39eb2183"
+  integrity sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==
+  dependencies:
+    "@jest/types" "30.0.1"
+    "@types/node" "*"
+    jest-util "30.0.2"
+
 jest-pnp-resolver@^1.2.3:
   version "1.2.3"
   resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
@@ -8105,6 +8151,15 @@ pretty-format@30.0.0:
     ansi-styles "^5.2.0"
     react-is "^18.3.1"
 
+pretty-format@30.0.2:
+  version "30.0.2"
+  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.2.tgz#54717b6aa2b4357a2e6d83868e10a2ea8dd647c7"
+  integrity sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==
+  dependencies:
+    "@jest/schemas" "30.0.1"
+    ansi-styles "^5.2.0"
+    react-is "^18.3.1"
+
 pretty-format@^26.6.2:
   version "26.6.2"
   resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"


Test patch:
diff --git a/cli/cmd/install_test.go b/cli/cmd/install_test.go
index 02ecfaf1b..ee65aac03 100644
--- a/cli/cmd/install_test.go
+++ b/cli/cmd/install_test.go
@@ -119,6 +119,16 @@ func TestRender(t *testing.T) {
 			Metrics: &charts.ProxyMetrics{
 				HostnameLabels: false,
 			},
+			Tracing: &charts.ProxyTracing{
+				Enable:           false,
+				TraceServiceName: "linkerd-proxy",
+				Collector: &charts.ProxyTracingCollector{
+					Endpoint: "",
+					MeshIdentity: &charts.ProxyTracingCollectorIdentity{
+						ServiceAccountName: "",
+					},
+				},
+			},
 			LivenessProbe: &charts.Probe{
 				InitialDelaySeconds: 10,
 				TimeoutSeconds:      1,
diff --git a/cli/cmd/testdata/install_controlplane_tracing_output.golden b/cli/cmd/testdata/install_controlplane_tracing_output.golden
index 05d366b42..1f7e80b43 100644
--- a/cli/cmd/testdata/install_controlplane_tracing_output.golden
+++ b/cli/cmd/testdata/install_controlplane_tracing_output.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1382,7 +1390,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1907,7 +1915,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2205,6 +2213,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_custom_domain.golden b/cli/cmd/testdata/install_custom_domain.golden
index 21f94f09e..984619da4 100644
--- a/cli/cmd/testdata/install_custom_domain.golden
+++ b/cli/cmd/testdata/install_custom_domain.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1381,7 +1389,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1905,7 +1913,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2203,6 +2211,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_custom_registry.golden b/cli/cmd/testdata/install_custom_registry.golden
index ad6e704fa..9a3a9707e 100644
--- a/cli/cmd/testdata/install_custom_registry.golden
+++ b/cli/cmd/testdata/install_custom_registry.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1381,7 +1389,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1905,7 +1913,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2203,6 +2211,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_default.golden b/cli/cmd/testdata/install_default.golden
index 21f94f09e..984619da4 100644
--- a/cli/cmd/testdata/install_default.golden
+++ b/cli/cmd/testdata/install_default.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1381,7 +1389,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1905,7 +1913,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2203,6 +2211,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_default_override_dst_get_nets.golden b/cli/cmd/testdata/install_default_override_dst_get_nets.golden
index 9e76c0368..801f62153 100644
--- a/cli/cmd/testdata/install_default_override_dst_get_nets.golden
+++ b/cli/cmd/testdata/install_default_override_dst_get_nets.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1381,7 +1389,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1905,7 +1913,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2203,6 +2211,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_default_token.golden b/cli/cmd/testdata/install_default_token.golden
index f1595c06d..fdb1fa08c 100644
--- a/cli/cmd/testdata/install_default_token.golden
+++ b/cli/cmd/testdata/install_default_token.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1372,7 +1380,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1887,7 +1895,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2176,6 +2184,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_gid_output.golden b/cli/cmd/testdata/install_gid_output.golden
index e819cd872..95dafe9c0 100755
--- a/cli/cmd/testdata/install_gid_output.golden
+++ b/cli/cmd/testdata/install_gid_output.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1385,7 +1393,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1916,7 +1924,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2218,6 +2226,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_ha_output.golden b/cli/cmd/testdata/install_ha_output.golden
index 16cc2b832..1113f3c89 100644
--- a/cli/cmd/testdata/install_ha_output.golden
+++ b/cli/cmd/testdata/install_ha_output.golden
@@ -775,6 +775,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -2382,6 +2390,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_ha_with_overrides_output.golden b/cli/cmd/testdata/install_ha_with_overrides_output.golden
index 1b35b483d..d7a0be3e9 100644
--- a/cli/cmd/testdata/install_ha_with_overrides_output.golden
+++ b/cli/cmd/testdata/install_ha_with_overrides_output.golden
@@ -775,6 +775,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -2382,6 +2390,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_heartbeat_disabled_output.golden b/cli/cmd/testdata/install_heartbeat_disabled_output.golden
index ae7d5f0e8..3fe806d93 100644
--- a/cli/cmd/testdata/install_heartbeat_disabled_output.golden
+++ b/cli/cmd/testdata/install_heartbeat_disabled_output.golden
@@ -679,6 +679,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -874,7 +882,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1312,7 +1320,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1752,7 +1760,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2050,6 +2058,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_helm_control_plane_output.golden b/cli/cmd/testdata/install_helm_control_plane_output.golden
index bb654a3bb..f47f7bf57 100644
--- a/cli/cmd/testdata/install_helm_control_plane_output.golden
+++ b/cli/cmd/testdata/install_helm_control_plane_output.golden
@@ -725,6 +725,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -916,7 +924,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1356,7 +1364,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1884,7 +1892,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2182,6 +2190,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_helm_control_plane_output_ha.golden b/cli/cmd/testdata/install_helm_control_plane_output_ha.golden
index fbbcd0ff8..a6be0211e 100644
--- a/cli/cmd/testdata/install_helm_control_plane_output_ha.golden
+++ b/cli/cmd/testdata/install_helm_control_plane_output_ha.golden
@@ -752,6 +752,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -2361,6 +2369,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_helm_control_plane_output_ha_with_gid.golden b/cli/cmd/testdata/install_helm_control_plane_output_ha_with_gid.golden
index b9452bf2d..bf4795a92 100755
--- a/cli/cmd/testdata/install_helm_control_plane_output_ha_with_gid.golden
+++ b/cli/cmd/testdata/install_helm_control_plane_output_ha_with_gid.golden
@@ -752,6 +752,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -2376,6 +2384,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_helm_output_ha_labels.golden b/cli/cmd/testdata/install_helm_output_ha_labels.golden
index e36c4caee..65277f484 100644
--- a/cli/cmd/testdata/install_helm_output_ha_labels.golden
+++ b/cli/cmd/testdata/install_helm_output_ha_labels.golden
@@ -756,6 +756,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -2381,6 +2389,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_helm_output_ha_namespace_selector.golden b/cli/cmd/testdata/install_helm_output_ha_namespace_selector.golden
index f3f5380e9..be2b68be2 100644
--- a/cli/cmd/testdata/install_helm_output_ha_namespace_selector.golden
+++ b/cli/cmd/testdata/install_helm_output_ha_namespace_selector.golden
@@ -747,6 +747,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -2351,6 +2359,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_no_init_container.golden b/cli/cmd/testdata/install_no_init_container.golden
index f1f98b8f0..ea8dacf13 100644
--- a/cli/cmd/testdata/install_no_init_container.golden
+++ b/cli/cmd/testdata/install_no_init_container.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1374,7 +1382,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1891,7 +1899,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2182,6 +2190,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_output.golden b/cli/cmd/testdata/install_output.golden
index 5df971c2b..44cf2601d 100644
--- a/cli/cmd/testdata/install_output.golden
+++ b/cli/cmd/testdata/install_output.golden
@@ -707,6 +707,14 @@ data:
       saMountPath: null
       shutdownGracePeriod: ""
       startupProbe: null
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: ProxyContainerName
@@ -894,7 +902,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1326,7 +1334,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1852,7 +1860,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2148,6 +2156,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_proxy_ignores.golden b/cli/cmd/testdata/install_proxy_ignores.golden
index dc2ba35a7..f93d4aafb 100644
--- a/cli/cmd/testdata/install_proxy_ignores.golden
+++ b/cli/cmd/testdata/install_proxy_ignores.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1381,7 +1389,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1905,7 +1913,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2203,6 +2211,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/cli/cmd/testdata/install_values_file.golden b/cli/cmd/testdata/install_values_file.golden
index eecec07ff..132a0e5e4 100644
--- a/cli/cmd/testdata/install_values_file.golden
+++ b/cli/cmd/testdata/install_values_file.golden
@@ -748,6 +748,14 @@ data:
         failureThreshold: 120
         initialDelaySeconds: 0
         periodSeconds: 1
+      tracing:
+        collector:
+          endpoint: ""
+          meshIdentity:
+            serviceAccountName: ""
+        enable: false
+        protocol: ""
+        traceServiceName: linkerd-proxy
       uid: 2102
       waitBeforeExitSeconds: 0
     proxyContainerName: linkerd-proxy
@@ -943,7 +951,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - args:
@@ -1381,7 +1389,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -1905,7 +1913,7 @@ spec:
     spec:
       nodeSelector:
         kubernetes.io/os: linux
-      
+
       automountServiceAccountToken: false
       containers:
       - env:
@@ -2203,6 +2211,7 @@ spec:
       - emptyDir:
           medium: Memory
         name: linkerd-identity-end-entity
+
 ---
 kind: Service
 apiVersion: v1
diff --git a/pkg/charts/linkerd2/values_test.go b/pkg/charts/linkerd2/values_test.go
index 57903d710..8ec81aa94 100644
--- a/pkg/charts/linkerd2/values_test.go
+++ b/pkg/charts/linkerd2/values_test.go
@@ -182,6 +182,16 @@ func TestNewValues(t *testing.T) {
 			Metrics: &ProxyMetrics{
 				HostnameLabels: false,
 			},
+			Tracing: &ProxyTracing{
+				Enable:           false,
+				TraceServiceName: "linkerd-proxy",
+				Collector: &ProxyTracingCollector{
+					Endpoint: "",
+					MeshIdentity: &ProxyTracingCollectorIdentity{
+						ServiceAccountName: "",
+					},
+				},
+			},
 			Runtime: ProxyRuntime{
 				Workers: ProxyRuntimeWorkers{
 					Minimum: 1,