This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This adds a feature flag to enable basic ClusterTrustBundle API support. If enabled, it replaces the old Namespace controller with a simpler ClusterTrustBundle controller.
The reason will be displayed to describe this comment to others. Learn more.
I am not sure the answer to this: are there plausible use cases where a user may deploy a cert + a trust bundle, and Istio just consumes that and doesn't create it?
Seems like 'maybe' and we can add that later without issue.
The reason will be displayed to describe this comment to others. Learn more.
I agree with 'maybe' being the answer here. For now, this only covers the simplest use cases where a) the internal CA is used with a self-signed cert generated by istiod or b) with a cert passed into istiod through the cacerts secret. In both cases, istiod will manage the ClusterTrustBundle. We might want to keep it that way to keep things simple - ie if you use an external CA to manage the cert/key, that only has to update the cacerts secret and not bother with ClusterTrustBundle
The reason will be displayed to describe this comment to others. Learn more.
nit: the API here is a bit awkward since we enable it by setting an env var on the Ztunnel daemon, but ztunnel doesn't actually read the env var at all.
Given its for experimental enablement its not too bad, we are effectively making up for the fact we don't have a first class "feature flag" concept
The reason will be displayed to describe this comment to others. Learn more.
yeah, I didn't want to add a global helm value for this as it's really not something we want to keep around anyway. honestly I would really appreciate first class feature flags, this stuff is always a bit hacky. As soon as a Pilot experimental flag needs to be known about by e.g. the gateways things become weird. Maybe we can pick up that discussion again
The reason will be displayed to describe this comment to others. Learn more.
Typically we would read from the informer cache here. Given this is so low-traffic this isn't too important here, but given we do that in every other part of Istio its probably best for consistency (technically this approach is slightly less race-conditiony, but both are, so we need to be eventually consistent anyways)
**Added** experimental support for the v1alpha1 ClusterTrustBundle API. This can be enabled by setting `values.pilot.env.ENABLE_CLUSTER_TRUST_BUNDLE_API=true`. Note that you will have to make sure to also enable the respective feature gates in your cluster, see KEP-3257 (https://github.com/kubernetes/enhancements/tree/master/keps/sig-auth/3257-cluster-trust-bundles) for details.
The reason will be displayed to describe this comment to others. Learn more.
Suggested change
**Added** experimental support for the v1alpha1 ClusterTrustBundle API. This can be enabled by setting `values.pilot.env.ENABLE_CLUSTER_TRUST_BUNDLE_API=true`. Note that you will have to make sure to also enable the respective feature gates in your cluster, see KEP-3257(https://github.com/kubernetes/enhancements/tree/master/keps/sig-auth/3257-cluster-trust-bundles) for details.
**Added** experimental support for the v1alpha1 `ClusterTrustBundle` API. This can be enabled by setting `values.pilot.env.ENABLE_CLUSTER_TRUST_BUNDLE_API=true`. Note that you will have to make sure to also enable the respective feature gates in your cluster, see [KEP-3257](https://github.com/kubernetes/enhancements/tree/master/keps/sig-auth/3257-cluster-trust-bundles) for details.
This adds a feature flag to enable basic ClusterTrustBundle API support. If enabled, it replaces the old Namespace controller with a simpler ClusterTrustBundle controller.
@dgn this broke postsubmit since ClusterTrustBundle is not a valid feature on old versions. We will need to modifythe prow config to only apply it for new versions.
In the past we have done this via different configs in prow/config and selecting in test-infra which is kind of a pain to maintain... maybe we want to make more support in the prow runner to conditionally enable a feature flag based on version
@dgn this broke postsubmit since ClusterTrustBundle is not a valid feature on old versions. We will need to modifythe prow config to only apply it for new versions.
In the past we have done this via different configs in prow/config and selecting in test-infra which is kind of a pain to maintain... maybe we want to make more support in the prow runner to conditionally enable a feature flag based on version
I'll look into it. For now, I can just remove the additional kind config, as there is no integration test for ClusterTrustBundles anyway.
dgn
added a commit
to dgn/istio
that referenced
this pull request
Apr 16, 2025
In istio#55592, the default prow config was changed to include support for
ClusterTrustBundles by default, which breaks on k8s<v1.27. This moves
the ClusterTrustBundle enablement into a separate config, as it's only
used in manual tests anyway. We can use the separate config when we
write an integration test.
In #55592, the default prow config was changed to include support for
ClusterTrustBundles by default, which breaks on k8s<v1.27. This moves
the ClusterTrustBundle enablement into a separate config, as it's only
used in manual tests anyway. We can use the separate config when we
write an integration test.
* Revamped Chart Structure since Istio Operator is deprecated now
* Renamed cray-istio chart to cray-istio-ingress
* Removed charts cray-istio-deploy and cray-istio-operator
* Added charts cray-istio-base and cray-istio-pilot
* Updated version tags and images
* Updated LICENSES
* Support setting namespaces on gateway charts (istio/istio#32675)
* More consistent helm charts labels (istio/istio#52463)
* By default, exclude gateways from ambient mesh enrollment (istio/istio#54825)
* Upgrade docker-kubectl version
* Modify rbac and change jwtPolicy
* initial ClusterTrustBundle v1alpha1 support (istio/istio#55592)
* Update Image and App version to 1.26.0
* Add a check before accessing the Values
* Update chart values to comply with upstream
2025-06-18T02:41:41.419752Z error watch error in cluster Kubernetes: failed to list *v1alpha1.ClusterTrustBundle: clustertrustbundles.certificates.k8s.io "istio.io:istiod-ca:root-cert" is forbidden: User "system:serviceaccount:istio-system:istiod" cannot list resource "clustertrustbundles" in API group "
94B9
certificates.k8s.io" at the cluster scope
size/LDenotes a PR that changes 100-499 lines, ignoring generated files.
5 participants
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds a feature flag to enable basic ClusterTrustBundle API support. If enabled, it replaces the old Namespace controller with a simpler ClusterTrustBundle controller.
Fixes #43986