Repository: linkerd/linkerd2
Pull request #6510 (2021-07-16 21:24:34)

Bump github.com/linkerd/linkerd2-proxy-api from 0.1.18 to 0.2.0
Bumps [github.com/linkerd/linkerd2-proxy-api](https://github.com/linkerd/linkerd2-proxy-api) from 0.1.18 to 0.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/linkerd/linkerd2-proxy-api/releases">github.com/linkerd/linkerd2-proxy-api's releases</a>.</em></p>
<blockquote>
<h2>v0.2.0</h2>
<ul>
<li>Add the <code>io.linkerd.proxy.inbound.InboundServerPolicies</code> API to support server-side configuration
and policy.</li>
<li>Go: Update dependencies, including protoc and grpc</li>
<li>Rust: Update dependencies, including tonic v0.5</li>
<li>Rust: Add features for all APIs</li>
<li>Rust: Add <code>client</code> and <code>server</code> features</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/linkerd/linkerd2-proxy-api/blob/main/CHANGES.md">github.com/linkerd/linkerd2-proxy-api's changelog</a>.</em></p>
<blockquote>
<h2>v0.2.0</h2>
<ul>
<li>Add the <code>io.linkerd.proxy.inbound.InboundServerPolicies</code> API to support server-side configuration
and policy.</li>
<li>Go: Update dependencies, including protoc and grpc</li>
<li>Rust: Update dependencies, including tonic v0.5</li>
<li>Rust: Add features for all APIs</li>
<li>Rust: Add <code>client</code> and <code>server</code> features</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/d9381f997306f5d68d262437f382789a891afc66"><code>d9381f9</code></a> Add a cargo description</li>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/e6dec3f95179f8f1aaeb690d3ffdca9fee3fd18d"><code>e6dec3f</code></a> Move rust sources into the repo's root (<a href="https://github-redirect.dependabot.com/linkerd/linkerd2-proxy-api/issues/76">#76</a>)</li>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/404321240eb937b75e15ffedc579666b47e43ea6"><code>4043212</code></a> v0.2.0 (<a href="https://github-redirect.dependabot.com/linkerd/linkerd2-proxy-api/issues/75">#75</a>)</li>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/4eaa2a1eb658d23ddcd9fe662701d4cebd27ae9c"><code>4eaa2a1</code></a> Add the <code>io.linkerd.proxy.inbound</code> API (<a href="https://github-redirect.dependabot.com/linkerd/linkerd2-proxy-api/issues/58">#58</a>)</li>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/e03dfe4a6bdacc06c0d8bcf7fd670b5184708b0d"><code>e03dfe4</code></a> Remove Cargo.lock (<a href="https://github-redirect.dependabot.com/linkerd/linkerd2-proxy-api/issues/74">#74</a>)</li>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/398585a297a8c1324fc476b0eb3ff37d97184b35"><code>398585a</code></a> Update protoc to v3.17.3 (<a href="https://github-redirect.dependabot.com/linkerd/linkerd2-proxy-api/issues/73">#73</a>)</li>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/5e4e190df8fe3a2c869169a60b7ba78e2afe31b6"><code>5e4e190</code></a> Bump <code>tonic</code> to 0.5 and <code>prost</code> to 0.8 (<a href="https://github-redirect.dependabot.com/linkerd/linkerd2-proxy-api/issues/71">#71</a>)</li>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/def4e323b26e04f177c53f8f14a9ff7c82830721"><code>def4e32</code></a> Bump thiserror from 1.0.25 to 1.0.26 (<a href="https://github-redirect.dependabot.com/linkerd/linkerd2-proxy-api/issues/66">#66</a>)</li>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/9d5ea6338cfe67a3441cfe95deb6774340c665e8"><code>9d5ea63</code></a> Bump google.golang.org/grpc from 1.38.0 to 1.39.0 (<a href="https://github-redirect.dependabot.com/linkerd/linkerd2-proxy-api/issues/65">#65</a>)</li>
<li><a href="https://github.com/linkerd/linkerd2-proxy-api/commit/481346a1572d116721a01c40dbc327974fca6ad9"><code>481346a</code></a> Bump google.golang.org/protobuf from 1.26.0 to 1.27.1 (<a href="https://github-redirect.dependabot.com/linkerd/linkerd2-proxy-api/issues/64">#64</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/linkerd/linkerd2-proxy-api/compare/v0.1.18...v0.2.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/linkerd/linkerd2-proxy-api&package-manager=go_modules&previous-version=0.1.18&new-version=0.2.0)](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 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>

codecov-commenter: # [Codecov](https://codecov.io/gh/linkerd/linkerd2/pull/6510?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd) Report
> Merging [#6510](https://codecov.io/gh/linkerd/linkerd2/pull/6510?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd) (e268931) into [main](https://codecov.io/gh/linkerd/linkerd2/commit/3669273c3a76e86e1780f35e7ee4f9a5e06e1c4f?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd) (3669273) will **increase** coverage by `22.26%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/linkerd/linkerd2/pull/6510/graphs/tree.svg?width=650&height=150&src=pr&token=FCBISvpqTv&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd)](https://codecov.io/gh/linkerd/linkerd2/pull/6510?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd)

```diff
@@             Coverage Diff             @@
##             main    #6510       +/-   ##
===========================================
+ Coverage   44.49%   66.76%   +22.26%     
===========================================
  Files         183       39      -144     
  Lines       17645     1396    -16249     
  Branches      290      290               
===========================================
- Hits         7852      932     -6920     
+ Misses       9056      460     -8596     
+ Partials      737        4      -733     
```

| Flag | Coverage Δ | |
|---|---|---|
| golang | `?` | |
| javascript | `66.76% <ø> (ø)` | |
| unittests | `66.76% <ø> (+22.26%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/linkerd/linkerd2/pull/6510?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd) | Coverage Δ | |
|---|---|---|
| [viz/cmd/root.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-dml6L2NtZC9yb290Lmdv) | | |
| [testutil/install.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-dGVzdHV0aWwvaW5zdGFsbC5nbw==) | | |
| [cli/cmd/upgrade.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-Y2xpL2NtZC91cGdyYWRlLmdv) | | |
| [viz/cmd/dashboard.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-dml6L2NtZC9kYXNoYm9hcmQuZ28=) | | |
| [viz/cmd/install.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-dml6L2NtZC9pbnN0YWxsLmdv) | | |
| [pkg/tree/tree.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-cGtnL3RyZWUvdHJlZS5nbw==) | | |
| [controller/api/destination/test\_helper.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-Y29udHJvbGxlci9hcGkvZGVzdGluYXRpb24vdGVzdF9oZWxwZXIuZ28=) | | |
| [pkg/k8s/resource/resource.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-cGtnL2s4cy9yZXNvdXJjZS9yZXNvdXJjZS5nbw==) | | |
| [pkg/util/parsing.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-cGtnL3V0aWwvcGFyc2luZy5nbw==) | | |
| [testutil/annotations.go](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd#diff-dGVzdHV0aWwvYW5ub3RhdGlvbnMuZ28=) | | |
| ... and [134 more](https://codecov.io/gh/linkerd/linkerd2/pull/6510/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/linkerd/linkerd2/pull/6510?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/linkerd/linkerd2/pull/6510?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd). Last update [3669273...e268931](https://codecov.io/gh/linkerd/linkerd2/pull/6510?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=linkerd).


Patch:
diff --git a/controller/api/destination/server.go b/controller/api/destination/server.go
index d9a3b1d2c..2f89091ef 100644
--- a/controller/api/destination/server.go
+++ b/controller/api/destination/server.go
@@ -26,6 +26,8 @@ import (
 
 type (
 	server struct {
+		pb.UnimplementedDestinationServer
+
 		endpoints     *watcher.EndpointsWatcher
 		opaquePorts   *watcher.OpaquePortsWatcher
 		profiles      *watcher.ProfileWatcher
@@ -84,6 +86,7 @@ func NewServer(
 	trafficSplits := watcher.NewTrafficSplitWatcher(k8sAPI, log)
 
 	srv := server{
+		pb.UnimplementedDestinationServer{},
 		endpoints,
 		opaquePorts,
 		profiles,
diff --git a/go.mod b/go.mod
index 2db6f3aab..df30f6917 100644
--- a/go.mod
+++ b/go.mod
@@ -20,7 +20,7 @@ require (
 	github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
 	github.com/imdario/mergo v0.3.12
 	github.com/julienschmidt/httprouter v1.3.0
-	github.com/linkerd/linkerd2-proxy-api v0.1.18
+	github.com/linkerd/linkerd2-proxy-api v0.2.0
 	github.com/linkerd/linkerd2-proxy-init v1.3.13
 	github.com/mattn/go-isatty v0.0.13
 	github.com/mattn/go-runewidth v0.0.13
diff --git a/go.sum b/go.sum
index 8bd364eb4..ee545ee9d 100644
--- a/go.sum
+++ b/go.sum
@@ -564,8 +564,8 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhn
 github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
 github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
 github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
-github.com/linkerd/linkerd2-proxy-api v0.1.18 h1:sDPIjEdzP3JoVH8xhQ/Csi4Se/1E8ucaOADGSwRyRAo=
-github.com/linkerd/linkerd2-proxy-api v0.1.18/go.mod h1:yFz+DCCEomC3vpsChFzfCuOuSJtzx7jMNNHBIlbFil0=
+github.com/linkerd/linkerd2-proxy-api v0.2.0 h1:bbtx/tSPrajcUvhd8KtwylVKIaUWTvfGP/ucJddIbL4=
+github.com/linkerd/linkerd2-proxy-api v0.2.0/go.mod h1:EIFzeyjPwmXTq+EgfX4prgVf7GuUKATCIVKeoHA/tKg=
 github.com/linkerd/linkerd2-proxy-init v1.3.13 h1:Y7xKWOAV8F8tvGy28/d3KeFKOfIEyvTMC0Fv/DA+uDE=
 github.com/linkerd/linkerd2-proxy-init v1.3.13/go.mod h1:re7j9P7dBpV+/k23NoFGk8JHC0AbKH6Ww1zRaudaW+w=
 github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
diff --git a/pkg/identity/service.go b/pkg/identity/service.go
index 414f54ff9..a3e207da6 100644
--- a/pkg/identity/service.go
+++ b/pkg/identity/service.go
@@ -41,12 +41,14 @@ const (
 type (
 	// Service implements the gRPC service in terms of a Validator and Issuer.
 	Service struct {
-		validator                                  Validator
-		trustAnchors                               *x509.CertPool
-		issuer                                     *tls.Issuer
-		issuerMutex                                *sync.RWMutex
-		validity                                   *tls.Validity
-		recordEvent                                func(parent runtime.Object, eventType, reason, message string)
+		pb.UnimplementedIdentityServer
+		validator    Validator
+		trustAnchors *x509.CertPool
+		issuer       *tls.Issuer
+		issuerMutex  *sync.RWMutex
+		validity     *tls.Validity
+		recordEvent  func(parent runtime.Object, eventType, reason, message string)
+
 		expectedName, issuerPathCrt, issuerPathKey string
 	}
 
@@ -136,6 +138,7 @@ func (svc *Service) loadCredentials() (tls.Issuer, error) {
 // NewService creates a new identity service.
 func NewService(validator Validator, trustAnchors *x509.CertPool, validity *tls.Validity, recordEvent func(parent runtime.Object, eventType, reason, message string), expectedName, issuerPathCrt, issuerPathKey string) *Service {
 	return &Service{
+		pb.UnimplementedIdentityServer{},
 		validator,
 		trustAnchors,
 		nil,
diff --git a/web/app/package.json b/web/app/package.json
index 7b2c0e0aa..e0e87fe41 100644
--- a/web/app/package.json
+++ b/web/app/package.json
@@ -50,7 +50,7 @@
     "@lingui/cli": "3.10.2",
     "@wdio/cli": "6.12.1",
     "@wdio/local-runner": "7.0.0",
-    "@wdio/mocha-framework": "7.7.5",
+    "@wdio/mocha-framework": "7.7.7",
     "@wdio/sync": "7.7.7",
     "babel-core": "^7.0.0-bridge.0",
     "babel-jest": "^27.0.6",
@@ -85,8 +85,8 @@
     "style-loader": "^3.1.0",
     "url-loader": "^4.1.1",
     "wdio-chromedriver-service": "6.0.4",
-    "webdriverio": "7.7.6",
-    "webpack": "^5.44.0",
+    "webdriverio": "7.7.7",
+    "webpack": "^5.45.1",
     "webpack-bundle-analyzer": "4.4.2",
     "webpack-cli": "4.7.2",
     "webpack-dev-server": "3.11.2"
diff --git a/web/app/yarn.lock b/web/app/yarn.lock
index c95963750..7053cb2bf 100644
--- a/web/app/yarn.lock
+++ b/web/app/yarn.lock
@@ -1736,11 +1736,16 @@
   dependencies:
     "@types/istanbul-lib-report" "*"
 
-"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
+"@types/json-schema@*", "@types/json-schema@^7.0.5":
   version "7.0.7"
   resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
   integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
 
+"@types/json-schema@^7.0.7":
+  version "7.0.8"
+  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818"
+  integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==
+
 "@types/json5@^0.0.29":
   version "0.0.29"
   resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
@@ -1784,10 +1789,10 @@
   resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21"
   integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==
 
-"@types/mocha@^8.0.0":
-  version "8.2.2"
-  resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.2.tgz#91daa226eb8c2ff261e6a8cbf8c7304641e095e0"
-  integrity sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==
+"@types/mocha@^8.2.2":
+  version "8.2.3"
+  resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323"
+  integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==
 
 "@types/node@*", "@types/node@^15.12.5":
   version "15.14.2"
@@ -2013,16 +2018,6 @@
     deepmerge "^4.0.0"
     glob "^7.1.2"
 
-"@wdio/config@7.7.5":
-  version "7.7.5"
-  resolved "https://registry.yarnpkg.com/@wdio/config/-/config-7.7.5.tgz#7eee95eff3e0373dd06cd4e7d266e5dd07616140"
-  integrity sha512-sMazXmbN8ZR8ZdHAejBp6mnoObpF3bbWIiUWlmA31kQb+KqJsQYoc1vbkCSnNf6RY59rWE5BXI4V09jEa/m1PQ==
-  dependencies:
-    "@wdio/logger" "7.7.0"
-    "@wdio/types" "7.7.5"
-    deepmerge "^4.0.0"
-    glob "^7.1.2"
-
 "@wdio/config@7.7.7":
   version "7.7.7"
   resolved "https://registry.yarnpkg.com/@wdio/config/-/config-7.7.7.tgz#74fe17d84dddb6a3f3eb2ee689691a3e429e6af4"
@@ -2076,15 +2071,15 @@
     loglevel-plugin-prefix "^0.8.4"
     strip-ansi "^6.0.0"
 
-"@wdio/mocha-framework@7.7.5":
-  version "7.7.5"
-  resolved "https://registry.yarnpkg.com/@wdio/mocha-framework/-/mocha-framework-7.7.5.tgz#033c132b6f8076e1c081682e42b7e5951cf3c231"
-  integrity sha512-E3jIqUpSaYJzOHPXgn+n+QzZD5xLrqnLN4a3Xuy0LWpPrmvEK+RivFKOeTvcyZuOvXPJs6xvk0R4A6wFB3H9vA==
+"@wdio/mocha-framework@7.7.7":
+  version "7.7.7"
+  resolved "https://registry.yarnpkg.com/@wdio/mocha-framework/-/mocha-framework-7.7.7.tgz#267c887844964cee82a5237042dc254736a6e5f5"
+  integrity sha512-kOzFbHUoNSa9Ibt5AzSt4beTKYwKk7V6mm/dmAit93PlPwMAJcVZCz0VER+//MYc7kBzJ80efIiuM0rQxH7/4A==
   dependencies:
-    "@types/mocha" "^8.0.0"
+    "@types/mocha" "^8.2.2"
     "@wdio/logger" "7.7.0"
-    "@wdio/types" "7.7.5"
-    "@wdio/utils" "7.7.5"
+    "@wdio/types" "7.7.7"
+    "@wdio/utils" "7.7.7"
     expect-webdriverio "^3.0.0"
     mocha "^9.0.0"
 
@@ -2117,13 +2112,6 @@
   dependencies:
     "@wdio/utils" "7.0.0"
 
-"@wdio/repl@7.7.5":
-  version "7.7.5"
-  resolved "https://registry.yarnpkg.com/@wdio/repl/-/repl-7.7.5.tgz#e3230cd45a61460ac2905c076ca4c01ac952c1fd"
-  integrity sha512-ZgmMXGANNeUZ0CYspIIjjPecEWAf4myaR0TKiAjEzgSuv6JpKpI4/Fewonr8d9VqmEUF6Nh2IBfHDeYWXZl2ZQ==
-  dependencies:
-    "@wdio/utils" "7.7.5"
-
 "@wdio/repl@7.7.7":
   version "7.7.7"
   resolved "https://registry.yarnpkg.com/@wdio/repl/-/repl-7.7.7.tgz#d4f0e54cfbbdf48abc1f1dda8d73db7373ba8f2b"
@@ -2164,14 +2152,6 @@
   dependencies:
     got "^11.8.1"
 
-"@wdio/types@7.7.5":
-  version "7.7.5"
-  resolved "https://registry.yarnpkg.com/@wdio/types/-/types-7.7.5.tgz#74122c03a3b5d8a14e437b644f26982c9b418412"
-  integrity sha512-1LwlF/O9ohpnR9k1aVfdDSJ44UqpC6Lk6vk5lXNddlTvFzUV6a+fT6odm22LfMrazBxD2+rtKU43CIDX6kdxCw==
-  dependencies:
-    "@types/node" "^15.12.5"
-    got "^11.8.1"
-
 "@wdio/types@7.7.7":
   version "7.7.7"
   resolved "https://registry.yarnpkg.com/@wdio/types/-/types-7.7.7.tgz#cc5c74f926ebb0771507bc83247d61a41eb08602"
@@ -2195,14 +2175,6 @@
     "@wdio/logger" "7.0.0"
     "@wdio/types" "7.0.0"
 
-"@wdio/utils@7.7.5":
-  version "7.7.5"
-  resolved "https://registry.yarnpkg.com/@wdio/utils/-/utils-7.7.5.tgz#f87bf4778fddb080230ff025dfac89e59b10b1cd"
-  integrity sha512-iWJRhBUf913pXUNvETt5ldQVoe1PsPUpzf9gbYbME8YPDSR6iAFnSKNTMEv/wqhSnWxsQ07J1ardsxj6O8/RsA==
-  dependencies:
-    "@wdio/logger" "7.7.0"
-    "@wdio/types" "7.7.5"
-
 "@wdio/utils@7.7.7":
   version "7.7.7"
   resolved "https://registry.yarnpkg.com/@wdio/utils/-/utils-7.7.7.tgz#70c7986178d598d1dabf400df92a5b8c76799c37"
@@ -4259,24 +4231,6 @@ devtools@7.0.0:
     ua-parser-js "^0.7.21"
     uuid "^8.0.0"
 
-devtools@7.7.6:
-  version "7.7.6"
-  resolved "https://registry.yarnpkg.com/devtools/-/devtools-7.7.6.tgz#32cc1505d9a6d528b84a2b676e720c1c72fadc6f"
-  integrity sha512-HyBG0UuvpQ+pKnDX1uI2H0M7FLHClzb+EGg7OJeq2ARCAiPG9iQ0jEB63oeIabqJkwrNU6i2OI/lODGIa2GT8Q==
-  dependencies:
-    "@types/node" "^15.12.5"
-    "@wdio/config" "7.7.5"
-    "@wdio/logger" "7.7.0"
-    "@wdio/protocols" "7.7.4"
-    "@wdio/types" "7.7.5"
-    "@wdio/utils" "7.7.5"
-    chrome-launcher "^0.14.0"
-    edge-paths "^2.1.0"
-    puppeteer-core "^10.1.0"
-    query-selector-shadow-dom "^1.0.0"
-    ua-parser-js "^0.7.21"
-    uuid "^8.0.0"
-
 devtools@7.7.7:
   version "7.7.7"
   resolved "https://registry.yarnpkg.com/devtools/-/devtools-7.7.7.tgz#e748cd67a8430d2349f1589d6bb3c6ac8f77d3cf"
@@ -9811,12 +9765,12 @@ schema-utils@^2.6.5:
     ajv "^6.12.4"
     ajv-keywords "^3.5.2"
 
-schema-utils@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef"
-  integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==
+schema-utils@^3.0.0, schema-utils@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.0.tgz#95986eb604f66daadeed56e379bfe7a7f963cdb9"
+  integrity sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==
   dependencies:
-    "@types/json-schema" "^7.0.6"
+    "@types/json-schema" "^7.0.7"
     ajv "^6.12.5"
     ajv-keywords "^3.5.2"
 
@@ -11104,20 +11058,6 @@ webdriver@7.0.0:
     got "^11.0.2"
     lodash.merge "^4.6.1"
 
-webdriver@7.7.5:
-  version "7.7.5"
-  resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-7.7.5.tgz#748b9790fe34bd9faf01af35d21d990567d3de6e"
-  integrity sha512-CdwVgOxGb4jGF8tIK5tQ6p+hI5bCgg1n+5bmrCaHdvJKmuDQHNDH4a5+v9+3DxrfvKI7CTUCwqKHhKOpcYfOOA==
-  dependencies:
-    "@types/node" "^15.12.5"
-    "@wdio/config" "7.7.5"
-    "@wdio/logger" "7.7.0"
-    "@wdio/protocols" "7.7.4"
-    "@wdio/types" "7.7.5"
-    "@wdio/utils" "7.7.5"
-    got "^11.0.2"
-    lodash.merge "^4.6.1"
-
 webdriver@7.7.7:
   version "7.7.7"
   resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-7.7.7.tgz#6eaac0ed4f2a1fb9ff4e6d2c0c694a2e871bdebc"
@@ -11193,41 +11133,6 @@ webdriverio@7.0.0:
     serialize-error "^8.0.0"
     webdriver "7.0.0"
 
-webdriverio@7.7.6:
-  version "7.7.6"
-  resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-7.7.6.tgz#cb388503d9c33766318af1c4e699209b3b735ad8"
-  integrity sha512-S9PuK4khyATvEgLjUejNC0XpUIZk8WD6e3JWf5MQtpCXHuJ+I1uqIamVv9/YTP3rgpWH35JSy9mD7nnCbvKZ2A==
-  dependencies:
-    "@types/aria-query" "^4.2.1"
-    "@types/node" "^15.12.5"
-    "@wdio/config" "7.7.5"
-    "@wdio/logger" "7.7.0"
-    "@wdio/protocols" "7.7.4"
-    "@wdio/repl" "7.7.5"
-    "@wdio/types" "7.7.5"
-    "@wdio/utils" "7.7.5"
-    archiver "^5.0.0"
-    aria-query "^4.2.2"
-    atob "^2.1.2"
-    css-shorthand-properties "^1.1.1"
-    css-value "^0.0.1"
-    devtools "7.7.6"
-    devtools-protocol "^0.0.900357"
-    fs-extra "^10.0.0"
-    get-port "^5.1.1"
-    grapheme-splitter "^1.0.2"
-    lodash.clonedeep "^4.5.0"
-    lodash.isobject "^3.0.2"
-    lodash.isplainobject "^4.0.6"
-    lodash.zip "^4.2.0"
-    minimatch "^3.0.4"
-    puppeteer-core "^10.1.0"
-    query-selector-shadow-dom "^1.0.0"
-    resq "^1.9.1"
-    rgb2hex "0.2.5"
-    serialize-error "^8.0.0"
-    webdriver "7.7.5"
-
 webdriverio@7.7.7:
   version "7.7.7"
   resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-7.7.7.tgz#74c273613340fcfe2e9984161f8039d220192888"
@@ -11386,10 +11291,10 @@ webpack-sources@^2.3.0:
     source-list-map "^2.0.1"
     source-map "^0.6.1"
 
-webpack@^5.44.0:
-  version "5.44.0"
-  resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.44.0.tgz#97b13a02bd79fb71ac6301ce697920660fa214a1"
-  integrity sha512-I1S1w4QLoKmH19pX6YhYN0NiSXaWY8Ou00oA+aMcr9IUGeF5azns+IKBkfoAAG9Bu5zOIzZt/mN35OffBya8AQ==
+webpack@^5.45.1:
+  version "5.45.1"
+  resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.45.1.tgz#d78dcbeda18a872dc62b0455d3ed3dcfd1c886bb"
+  integrity sha512-68VT2ZgG9EHs6h6UxfV2SEYewA9BA3SOLSnC2NEbJJiEwbAiueDL033R1xX0jzjmXvMh0oSeKnKgbO2bDXIEyQ==
   dependencies:
     "@types/eslint-scope" "^3.7.0"
     "@types/estree" "^0.0.50"
@@ -11409,7 +11314,7 @@ webpack@^5.44.0:
     loader-runner "^4.2.0"
     mime-types "^2.1.27"
     neo-async "^2.6.2"
-    schema-utils "^3.0.0"
+    schema-utils "^3.1.0"
     tapable "^2.1.1"
     terser-webpack-plugin "^5.1.3"
     watchpack "^2.2.0"


Test patch:
diff --git a/controller/api/destination/server_test.go b/controller/api/destination/server_test.go
index 76c299770..5a153d5d1 100644
--- a/controller/api/destination/server_test.go
+++ b/controller/api/destination/server_test.go
@@ -348,6 +348,7 @@ status:
 	k8sAPI.Sync(nil)
 
 	return &server{
+		pb.UnimplementedDestinationServer{},
 		endpoints,
 		opaquePorts,
 		profiles,
diff --git a/controller/k8s/api_test.go b/controller/k8s/api_test.go
index 7607088b4..0c59f4940 100644
--- a/controller/k8s/api_test.go
+++ b/controller/k8s/api_test.go
@@ -5,7 +5,6 @@ import (
 	"errors"
 	"fmt"
 	"reflect"
-	"sort"
 	"testing"
 
 	"k8s.io/apimachinery/pkg/labels"
@@ -942,11 +941,22 @@ status:
 				t.Fatalf("api.GetPodsFor() unexpected error, expected [%s] got: [%s]", exp.err, err)
 			}
 
-			sort.Sort(byPod(pods))
-			sort.Sort(byPod(k8sResultPods))
-			if !reflect.DeepEqual(pods, k8sResultPods) {
+			if len(pods) != len(k8sResultPods) {
 				t.Fatalf("Expected: %+v, Got: %+v", k8sResultPods, pods)
 			}
+
+			for _, pod := range pods {
+				found := false
+				for _, resultPod := range k8sResultPods {
+					if reflect.DeepEqual(pod, resultPod) {
+						found = true
+						break
+					}
+				}
+				if !found {
+					t.Fatalf("Expected: %+v, Got: %+v", k8sResultPods, pods)
+				}
+			}
 		}
 	})
 }
@@ -1348,11 +1358,22 @@ spec:
 				t.Fatalf("api.GetServicesFor() unexpected error, expected [%s] got: [%s]", exp.err, err)
 			}
 
-			sort.Sort(byService(k8sResultServices))
-			sort.Sort(byService(services))
-			if !reflect.DeepEqual(services, k8sResultServices) {
+			if len(services) != len(k8sResultServices) {
 				t.Fatalf("Expected: %+v, Got: %+v", k8sResultServices, services)
 			}
+
+			for _, service := range services {
+				found := false
+				for _, resultService := range k8sResultServices {
+					if reflect.DeepEqual(service, resultService) {
+						found = true
+						break
+					}
+				}
+				if !found {
+					t.Fatalf("Expected: %+v, Got: %+v", k8sResultServices, services)
+				}
+			}
 		}
 
 	})
diff --git a/controller/k8s/test_helper.go b/controller/k8s/test_helper.go
index 5a017951b..2b8f3aa95 100644
--- a/controller/k8s/test_helper.go
+++ b/controller/k8s/test_helper.go
@@ -2,7 +2,6 @@ package k8s
 
 import (
 	"github.com/linkerd/linkerd2/pkg/k8s"
-	corev1 "k8s.io/api/core/v1"
 )
 
 // NewFakeAPI provides a mock Kubernetes API for testing.
@@ -35,15 +34,3 @@ func NewFakeAPI(configs ...string) (*API, error) {
 		ES,
 	), nil
 }
-
-type byPod []*corev1.Pod
-
-func (bp byPod) Len() int           { return len(bp) }
-func (bp byPod) Swap(i, j int)      { bp[i], bp[j] = bp[j], bp[i] }
-func (bp byPod) Less(i, j int) bool { return bp[i].Name <= bp[j].Name }
-
-type byService []*corev1.Service
-
-func (bs byService) Len() int           { return len(bs) }
-func (bs byService) Swap(i, j int)      { bs[i], bs[j] = bs[j], bs[i] }
-func (bs byService) Less(i, j int) bool { return bs[i].Name <= bs[j].Name }
diff --git a/pkg/healthcheck/healthcheck_test.go b/pkg/healthcheck/healthcheck_test.go
index e3a3bfbac..6b38e08a7 100644
--- a/pkg/healthcheck/healthcheck_test.go
+++ b/pkg/healthcheck/healthcheck_test.go
@@ -1462,6 +1462,18 @@ func TestValidateControlPlanePods(t *testing.T) {
 		}
 	})
 
+	// This test is just for ensuring full coverage of the validateControlPlanePods function
+	t.Run("Returns an error if the only pod is not ready", func(t *testing.T) {
+		pods := []corev1.Pod{
+			pod("linkerd-proxy-injector-5f79ff4844-", corev1.PodRunning, false),
+		}
+
+		err := validateControlPlanePods(pods)
+		if err == nil {
+			t.Fatal("Expected error, got nothing")
+		}
+	})
+
 	t.Run("Returns nil if, HA mode, at least one pod of each control plane component is ready", func(t *testing.T) {
 		pods := []corev1.Pod{
 			pod("linkerd-destination-9843948665-48082", corev1.PodRunning, true),
diff --git a/test/integration/tracing/testdata/ingress.yaml b/test/integration/tracing/testdata/ingress.yaml
index 14b54f6e5..0df572e9b 100644
--- a/test/integration/tracing/testdata/ingress.yaml
+++ b/test/integration/tracing/testdata/ingress.yaml
@@ -71,21 +71,25 @@ subjects:
   name: default
   namespace: ___INGRESS_NAMESPACE___
 ---
-apiVersion: extensions/v1beta1
+apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
   name: web-nginx
   annotations:
-    kubernetes.io/ingress.class: nginx
     nginx.ingress.kubernetes.io/configuration-snippet: |
       proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:80;
 spec:
+  ingressClassName: nginx
   rules:
   - http:
       paths:
-      - backend:
-          serviceName: web-svc
-          servicePort: 80
+      - path: /
+        pathType: Prefix
+        backend:
+          service:
+            name: web-svc
+            port:
+              number: 80
 ---
 apiVersion: v1
 kind: ConfigMap
diff --git a/viz/tap/api/grpc_server_test.go b/viz/tap/api/grpc_server_test.go
index b8ba706cb..d82f625c4 100644
--- a/viz/tap/api/grpc_server_test.go
+++ b/viz/tap/api/grpc_server_test.go
@@ -39,6 +39,7 @@ func (m *mockTapByResourceServer) Send(event *tapPb.TapEvent) error {
 
 // mockProxyTapServer satisfies proxy.tap.TapServer
 type mockProxyTapServer struct {
+	proxy.UnimplementedTapServer
 	mockControllerServer mockTapByResourceServer // for cancellation
 	ctx                  context.Context
 }