Skip to content

Commit 4227de3

Browse files
author
openshift-service-mesh-bot
committed
Automator: merge upstream changes to openshift-service-mesh/istio@master
* upstream/master: Automator: update proxy@master in istio/istio@master (#58383) Automator: update proxy@master in istio/istio@master (#58382) Automator: update proxy@master in istio/istio@master (#58380) Automator: update ztunnel@master in istio/istio@master (#58378) Automator: update proxy@master in istio/istio@master (#58375) fix unerasonable variable setting (#58371) bump go-control-plane (#58370) xds: fix cache key for cluster (#58368) Automator: update istio/client-go@master dependency in istio/istio@master (#58361) Automator: update proxy@master in istio/istio@master (#58358) tests: add integration tests for BackendTLSPolicy applied to ServiceEntry (#58242) Prevent route resource status conflict in multi-revision installs (#58292) add release-note for warmup aggression change (#58339)
2 parents 73e12de + b2f713a commit 4227de3

File tree

16 files changed

+288
-46
lines changed

16 files changed

+288
-46
lines changed

go.mod

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ require (
1212
github.com/cenkalti/backoff/v4 v4.3.0
1313
github.com/cespare/xxhash/v2 v2.3.0
1414
github.com/cheggaaa/pb/v3 v3.1.7
15-
github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443
15+
github.com/cncf/xds/go v0.0.0-20251110193048-8bfbf64dc13e
1616
github.com/containernetworking/cni v1.3.0
1717
github.com/containernetworking/plugins v1.7.1
1818
github.com/coreos/go-oidc/v3 v3.15.0
1919
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
2020
github.com/docker/cli v28.3.3+incompatible
2121
github.com/envoyproxy/go-control-plane/contrib v1.32.5-0.20250627145903-197b96a9c7f8
22-
github.com/envoyproxy/go-control-plane/envoy v1.35.1-0.20251009075907-cccc37f025be
22+
github.com/envoyproxy/go-control-plane/envoy v1.36.1-0.20251120180717-7c66c7f1d0b2
2323
github.com/evanphx/json-patch/v5 v5.9.11
2424
github.com/fatih/color v1.18.0
2525
github.com/felixge/fgprof v0.9.5
@@ -76,7 +76,7 @@ require (
7676
go.opentelemetry.io/otel/sdk v1.37.0
7777
go.opentelemetry.io/otel/sdk/metric v1.37.0
7878
go.opentelemetry.io/otel/trace v1.37.0
79-
go.opentelemetry.io/proto/otlp v1.7.1
79+
go.opentelemetry.io/proto/otlp v1.9.0
8080
go.uber.org/atomic v1.11.0
8181
go.uber.org/zap v1.27.0
8282
golang.org/x/net v0.46.0
@@ -93,8 +93,8 @@ require (
9393
gopkg.in/yaml.v2 v2.4.0
9494
gopkg.in/yaml.v3 v3.0.1
9595
helm.sh/helm/v3 v3.18.6
96-
istio.io/api v1.28.0-alpha.0.0.20251118133802-3d6b80ec2d1e
97-
istio.io/client-go v1.28.0-alpha.0.0.20251118134000-fa71d5732509
96+
istio.io/api v1.28.0-alpha.0.0.20251120193503-cb15a6cf0002
97+
istio.io/client-go v1.28.0-alpha.0.0.20251120193902-c79fe2483377
9898
k8s.io/api v0.34.1
9999
k8s.io/apiextensions-apiserver v0.34.1
100100
k8s.io/apimachinery v0.34.1
@@ -134,7 +134,6 @@ require (
134134
github.com/docker/distribution v2.8.3+incompatible // indirect
135135
github.com/docker/docker-credential-helpers v0.9.3 // indirect
136136
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
137-
github.com/envoyproxy/go-control-plane v0.13.5-0.20251013064519-48f97e33cb02 // indirect
138137
github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect
139138
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
140139
github.com/fatih/camelcase v1.0.0 // indirect
@@ -154,7 +153,7 @@ require (
154153
github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect
155154
github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect
156155
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
157-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect
156+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect
158157
github.com/hashicorp/errwrap v1.1.0 // indirect
159158
github.com/huandu/xstrings v1.5.0 // indirect
160159
github.com/inconshreveable/mousetrap v1.1.0 // indirect

go.sum

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moA
9494
github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=
9595
github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=
9696
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
97-
github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls=
98-
github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
97+
github.com/cncf/xds/go v0.0.0-20251110193048-8bfbf64dc13e h1:gt7U1Igw0xbJdyaCM5H2CnlAlPSkzrhsebQB6WQWjLA=
98+
github.com/cncf/xds/go v0.0.0-20251110193048-8bfbf64dc13e/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
9999
github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8=
100100
github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU=
101101
github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40=
@@ -133,12 +133,12 @@ github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqI
133133
github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
134134
github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
135135
github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
136-
github.com/envoyproxy/go-control-plane v0.13.5-0.20251013064519-48f97e33cb02 h1:VbmMEM1sWPDGm+v2MIa5dD55Ad/KrRXhARGJANxBV6U=
137-
github.com/envoyproxy/go-control-plane v0.13.5-0.20251013064519-48f97e33cb02/go.mod h1:Alz8LEClvR7xKsrq3qzoc4N0guvVNSS8KmSChGYr9hs=
136+
github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
137+
github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
138138
github.com/envoyproxy/go-control-plane/contrib v1.32.5-0.20250627145903-197b96a9c7f8 h1:KXgXPtBofHkRHr+8dO058dGZnLHapW7m0yJEgSYdAFA=
139139
github.com/envoyproxy/go-control-plane/contrib v1.32.5-0.20250627145903-197b96a9c7f8/go.mod h1:Nx/YcyEeIcgjT13QwKHdcPmS060urxZ835MeO8cLOrg=
140-
github.com/envoyproxy/go-control-plane/envoy v1.35.1-0.20251009075907-cccc37f025be h1:u4SE0TvJwGK/iDu9YIK4zd16VOn19pBRSuKOm9KRskA=
141-
github.com/envoyproxy/go-control-plane/envoy v1.35.1-0.20251009075907-cccc37f025be/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98=
140+
github.com/envoyproxy/go-control-plane/envoy v1.36.1-0.20251120180717-7c66c7f1d0b2 h1:BprNEu/ZERE6ACMAisXf1H8/1HmDseGxpvD70ltXiqo=
141+
github.com/envoyproxy/go-control-plane/envoy v1.36.1-0.20251120180717-7c66c7f1d0b2/go.mod h1:6DQL0WI2n/JV923ZcB8Pr3Xi28osKAWBPpo/jDIKL6U=
142142
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
143143
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
144144
github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8=
@@ -235,8 +235,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 h1:sGm2vDRFUrQJO/Veii4h4z
235235
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2/go.mod h1:wd1YpapPLivG6nQgbf7ZkG1hhSOXDhhn4MLTknx2aAc=
236236
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
237237
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
238-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww=
239-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90=
238+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU=
239+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs=
240240
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
241241
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
242242
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -470,8 +470,8 @@ go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFh
470470
go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps=
471471
go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4=
472472
go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
473-
go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOVAtj4=
474-
go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE=
473+
go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A=
474+
go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4=
475475
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
476476
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
477477
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
@@ -574,10 +574,10 @@ gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
574574
gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
575575
helm.sh/helm/v3 v3.18.6 h1:S/2CqcYnNfLckkHLI0VgQbxgcDaU3N4A/46E3n9wSNY=
576576
helm.sh/helm/v3 v3.18.6/go.mod h1:L/dXDR2r539oPlFP1PJqKAC1CUgqHJDLkxKpDGrWnyg=
577-
istio.io/api v1.28.0-alpha.0.0.20251118133802-3d6b80ec2d1e h1:qfJY+yQTjm0AWhPXITGSAGCLkujfBGh0Hu3RuXQeyq4=
578-
istio.io/api v1.28.0-alpha.0.0.20251118133802-3d6b80ec2d1e/go.mod h1:BD3qv/ekm16kvSgvSpuiDawgKhEwG97wx849CednJSg=
579-
istio.io/client-go v1.28.0-alpha.0.0.20251118134000-fa71d5732509 h1:U0SrRSda3au07r6b4ZbHa+NeKXkV4mVofPvTlQMF7oA=
580-
istio.io/client-go v1.28.0-alpha.0.0.20251118134000-fa71d5732509/go.mod h1:G0jE4yjFmzhXjlTAi6/TYvE8jjFaWM34EpR9OfIb4Ac=
577+
istio.io/api v1.28.0-alpha.0.0.20251120193503-cb15a6cf0002 h1:GmCiNi/TnMKpKIu0r5WSTir1W/Mc+2D9HI/dMp+7zPA=
578+
istio.io/api v1.28.0-alpha.0.0.20251120193503-cb15a6cf0002/go.mod h1:BD3qv/ekm16kvSgvSpuiDawgKhEwG97wx849CednJSg=
579+
istio.io/client-go v1.28.0-alpha.0.0.20251120193902-c79fe2483377 h1:ghagEGUxUsjpvbgR6Llr8xaN3kObAk2zJbnWquRhP+s=
580+
istio.io/client-go v1.28.0-alpha.0.0.20251120193902-c79fe2483377/go.mod h1:K9qmUWxQPP5Ltt7fbTmDqHaSUm9iMF5co3dvZsl++P0=
581581
k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM=
582582
k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk=
583583
k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=

istio.deps

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"name": "PROXY_REPO_SHA",
55
"repoName": "proxy",
66
"file": "",
7-
"lastStableSHA": "c3cad09527225b6a98dbf46ce81d066c580e038f"
7+
"lastStableSHA": "8c3774f0406f5ee714ba63758c8a03d7f6a22219"
88
},
99
{
1010
"_comment": "",
1111
"name": "ZTUNNEL_REPO_SHA",
1212
"repoName": "ztunnel",
1313
"file": "",
14-
"lastStableSHA": "d38548df2d52604a996d601cf2c69e8f3461cb76"
14+
"lastStableSHA": "8ece3c4b191da41e64d8e48b1965ef7291fc1557"
1515
}
1616
]

istioctl/pkg/waypoint/waypoint.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,7 @@ func errorWithMessage(errMsg string, gwc *gateway.Gateway, err error) error {
600600
return errors.New(errorMsg)
601601
}
602602

603-
func printWaypointStatus(ctx cli.Context, w *tabwriter.Writer, kubeClient kube.CLIClient, gw []gateway.Gateway) error {
603+
func printWaypointStatus(ctx cli.Context, w *tabwriter.Writer, kubeClient kube.CLIClient, gws []gateway.Gateway) error {
604604
var cond metav1.Condition
605605
startTime := time.Now()
606606
ticker := time.NewTicker(1 * time.Second)
@@ -610,7 +610,7 @@ func printWaypointStatus(ctx cli.Context, w *tabwriter.Writer, kubeClient kube.C
610610
} else {
611611
fmt.Fprintln(w, "NAME\tSTATUS\tTYPE\tREASON\tMESSAGE")
612612
}
613-
for _, gw := range gw {
613+
for _, gw := range gws {
614614
for range ticker.C {
615615
programmed := false
616616
gwc, err := kubeClient.GatewayAPI().GatewayV1().Gateways(ctx.NamespaceOrDefault(ctx.Namespace())).Get(context.TODO(), gw.Name, metav1.GetOptions{})

manifests/charts/base/files/crd-all.gen.yaml

Lines changed: 32 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pilot/pkg/config/kube/gateway/backend_policies.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,14 @@ func DestinationRuleCollection(
133133
opts krt.OptionsBuilder,
134134
) krt.Collection[*config.Config] {
135135
trafficPolicyStatus, backendTrafficPolicies := BackendTrafficPolicyCollection(trafficPolicies, references, domainSuffix, opts)
136-
status.RegisterStatus(c.status, trafficPolicyStatus, GetStatus)
136+
status.RegisterStatus(c.status, trafficPolicyStatus, GetStatus, c.tagWatcher.AccessUnprotected())
137137

138138
// TODO: BackendTrafficPolicy should also probably use ancestorCollection. However, its still up for debate in the
139139
// Gateway API community if having the Gateway as an ancestor ref is required or not; we would prefer it to not be if possible.
140140
// Until conformance requires it, for now we skip it.
141141
ancestorCollection := ancestors.AsCollection(append(opts.WithName("AncestorBackend"), TypedNamespacedNameIndexCollectionFunc)...)
142142
tlsPolicyStatus, backendTLSPolicies := BackendTLSPolicyCollection(tlsPolicies, ancestorCollection, references, domainSuffix, opts)
143-
status.RegisterStatus(c.status, tlsPolicyStatus, GetStatus)
143+
status.RegisterStatus(c.status, tlsPolicyStatus, GetStatus, c.tagWatcher.AccessUnprotected())
144144

145145
// We need to merge these by hostname into a single DR
146146
allPolicies := krt.JoinCollection([]krt.Collection[BackendPolicy]{backendTrafficPolicies, backendTLSPolicies})

pilot/pkg/config/kube/gateway/controller.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ func NewController(
238238
httpRoutesByInferencePool := krt.NewIndex(inputs.HTTPRoutes, "inferencepool-route", indexHTTPRouteByInferencePool)
239239

240240
GatewayClassStatus, GatewayClasses := GatewayClassesCollection(inputs.GatewayClasses, opts)
241-
status.RegisterStatus(c.status, GatewayClassStatus, GetStatus)
241+
status.RegisterStatus(c.status, GatewayClassStatus, GetStatus, c.tagWatcher.AccessUnprotected())
242242

243243
ReferenceGrants := BuildReferenceGrants(ReferenceGrantsCollection(inputs.ReferenceGrants, opts))
244244
ListenerSetStatus, ListenerSets := ListenerSetCollection(
@@ -254,7 +254,7 @@ func NewController(
254254
c.tagWatcher,
255255
opts,
256256
)
257-
status.RegisterStatus(c.status, ListenerSetStatus, GetStatus)
257+
status.RegisterStatus(c.status, ListenerSetStatus, GetStatus, c.tagWatcher.AccessUnprotected())
258258

259259
// GatewaysStatus is not fully complete until its join with route attachments to report attachedRoutes.
260260
// Do not register yet.
@@ -289,7 +289,7 @@ func NewController(
289289
controllers.WithMaxAttempts(5))
290290

291291
if features.EnableGatewayAPIInferenceExtension {
292-
status.RegisterStatus(c.status, InferencePoolStatus, GetStatus)
292+
status.RegisterStatus(c.status, InferencePoolStatus, GetStatus, c.tagWatcher.AccessUnprotected())
293293
}
294294

295295
RouteParents := BuildRouteParents(Gateways)
@@ -309,25 +309,25 @@ func NewController(
309309
routeInputs,
310310
opts,
311311
)
312-
status.RegisterStatus(c.status, tcpRoutes.Status, GetStatus)
312+
status.RegisterStatus(c.status, tcpRoutes.Status, GetStatus, c.tagWatcher.AccessUnprotected())
313313
tlsRoutes := TLSRouteCollection(
314314
inputs.TLSRoutes,
315315
routeInputs,
316316
opts,
317317
)
318-
status.RegisterStatus(c.status, tlsRoutes.Status, GetStatus)
318+
status.RegisterStatus(c.status, tlsRoutes.Status, GetStatus, c.tagWatcher.AccessUnprotected())
319319
httpRoutes := HTTPRouteCollection(
320320
inputs.HTTPRoutes,
321321
routeInputs,
322322
opts,
323323
)
324-
status.RegisterStatus(c.status, httpRoutes.Status, GetStatus)
324+
status.RegisterStatus(c.status, httpRoutes.Status, GetStatus, c.tagWatcher.AccessUnprotected())
325325
grpcRoutes := GRPCRouteCollection(
326326
inputs.GRPCRoutes,
327327
routeInputs,
328328
opts,
329329
)
330-
status.RegisterStatus(c.status, grpcRoutes.Status, GetStatus)
330+
status.RegisterStatus(c.status, grpcRoutes.Status, GetStatus, c.tagWatcher.AccessUnprotected())
331331

332332
RouteAttachments := krt.JoinCollection([]krt.Collection[RouteAttachment]{
333333
tcpRoutes.RouteAttachments,
@@ -360,7 +360,7 @@ func NewController(
360360
)
361361

362362
GatewayFinalStatus := FinalGatewayStatusCollection(GatewaysStatus, RouteAttachments, RouteAttachmentsIndex, opts)
363-
status.RegisterStatus(c.status, GatewayFinalStatus, GetStatus)
363+
status.RegisterStatus(c.status, GatewayFinalStatus, GetStatus, c.tagWatcher.AccessUnprotected())
364364

365365
VirtualServices := krt.JoinCollection([]krt.Collection[*config.Config]{
366366
tcpRoutes.VirtualServices,

pilot/pkg/config/kube/gateway/status_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func TestStatusCollections(t *testing.T) {
4848
fakeCol := krt.NewStaticCollection[Status](nil, []Status{obj1}, krt.WithStop(stop))
4949
status.RegisterStatus(c.status, fakeCol, func(i *v1.ConfigMap) string {
5050
return ""
51-
})
51+
}, c.tagWatcher.AccessUnprotected())
5252

5353
sq1 := &TestStatusQueue{state: map[status.Resource]any{}}
5454
setAndWait(t, c, sq1)

pilot/pkg/config/kube/ingress/controller.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
"istio.io/istio/pkg/kube/kclient"
3838
"istio.io/istio/pkg/kube/krt"
3939
"istio.io/istio/pkg/log"
40+
"istio.io/istio/pkg/revisions"
4041
"istio.io/istio/pkg/util/sets"
4142
)
4243

@@ -93,7 +94,8 @@ type Controller struct {
9394
// outputs contains all the output collections for this controller.
9495
outputs Outputs
9596

96-
status *status.StatusCollections
97+
status *status.StatusCollections
98+
tagWatcher krt.RecomputeProtected[revisions.TagWatcher]
9799
}
98100

99101
type Inputs struct {
@@ -119,12 +121,17 @@ func NewController(
119121
stop := make(chan struct{})
120122
opts := krt.NewOptionsBuilder(stop, "ingress", options.KrtDebugger)
121123

124+
tw := revisions.NewTagWatcher(client, options.Revision, options.SystemNamespace)
122125
c := &Controller{
123126
client: client,
124127
stop: stop,
125128
status: &status.StatusCollections{},
126129
xdsUpdater: xdsUpdater,
130+
tagWatcher: krt.NewRecomputeProtected(tw, false, opts.WithName("tagWatcher")...),
127131
}
132+
tw.AddHandler(func(s sets.String) {
133+
c.tagWatcher.TriggerRecomputation()
134+
})
128135

129136
c.inputs = Inputs{
130137
IngressClasses: krt.NewInformer[*knetworking.IngressClass](client, opts.WithName("informer/IngressClasses")...),
@@ -167,7 +174,7 @@ func NewController(
167174
)
168175
status.RegisterStatus(c.status, Status, func(ingress *knetworking.Ingress) knetworking.IngressStatus {
169176
return ingress.Status
170-
})
177+
}, c.tagWatcher.AccessUnprotected())
171178

172179
_, RuleHostIndex := RuleCollection(
173180
SupportedIngresses,
@@ -225,6 +232,14 @@ func (c *Controller) SetStatusWrite(enabled bool, statusManager *status.Manager)
225232

226233
func (c *Controller) Run(stop <-chan struct{}) {
227234
log.Infof("Starting ingress controller")
235+
236+
tw := c.tagWatcher.AccessUnprotected()
237+
go tw.Run(stop)
238+
go func() {
239+
kube.WaitForCacheSync("ingress tag watcher", stop, tw.HasSynced)
240+
c.tagWatcher.MarkSynced()
241+
}()
242+
228243
<-stop
229244
close(c.stop)
230245
}

0 commit comments

Comments
 (0)