Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package linkerd-cli-edge for
openSUSE:Factory checked in at 2026-04-18 21:38:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/linkerd-cli-edge (Old)
and /work/SRC/openSUSE:Factory/.linkerd-cli-edge.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "linkerd-cli-edge"
Sat Apr 18 21:38:58 2026 rev:72 rq:1347858 version:26.4.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/linkerd-cli-edge/linkerd-cli-edge.changes
2026-04-11 22:30:11.769769634 +0200
+++
/work/SRC/openSUSE:Factory/.linkerd-cli-edge.new.11940/linkerd-cli-edge.changes
2026-04-18 21:39:00.104033972 +0200
@@ -1,0 +2,13 @@
+Fri Apr 17 20:01:19 UTC 2026 - Johannes Kastl
<[email protected]>
+
+- Update to version 26.4.3:
+ * build(deps): bump rand from 0.10.0 to 0.10.1 (#15162)
+ * build(deps): bump cc from 1.2.59 to 1.2.60 (#15161)
+ * build(deps): bump rustls-webpki from 0.103.10 to 0.103.11
+ (#15160)
+ * build(deps): bump golang.org/x/tools from 0.43.0 to 0.44.0
+ (#15153)
+ * build(deps): bump helm.sh/helm/v3 from 3.20.1 to 3.20.2
+ (#15154)
+
+-------------------------------------------------------------------
Old:
----
linkerd-cli-edge-26.4.2.obscpio
New:
----
linkerd-cli-edge-26.4.3.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ linkerd-cli-edge.spec ++++++
--- /var/tmp/diff_new_pack.OwDmMt/_old 2026-04-18 21:39:03.756183529 +0200
+++ /var/tmp/diff_new_pack.OwDmMt/_new 2026-04-18 21:39:03.760183693 +0200
@@ -19,7 +19,7 @@
%define linkerd_executable_name linkerd
Name: linkerd-cli-edge
-Version: 26.4.2
+Version: 26.4.3
Release: 0
Summary: CLI for the linkerd service mesh for Kubernetes
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.OwDmMt/_old 2026-04-18 21:39:03.796185168 +0200
+++ /var/tmp/diff_new_pack.OwDmMt/_new 2026-04-18 21:39:03.800185331 +0200
@@ -3,7 +3,7 @@
<param name="url">https://github.com/linkerd/linkerd2</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="revision">edge-26.4.2</param>
+ <param name="revision">edge-26.4.3</param>
<param name="match-tag">edge-*.*.*</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">edge-(.*)</param>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.OwDmMt/_old 2026-04-18 21:39:03.820186151 +0200
+++ /var/tmp/diff_new_pack.OwDmMt/_new 2026-04-18 21:39:03.824186314 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/linkerd/linkerd2</param>
- <param
name="changesrevision">cda7b5cbafb58d3aeab313e3f5fc51c0e63e1a5b</param></service></servicedata>
+ <param
name="changesrevision">8ca8bbcfdc58e6433925c617529d39bf48b777c3</param></service></servicedata>
(No newline at EOF)
++++++ linkerd-cli-edge-26.4.2.obscpio -> linkerd-cli-edge-26.4.3.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/.proxy-version
new/linkerd-cli-edge-26.4.3/.proxy-version
--- old/linkerd-cli-edge-26.4.2/.proxy-version 2026-04-09 21:36:43.000000000
+0200
+++ new/linkerd-cli-edge-26.4.3/.proxy-version 2026-04-15 19:26:10.000000000
+0200
@@ -1 +1 @@
-v2.348.0
+v2.349.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/Cargo.lock
new/linkerd-cli-edge-26.4.3/Cargo.lock
--- old/linkerd-cli-edge-26.4.2/Cargo.lock 2026-04-09 21:36:43.000000000
+0200
+++ new/linkerd-cli-edge-26.4.3/Cargo.lock 2026-04-15 19:26:10.000000000
+0200
@@ -219,9 +219,9 @@
[[package]]
name = "cc"
-version = "1.2.59"
+version = "1.2.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283"
+checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -1508,7 +1508,7 @@
"linkerd-policy-controller-k8s-api",
"linkerd2-proxy-api",
"maplit",
- "rand 0.10.0",
+ "rand 0.10.1",
"regex",
"schemars",
"serde",
@@ -1936,9 +1936,9 @@
[[package]]
name = "rand"
-version = "0.10.0"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8"
+checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207"
dependencies = [
"chacha20",
"getrandom 0.4.1",
@@ -2111,9 +2111,9 @@
[[package]]
name = "rustls-webpki"
-version = "0.103.10"
+version = "0.103.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef"
+checksum = "20a6af516fea4b20eccceaf166e8aa666ac996208e8a644ce3ef5aa783bc7cd4"
dependencies = [
"aws-lc-rs",
"ring",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/bin/_test-helpers.sh
new/linkerd-cli-edge-26.4.3/bin/_test-helpers.sh
--- old/linkerd-cli-edge-26.4.2/bin/_test-helpers.sh 2026-04-09
21:36:43.000000000 +0200
+++ new/linkerd-cli-edge-26.4.3/bin/_test-helpers.sh 2026-04-15
19:26:10.000000000 +0200
@@ -5,7 +5,7 @@
set +e
k8s_version_min='+v1.23'
-k8s_version_max='docker.io/rancher/k3s:v1.31.5-k3s1'
+k8s_version_max='docker.io/rancher/k3s:v1.35.3-k3s1'
bindir=$( cd "${BASH_SOURCE[0]%/*}" && pwd )
testdir=$bindir/../test/integration
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/cli/cmd/doc.go
new/linkerd-cli-edge-26.4.3/cli/cmd/doc.go
--- old/linkerd-cli-edge-26.4.2/cli/cmd/doc.go 2026-04-09 21:36:43.000000000
+0200
+++ new/linkerd-cli-edge-26.4.3/cli/cmd/doc.go 2026-04-15 19:26:10.000000000
+0200
@@ -288,5 +288,9 @@
Name: k8s.ProxyEnableNativeSidecarAnnotationBeta,
Description: "Enable KEP-753 native sidecars. This is a
beta feature. It requires Kubernetes >= 1.29. If enabled,
.proxy.waitBeforeExitSeconds should not be used.",
},
+ {
+ Name: k8s.ProxyAdditionalEnvAnnotation,
+ Description: "Set additional proxy environment
variables via a JSON-encoded list of Kubernetes EnvVar objects. Env vars are
merged by name across three layers with increasing precedence: Helm
proxy.additionalEnv < namespace annotation < workload annotation.
Higher-precedence layers override entries with the same env var name rather
than replacing the entire list.",
+ },
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/go.mod
new/linkerd-cli-edge-26.4.3/go.mod
--- old/linkerd-cli-edge-26.4.2/go.mod 2026-04-09 21:36:43.000000000 +0200
+++ new/linkerd-cli-edge-26.4.3/go.mod 2026-04-15 19:26:10.000000000 +0200
@@ -35,12 +35,12 @@
github.com/spf13/cobra v1.10.2
github.com/spf13/pflag v1.0.10
go.opencensus.io v0.24.0
- golang.org/x/tools v0.43.0
+ golang.org/x/tools v0.44.0
google.golang.org/grpc v1.80.0
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.1
google.golang.org/protobuf v1.36.11
gopkg.in/yaml.v2 v2.4.0
- helm.sh/helm/v3 v3.20.1
+ helm.sh/helm/v3 v3.20.2
k8s.io/api v0.35.3
k8s.io/apiextensions-apiserver v0.35.3
k8s.io/apimachinery v0.35.3
@@ -56,7 +56,7 @@
require (
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
- golang.org/x/net v0.52.0 // indirect
+ golang.org/x/net v0.53.0 // indirect
)
require (
@@ -141,14 +141,14 @@
go.opentelemetry.io/otel/trace v1.39.0 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
- golang.org/x/crypto v0.49.0 // indirect
- golang.org/x/mod v0.34.0 // indirect
+ golang.org/x/crypto v0.50.0 // indirect
+ golang.org/x/mod v0.35.0 // indirect
golang.org/x/oauth2 v0.34.0 // indirect
golang.org/x/sync v0.20.0 // indirect
- golang.org/x/sys v0.42.0 // indirect
- golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c // indirect
- golang.org/x/term v0.41.0 // indirect
- golang.org/x/text v0.35.0 // indirect
+ golang.org/x/sys v0.43.0 // indirect
+ golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa // indirect
+ golang.org/x/term v0.42.0 // indirect
+ golang.org/x/text v0.36.0 // indirect
golang.org/x/time v0.12.0 // indirect
golang.org/x/tools/godoc v0.1.0-deprecated // indirect
google.golang.org/api v0.143.0 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/go.sum
new/linkerd-cli-edge-26.4.3/go.sum
--- old/linkerd-cli-edge-26.4.2/go.sum 2026-04-09 21:36:43.000000000 +0200
+++ new/linkerd-cli-edge-26.4.3/go.sum 2026-04-15 19:26:10.000000000 +0200
@@ -469,8 +469,8 @@
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
-golang.org/x/crypto v0.49.0/go.mod
h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
+golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
+golang.org/x/crypto v0.50.0/go.mod
h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod
h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod
h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod
h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -500,8 +500,8 @@
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod
h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod
h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI=
-golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY=
+golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM=
+golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -522,8 +522,8 @@
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod
h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod
h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod
h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=
-golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=
+golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
+golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod
h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod
h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod
h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -562,19 +562,19 @@
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
-golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
-golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c
h1:6a8FdnNk6bTXBjR4AGKFgUKuo+7GnR3FX5L7CbveeZc=
-golang.org/x/telemetry v0.0.0-20260311193753-579e4da9a98c/go.mod
h1:TpUTTEp9frx7rTdLpC9gFG9kdI7zVLFTFFlqaH2Cncw=
-golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU=
-golang.org/x/term v0.41.0/go.mod
h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A=
+golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
+golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa
h1:efT73AJZfAAUV7SOip6pWGkwJDzIGiKBZGVzHYa+ve4=
+golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod
h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE=
+golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY=
+golang.org/x/term v0.42.0/go.mod
h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod
h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod
h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
-golang.org/x/text v0.35.0/go.mod
h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
+golang.org/x/text v0.36.0/go.mod
h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod
h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod
h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod
h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -610,8 +610,8 @@
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod
h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod
h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod
h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s=
-golang.org/x/tools v0.43.0/go.mod
h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0=
+golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c=
+golang.org/x/tools v0.44.0/go.mod
h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI=
golang.org/x/tools/go/expect v0.1.1-deprecated
h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM=
golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod
h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated
h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM=
@@ -710,8 +710,8 @@
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-helm.sh/helm/v3 v3.20.1 h1:T8PodUaH1UwNvE+imUA2mIKjJItY8g7CVvLVP5g4NzI=
-helm.sh/helm/v3 v3.20.1/go.mod h1:Fl1kBaWCpkUrM6IYXPjQ3bdZQfFrogKArqptvueZ6Ww=
+helm.sh/helm/v3 v3.20.2 h1:binM4rvPx5DcNsa1sIt7UZi55lRbu3pZUFmQkSoRh48=
+helm.sh/helm/v3 v3.20.2/go.mod h1:Fl1kBaWCpkUrM6IYXPjQ3bdZQfFrogKArqptvueZ6Ww=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod
h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod
h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod
h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/pkg/inject/inject.go
new/linkerd-cli-edge-26.4.3/pkg/inject/inject.go
--- old/linkerd-cli-edge-26.4.2/pkg/inject/inject.go 2026-04-09
21:36:43.000000000 +0200
+++ new/linkerd-cli-edge-26.4.3/pkg/inject/inject.go 2026-04-15
19:26:10.000000000 +0200
@@ -11,6 +11,7 @@
"net"
"reflect"
"regexp"
+ "slices"
"sort"
"strconv"
"strings"
@@ -79,6 +80,7 @@
k8s.ProxyDisableOutboundProtocolDetectTimeout,
k8s.ProxyDisableInboundProtocolDetectTimeout,
k8s.ProxyEnableNativeSidecarAnnotationBeta,
+ k8s.ProxyAdditionalEnvAnnotation,
}
// ProxyAlphaConfigAnnotations is the list of all alpha configuration
// (config.alpha prefix) that can be applied to a pod or namespace.
@@ -201,9 +203,67 @@
}
ApplyAnnotationOverrides(copyValues, rc.GetAnnotationOverrides(),
rc.GetLabelOverrides(), namedPorts)
+ MergeAdditionalEnv(copyValues, rc.GetNsAnnotations(),
rc.GetWorkloadAnnotations())
return copyValues, nil
}
+// parseAdditionalEnvAnnotation parses a JSON-encoded list of Kubernetes EnvVar
+// objects from the given annotation value. Returns nil if the value is empty.
+func parseAdditionalEnvAnnotation(value string) ([]corev1.EnvVar, error) {
+ if value == "" {
+ return nil, nil
+ }
+ var envVars []corev1.EnvVar
+ if err := json.Unmarshal([]byte(value), &envVars); err != nil {
+ return nil, fmt.Errorf("invalid JSON in %s annotation: %w",
k8s.ProxyAdditionalEnvAnnotation, err)
+ }
+ return envVars, nil
+}
+
+// mergeEnvByName merges src into dst by env var name. Entries in src with
+// the same name as an entry in dst replace it; new entries are appended.
+func mergeEnvByName(dst, src []corev1.EnvVar) []corev1.EnvVar {
+ if len(src) == 0 {
+ return dst
+ }
+ result := slices.Clone(dst)
+ for _, s := range src {
+ if i := slices.IndexFunc(result, func(e corev1.EnvVar) bool {
return e.Name == s.Name }); i >= 0 {
+ result[i] = s
+ } else {
+ result = append(result, s)
+ }
+ }
+ return result
+}
+
+// MergeAdditionalEnv merges proxy additional env vars from three layers:
+// 1. proxy.additionalEnv from Helm values (already in
values.Proxy.AdditionalEnv)
+// 2. Namespace-level proxy-additional-env annotation
+// 3. Workload-level proxy-additional-env annotation
+// Higher-precedence layers override entries with the same env var name.
+func MergeAdditionalEnv(values *l5dcharts.Values, nsAnnotations
map[string]string, workloadAnnotations map[string]string) {
+ nsEnvStr := nsAnnotations[k8s.ProxyAdditionalEnvAnnotation]
+ if nsEnvStr != "" {
+ nsEnv, err := parseAdditionalEnvAnnotation(nsEnvStr)
+ if err != nil {
+ log.Warnf("%s", err)
+ } else {
+ values.Proxy.AdditionalEnv =
mergeEnvByName(values.Proxy.AdditionalEnv, nsEnv)
+ }
+ }
+
+ wlEnvStr := workloadAnnotations[k8s.ProxyAdditionalEnvAnnotation]
+ if wlEnvStr != "" {
+ wlEnv, err := parseAdditionalEnvAnnotation(wlEnvStr)
+ if err != nil {
+ log.Warnf("%s", err)
+ } else {
+ values.Proxy.AdditionalEnv =
mergeEnvByName(values.Proxy.AdditionalEnv, wlEnv)
+ }
+ }
+}
+
func ApplyAnnotationOverrides(values *l5dcharts.Values, annotations
map[string]string, labels map[string]string, namedPorts map[string]int32) {
if override, ok := annotations[k8s.ProxyInjectAnnotation]; ok {
if override == k8s.ProxyInjectIngress {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/pkg/inject/inject_test.go
new/linkerd-cli-edge-26.4.3/pkg/inject/inject_test.go
--- old/linkerd-cli-edge-26.4.2/pkg/inject/inject_test.go 2026-04-09
21:36:43.000000000 +0200
+++ new/linkerd-cli-edge-26.4.3/pkg/inject/inject_test.go 2026-04-15
19:26:10.000000000 +0200
@@ -404,6 +404,118 @@
}
}
+func TestMergeAdditionalEnv(t *testing.T) {
+ testCases := []struct {
+ id string
+ helmAdditionalEnv []corev1.EnvVar
+ nsAnnotations map[string]string
+ workloadAnnotations map[string]string
+ expected []corev1.EnvVar
+ }{
+ {
+ id: "no annotations, helm only",
+ helmAdditionalEnv: []corev1.EnvVar{
+ {Name: "FOO", Value: "helm"},
+ },
+ nsAnnotations: map[string]string{},
+ workloadAnnotations: map[string]string{},
+ expected: []corev1.EnvVar{
+ {Name: "FOO", Value: "helm"},
+ },
+ },
+ {
+ id: "namespace annotation adds env vars",
+ helmAdditionalEnv: nil,
+ nsAnnotations: map[string]string{
+ k8s.ProxyAdditionalEnvAnnotation:
`[{"name":"BAR","value":"ns"}]`,
+ },
+ workloadAnnotations: map[string]string{},
+ expected: []corev1.EnvVar{
+ {Name: "BAR", Value: "ns"},
+ },
+ },
+ {
+ id: "workload overrides namespace by
name",
+ helmAdditionalEnv: nil,
+ nsAnnotations: map[string]string{
+ k8s.ProxyAdditionalEnvAnnotation:
`[{"name":"BACKLOG","value":"4096"},{"name":"OTHER","value":"ns"}]`,
+ },
+ workloadAnnotations: map[string]string{
+ k8s.ProxyAdditionalEnvAnnotation:
`[{"name":"BACKLOG","value":"8192"}]`,
+ },
+ expected: []corev1.EnvVar{
+ {Name: "BACKLOG", Value: "8192"},
+ {Name: "OTHER", Value: "ns"},
+ },
+ },
+ {
+ id: "three-layer merge: helm < namespace < workload",
+ helmAdditionalEnv: []corev1.EnvVar{
+ {Name: "A", Value: "helm"},
+ {Name: "B", Value: "helm"},
+ },
+ nsAnnotations: map[string]string{
+ k8s.ProxyAdditionalEnvAnnotation:
`[{"name":"B","value":"ns"},{"name":"C","value":"ns"}]`,
+ },
+ workloadAnnotations: map[string]string{
+ k8s.ProxyAdditionalEnvAnnotation:
`[{"name":"C","value":"wl"}]`,
+ },
+ expected: []corev1.EnvVar{
+ {Name: "A", Value: "helm"},
+ {Name: "B", Value: "ns"},
+ {Name: "C", Value: "wl"},
+ },
+ },
+ {
+ id: "invalid JSON in namespace is
skipped",
+ helmAdditionalEnv: nil,
+ nsAnnotations: map[string]string{
+ k8s.ProxyAdditionalEnvAnnotation: `not-json`,
+ },
+ workloadAnnotations: map[string]string{
+ k8s.ProxyAdditionalEnvAnnotation:
`[{"name":"OK","value":"wl"}]`,
+ },
+ expected: []corev1.EnvVar{
+ {Name: "OK", Value: "wl"},
+ },
+ },
+ {
+ id: "invalid JSON in workload is
skipped",
+ helmAdditionalEnv: nil,
+ nsAnnotations: map[string]string{
+ k8s.ProxyAdditionalEnvAnnotation:
`[{"name":"NS","value":"ok"}]`,
+ },
+ workloadAnnotations: map[string]string{
+ k8s.ProxyAdditionalEnvAnnotation: `{bad`,
+ },
+ expected: []corev1.EnvVar{
+ {Name: "NS", Value: "ok"},
+ },
+ },
+ {
+ id: "no annotations and no helm",
+ helmAdditionalEnv: nil,
+ nsAnnotations: map[string]string{},
+ workloadAnnotations: map[string]string{},
+ expected: nil,
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.id, func(t *testing.T) {
+ values := &l5dcharts.Values{
+ Proxy: &l5dcharts.Proxy{
+ AdditionalEnv: tc.helmAdditionalEnv,
+ },
+ }
+ MergeAdditionalEnv(values, tc.nsAnnotations,
tc.workloadAnnotations)
+ if diff := deep.Equal(values.Proxy.AdditionalEnv,
tc.expected); diff != nil {
+ t.Errorf("%+v", diff)
+ }
+ })
+ }
+}
+
func TestWholeCPUCores(t *testing.T) {
for _, c := range []struct {
v string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/pkg/k8s/labels.go
new/linkerd-cli-edge-26.4.3/pkg/k8s/labels.go
--- old/linkerd-cli-edge-26.4.2/pkg/k8s/labels.go 2026-04-09
21:36:43.000000000 +0200
+++ new/linkerd-cli-edge-26.4.3/pkg/k8s/labels.go 2026-04-15
19:26:10.000000000 +0200
@@ -323,6 +323,16 @@
// graceful shutdowns in the proxy.
ProxyShutdownGracePeriodAnnotation = ProxyConfigAnnotationsPrefix +
"/shutdown-grace-period"
+ // ProxyAdditionalEnvAnnotation allows setting additional proxy
environment
+ // variables via a JSON-encoded list of Kubernetes EnvVar objects.
+ // Unlike other override annotations, this annotation is not inherited
+ // wholesale from the namespace. Instead, env vars are merged by name
+ // across three layers with increasing precedence:
+ // Helm proxy.additionalEnv < namespace annotation < workload
annotation.
+ // Entries from higher-precedence layers override entries with the same
+ // env var name rather than replacing the entire list.
+ ProxyAdditionalEnvAnnotation = ProxyConfigAnnotationsPrefix +
"/proxy-additional-env"
+
/*
* Component Names
*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/linkerd-cli-edge-26.4.2/test/integration/install/inject/inject_test.go
new/linkerd-cli-edge-26.4.3/test/integration/install/inject/inject_test.go
--- old/linkerd-cli-edge-26.4.2/test/integration/install/inject/inject_test.go
2026-04-09 21:36:43.000000000 +0200
+++ new/linkerd-cli-edge-26.4.3/test/integration/install/inject/inject_test.go
2026-04-15 19:26:10.000000000 +0200
@@ -222,6 +222,7 @@
k8s.ProxyInjectAnnotation: k8s.ProxyInjectEnabled,
k8s.ProxyCPURequestAnnotation: nsProxyCPUReq,
k8s.ProxyMemoryRequestAnnotation: nsProxyMemReq,
+ k8s.ProxyAdditionalEnvAnnotation:
`[{"name":"NS_VAR","value":"ns_val"},{"name":"SHARED_VAR","value":"from_ns"}]`,
}
ctx := context.Background()
@@ -230,7 +231,8 @@
// Pod Level proxy configuration override
podProxyCPUReq := "600m"
podAnnotations := map[string]string{
- k8s.ProxyCPURequestAnnotation: podProxyCPUReq,
+ k8s.ProxyCPURequestAnnotation: podProxyCPUReq,
+ k8s.ProxyAdditionalEnvAnnotation:
`[{"name":"POD_VAR","value":"pod_val"},{"name":"SHARED_VAR","value":"from_pod"}]`,
}
patchedYAML, err := testutil.PatchDeploy(injectYAML,
deployName, podAnnotations)
@@ -267,6 +269,22 @@
if proxyContainer.Resources.Requests["cpu"] !=
resource.MustParse(podProxyCPUReq) {
testutil.Fatalf(t, "proxy cpu resource request failed
to match with pod level override")
}
+
+ // Match proxy-additional-env merge semantics: ns sets
NS_VAR+SHARED_VAR,
+ // pod sets POD_VAR+SHARED_VAR; pod takes precedence for
SHARED_VAR
+ envMap := make(map[string]string)
+ for _, e := range proxyContainer.Env {
+ envMap[e.Name] = e.Value
+ }
+ if envMap["NS_VAR"] != "ns_val" {
+ testutil.Fatalf(t, "proxy NS_VAR failed to match
namespace-level proxy-additional-env annotation")
+ }
+ if envMap["POD_VAR"] != "pod_val" {
+ testutil.Fatalf(t, "proxy POD_VAR failed to match
pod-level proxy-additional-env annotation")
+ }
+ if envMap["SHARED_VAR"] != "from_pod" {
+ testutil.Fatalf(t, "proxy SHARED_VAR failed to be
overridden by pod-level proxy-additional-env annotation")
+ }
})
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/linkerd-cli-edge-26.4.2/testutil/inject.go
new/linkerd-cli-edge-26.4.3/testutil/inject.go
--- old/linkerd-cli-edge-26.4.2/testutil/inject.go 2026-04-09
21:36:43.000000000 +0200
+++ new/linkerd-cli-edge-26.4.3/testutil/inject.go 2026-04-15
19:26:10.000000000 +0200
@@ -38,7 +38,7 @@
ops = append(ops, `{"op": "add", "path":
"/spec/template/metadata/annotations", "value": {}}`)
for k, v := range annotations {
ops = append(ops,
- fmt.Sprintf(`{"op": "add", "path":
"/spec/template/metadata/annotations/%s", "value": "%s"}`,
strings.ReplaceAll(k, "/", "~1"), v),
+ fmt.Sprintf(`{"op": "add", "path":
"/spec/template/metadata/annotations/%s", "value": %q}`, strings.ReplaceAll(k,
"/", "~1"), v),
)
}
}
++++++ linkerd-cli-edge.obsinfo ++++++
--- /var/tmp/diff_new_pack.OwDmMt/_old 2026-04-18 21:39:05.316247415 +0200
+++ /var/tmp/diff_new_pack.OwDmMt/_new 2026-04-18 21:39:05.324247742 +0200
@@ -1,5 +1,5 @@
name: linkerd-cli-edge
-version: 26.4.2
-mtime: 1775763403
-commit: cda7b5cbafb58d3aeab313e3f5fc51c0e63e1a5b
+version: 26.4.3
+mtime: 1776273970
+commit: 8ca8bbcfdc58e6433925c617529d39bf48b777c3
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/linkerd-cli-edge/vendor.tar.gz
/work/SRC/openSUSE:Factory/.linkerd-cli-edge.new.11940/vendor.tar.gz differ:
char 13, line 1