--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.8.0 creationTimestamp: null name: clusterresourcebindings.work.karmada.io spec: group: work.karmada.io names: kind: ClusterResourceBinding listKind: ClusterResourceBindingList plural: clusterresourcebindings shortNames: - crb singular: clusterresourcebinding scope: Cluster versions: - name: v1alpha1 schema: openAPIV3Schema: description: ClusterResourceBinding represents a binding of a kubernetes resource with a ClusterPropagationPolicy. properties: apiVersion: description: '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' type: string kind: description: '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' type: string metadata: type: object spec: description: Spec represents the desired behavior. properties: clusters: description: Clusters represents target member clusters where the resource to be deployed. items: description: TargetCluster represents the identifier of a member cluster. properties: name: description: Name of target cluster. type: string replicas: description: Replicas in target cluster format: int32 type: integer required: - name type: object type: array resource: description: Resource represents the Kubernetes resource to be propagated. properties: apiVersion: description: APIVersion represents the API version of the referent. type: string kind: description: Kind represents the Kind of the referent. type: string name: description: Name represents the name of the referent. type: string namespace: description: Namespace represents the namespace for the referent. For non-namespace scoped resources(e.g. 'ClusterRole'),do not need specify Namespace, and for namespace scoped resources, Namespace is required. If Namespace is not specified, means the resource is non-namespace scoped. type: string replicas: description: Replicas represents the replica number of the referencing resource. format: int32 type: integer resourcePerReplicas: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: ReplicaResourceRequirements represents the resources required by each replica. type: object resourceVersion: description: ResourceVersion represents the internal version of the referenced object, that can be used by clients to determine when object has changed. type: string required: - apiVersion - kind - name type: object required: - resource type: object status: description: Status represents the most recently observed status of the ResourceBinding. properties: aggregatedStatus: description: AggregatedStatus represents status list of the resource running in each member cluster. items: description: AggregatedStatusItem represents status of the resource running in a member cluster. properties: applied: description: Applied represents if the resource referencing by ResourceBinding or ClusterResourceBinding is successfully applied on the cluster. type: boolean appliedMessage: description: AppliedMessage is a human readable message indicating details about the applied status. This is usually holds the error message in case of apply failed. type: string clusterName: description: ClusterName represents the member cluster name which the resource deployed on. type: string status: description: Status reflects running status of current manifest. type: object x-kubernetes-preserve-unknown-fields: true required: - clusterName type: object type: array conditions: description: Conditions contain the different condition statuses. items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object required: - spec type: object served: true storage: false subresources: status: {} - additionalPrinterColumns: - jsonPath: .status.conditions[?(@.type=="Scheduled")].status name: Scheduled type: string - jsonPath: .status.conditions[?(@.type=="FullyApplied")].status name: FullyApplied type: string - jsonPath: .metadata.creationTimestamp name: Age type: date name: v1alpha2 schema: openAPIV3Schema: description: ClusterResourceBinding represents a binding of a kubernetes resource with a ClusterPropagationPolicy. properties: apiVersion: description: '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' type: string kind: description: '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' type: string metadata: type: object spec: description: Spec represents the desired behavior. properties: clusters: description: Clusters represents target member clusters where the resource to be deployed. items: description: TargetCluster represents the identifier of a member cluster. properties: name: description: Name of target cluster. type: string replicas: description: Replicas in target cluster format: int32 type: integer required: - name type: object type: array propagateDeps: description: PropagateDeps tells if relevant resources should be propagated automatically. It is inherited from PropagationPolicy or ClusterPropagationPolicy. default false. type: boolean replicaRequirements: description: ReplicaRequirements represents the requirements required by each replica. properties: nodeClaim: description: NodeClaim represents the node claim HardNodeAffinity, NodeSelector and Tolerations required by each replica. properties: hardNodeAffinity: description: A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms. Note that only PodSpec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution is included here because it has a hard limit on pod scheduling. properties: nodeSelectorTerms: description: Required. A list of node selector terms. The terms are ORed. items: description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. properties: matchExpressions: description: A list of node selector requirements by node's labels. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array matchFields: description: A list of node selector requirements by node's fields. items: description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: The label key that the selector applies to. type: string operator: description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. type: string values: description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. items: type: string type: array required: - key - operator type: object type: array type: object type: array required: - nodeSelectorTerms type: object nodeSelector: additionalProperties: type: string description: NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. type: object tolerations: description: If specified, the pod's tolerations. items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object resourceRequest: additionalProperties: anyOf: - type: integer - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: ResourceRequest represents the resources required by each replica. type: object type: object replicas: description: Replicas represents the replica number of the referencing resource. format: int32 type: integer requiredBy: description: RequiredBy represents the list of Bindings that depend on the referencing resource. items: description: BindingSnapshot is a snapshot of a ResourceBinding or ClusterResourceBinding. properties: clusters: description: Clusters represents the scheduled result. items: description: TargetCluster represents the identifier of a member cluster. properties: name: description: Name of target cluster. type: string replicas: description: Replicas in target cluster format: int32 type: integer required: - name type: object type: array name: description: Name represents the name of the Binding. type: string namespace: description: Namespace represents the namespace of the Binding. It is required for ResourceBinding. If Namespace is not specified, means the referencing is ClusterResourceBinding. type: string required: - name type: object type: array resource: description: Resource represents the Kubernetes resource to be propagated. properties: apiVersion: description: APIVersion represents the API version of the referent. type: string kind: description: Kind represents the Kind of the referent. type: string name: description: Name represents the name of the referent. type: string namespace: description: Namespace represents the namespace for the referent. For non-namespace scoped resources(e.g. 'ClusterRole'),do not need specify Namespace, and for namespace scoped resources, Namespace is required. If Namespace is not specified, means the resource is non-namespace scoped. type: string resourceVersion: description: ResourceVersion represents the internal version of the referenced object, that can be used by clients to determine when object has changed. type: string uid: description: UID of the referent. type: string required: - apiVersion - kind - name type: object required: - resource type: object status: description: Status represents the most recently observed status of the ResourceBinding. properties: aggregatedStatus: description: AggregatedStatus represents status list of the resource running in each member cluster. items: description: AggregatedStatusItem represents status of the resource running in a member cluster. properties: applied: description: Applied represents if the resource referencing by ResourceBinding or ClusterResourceBinding is successfully applied on the cluster. type: boolean appliedMessage: description: AppliedMessage is a human readable message indicating details about the applied status. This is usually holds the error message in case of apply failed. type: string clusterName: description: ClusterName represents the member cluster name which the resource deployed on. type: string status: description: Status reflects running status of current manifest. type: object x-kubernetes-preserve-unknown-fields: true required: - clusterName type: object type: array conditions: description: Conditions contain the different condition statuses. items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object required: - spec type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: []