package v1alpha1 import "cue.dev/x/k8s.io/apimachinery/pkg/apis/meta/v1" // ClusterTrustBundle is a cluster-scoped container for X.509 // trust anchors (root certificates). // // ClusterTrustBundle objects are considered to be readable by any // authenticated user in the cluster, because they can be mounted // by pods using the `clusterTrustBundle` projection. All service // accounts have read access to ClusterTrustBundles by default. // Users who only have namespace-level access to a cluster can // read ClusterTrustBundles by impersonating a serviceaccount // that they have access to. // // It can be optionally associated with a particular assigner, in // which case it contains one valid set of trust anchors for that // signer. Signers may have multiple associated // ClusterTrustBundles; each is an independent set of trust // anchors for that signer. Admission control is used to enforce // that only users with permissions on the signer can create or // modify the corresponding bundle. #ClusterTrustBundle: { // APIVersion defines the versioned schema of this representation // of an object. Servers should convert recognized schemas to the // latest internal value, and may reject unrecognized values. // More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources "apiVersion": "certificates.k8s.io/v1alpha1" // Kind is a string value representing the REST resource this // object represents. Servers may infer this from the endpoint // the client submits requests to. Cannot be updated. In // CamelCase. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "kind": "ClusterTrustBundle" // metadata contains the object metadata. "metadata"?: v1.#ObjectMeta // spec contains the signer (if any) and trust anchors. "spec"!: #ClusterTrustBundleSpec } // ClusterTrustBundleList is a collection of ClusterTrustBundle // objects #ClusterTrustBundleList: { // APIVersion defines the versioned schema of this representation // of an object. Servers should convert recognized schemas to the // latest internal value, and may reject unrecognized values. // More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources "apiVersion": "certificates.k8s.io/v1alpha1" // items is a collection of ClusterTrustBundle objects "items"!: [...#ClusterTrustBundle] // Kind is a string value representing the REST resource this // object represents. Servers may infer this from the endpoint // the client submits requests to. Cannot be updated. In // CamelCase. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "kind": "ClusterTrustBundleList" // metadata contains the list metadata. "metadata"?: v1.#ListMeta } // ClusterTrustBundleSpec contains the signer and trust anchors. #ClusterTrustBundleSpec: { // signerName indicates the associated signer, if any. // // In order to create or update a ClusterTrustBundle that sets // signerName, you must have the following cluster-scoped // permission: group=certificates.k8s.io resource=signers // resourceName= verb=attest. // // If signerName is not empty, then the ClusterTrustBundle object // must be named with the signer name as a prefix (translating // slashes to colons). For example, for the signer name // `example.com/foo`, valid ClusterTrustBundle object names // include `example.com:foo:abc` and `example.com:foo:v1`. // // If signerName is empty, then the ClusterTrustBundle object's // name must not have such a prefix. // // List/watch requests for ClusterTrustBundles can filter on this // field using a `spec.signerName=NAME` field selector. "signerName"?: string // trustBundle contains the individual X.509 trust anchors for // this bundle, as PEM bundle of PEM-wrapped, DER-formatted X.509 // certificates. // // The data must consist only of PEM certificate blocks that parse // as valid X.509 certificates. Each certificate must include a // basic constraints extension with the CA bit set. The API // server will reject objects that contain duplicate // certificates, or that use PEM block headers. // // Users of ClusterTrustBundles, including Kubelet, are free to // reorder and deduplicate certificate blocks in this file // according to their own logic, as well as to drop PEM block // headers and inter-block data. "trustBundle"!: string }