ClusterTrustBundles: ClusterTrustBundleProjection feature gate
This commit is contained in:
@@ -83,6 +83,12 @@ const (
|
|||||||
// Enable ClusterTrustBundle objects and Kubelet integration.
|
// Enable ClusterTrustBundle objects and Kubelet integration.
|
||||||
ClusterTrustBundle featuregate.Feature = "ClusterTrustBundle"
|
ClusterTrustBundle featuregate.Feature = "ClusterTrustBundle"
|
||||||
|
|
||||||
|
// owner: @ahmedtd
|
||||||
|
// alpha: v1.28
|
||||||
|
//
|
||||||
|
// Enable ClusterTrustBundle Kubelet projected volumes. Depends on ClusterTrustBundle.
|
||||||
|
ClusterTrustBundleProjection featuregate.Feature = "ClusterTrustBundleProjection"
|
||||||
|
|
||||||
// owner: @szuecs
|
// owner: @szuecs
|
||||||
// alpha: v1.12
|
// alpha: v1.12
|
||||||
//
|
//
|
||||||
@@ -996,6 +1002,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
|
|
||||||
ClusterTrustBundle: {Default: false, PreRelease: featuregate.Alpha},
|
ClusterTrustBundle: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
|
||||||
|
ClusterTrustBundleProjection: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
|
||||||
CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha},
|
CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
|
||||||
CPUManager: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.26
|
CPUManager: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.26
|
||||||
|
@@ -1837,6 +1837,31 @@ type ServiceAccountTokenProjection struct {
|
|||||||
Path string `json:"path" protobuf:"bytes,3,opt,name=path"`
|
Path string `json:"path" protobuf:"bytes,3,opt,name=path"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClusterTrustBundleProjection describes how to select a set of
|
||||||
|
// ClusterTrustBundle objects and project their contents into the pod
|
||||||
|
// filesystem.
|
||||||
|
type ClusterTrustBundleProjection struct {
|
||||||
|
// Select a single ClusterTrustBundle by object name. Mutually-exclusive
|
||||||
|
// with SignerName and LabelSelector.
|
||||||
|
// +optional
|
||||||
|
Name *string `json:"name,omitempty" protobuf:"bytes,1,rep,name=name"`
|
||||||
|
|
||||||
|
// Select all ClusterTrustBundles that match this signer name.
|
||||||
|
// Mutually-exclusive with Name.
|
||||||
|
// +optional
|
||||||
|
SignerName *string `json:"signerName,omitempty" protobuf:"bytes,2,rep,name=signerName"`
|
||||||
|
|
||||||
|
// Select all ClusterTrustBundles that match this label selector. Must not
|
||||||
|
// be null or empty if SignerName is provided. Mutually-exclusive with
|
||||||
|
// Name.
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
LabelSelector *metav1.LabelSelector `json:"labelSelector,omitempty" protobuf:"bytes,3,rep,name=labelSelector"`
|
||||||
|
|
||||||
|
// Relative path from the volume root to write the bundle.
|
||||||
|
Path string `json:"path" protobuf:"bytes,4,rep,name=path"`
|
||||||
|
}
|
||||||
|
|
||||||
// Represents a projected volume source
|
// Represents a projected volume source
|
||||||
type ProjectedVolumeSource struct {
|
type ProjectedVolumeSource struct {
|
||||||
// sources is the list of volume projections
|
// sources is the list of volume projections
|
||||||
@@ -1868,6 +1893,30 @@ type VolumeProjection struct {
|
|||||||
// serviceAccountToken is information about the serviceAccountToken data to project
|
// serviceAccountToken is information about the serviceAccountToken data to project
|
||||||
// +optional
|
// +optional
|
||||||
ServiceAccountToken *ServiceAccountTokenProjection `json:"serviceAccountToken,omitempty" protobuf:"bytes,4,opt,name=serviceAccountToken"`
|
ServiceAccountToken *ServiceAccountTokenProjection `json:"serviceAccountToken,omitempty" protobuf:"bytes,4,opt,name=serviceAccountToken"`
|
||||||
|
|
||||||
|
// ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
|
||||||
|
// of a ClusterTrustBundle object in an auto-updating file.
|
||||||
|
//
|
||||||
|
// Alpha, gated by the ClusterTrustBundleProjection feature gate.
|
||||||
|
//
|
||||||
|
// ClusterTrustBundle objects can either be selected by name, or by the
|
||||||
|
// combination of signer name and a label selector.
|
||||||
|
//
|
||||||
|
// When selecting by name, the referenced ClusterTrustBundle object must
|
||||||
|
// have an empty spec.signerName field.
|
||||||
|
//
|
||||||
|
// When selecting by signer name, the contents of all ClusterTrustBundle
|
||||||
|
// objects associated with the signer and matching the label will be unified
|
||||||
|
// and deduplicated.
|
||||||
|
//
|
||||||
|
// Kubelet performs aggressive normalization of the PEM contents written
|
||||||
|
// into the pod filesystem. Esoteric PEM features such as inter-block
|
||||||
|
// comments and block headers are stripped. Certificates are deduplicated.
|
||||||
|
// The ordering of certificates within the file is arbitrary, and Kubelet
|
||||||
|
// may change the order over time.
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
ClusterTrustBundle *ClusterTrustBundleProjection `json:"clusterTrustBundle,omitempty" protobuf:"bytes,5,opt,name=clusterTrustBundle"`
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
Reference in New Issue
Block a user