diff --git a/config/crd/bases/placement.kubernetes-fleet.io_clusterresourceplacementdisruptionbudgets.yaml b/config/crd/bases/placement.kubernetes-fleet.io_clusterresourceplacementdisruptionbudgets.yaml deleted file mode 100644 index 0f13dfd1c..000000000 --- a/config/crd/bases/placement.kubernetes-fleet.io_clusterresourceplacementdisruptionbudgets.yaml +++ /dev/null @@ -1,219 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - name: clusterresourceplacementdisruptionbudgets.placement.kubernetes-fleet.io -spec: - group: placement.kubernetes-fleet.io - names: - categories: - - fleet - - fleet-placement - kind: ClusterResourcePlacementDisruptionBudget - listKind: ClusterResourcePlacementDisruptionBudgetList - plural: clusterresourceplacementdisruptionbudgets - shortNames: - - crpdb - singular: clusterresourceplacementdisruptionbudget - scope: Cluster - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - ClusterResourcePlacementDisruptionBudget is the policy applied to a ClusterResourcePlacement - object that specifies its disruption budget, i.e., how many placements (clusters) can be - down at the same time due to **voluntary** disruptions (e.g., evictions). - - - To apply a ClusterResourcePlacementDisruptionBudget to a ClusterResourcePlacement, use the - same name for the ClusterResourcePlacementDisruptionBudget object as the ClusterResourcePlacement - object. This guarantees a 1:1 link between the two objects. - 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 is the desired state of the ClusterResourcePlacementDisruptionBudget. - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - default: 25% - description: |- - MaxUnavailable is the maximum number of placements that can be down at the same time - due to voluntary disruptions. For example, a setting of 1 would imply that - a voluntary disruption (e.g., an eviction) can only happen if all placements - from the linked ClusterResourcePlacement object are applied and available. - - - This can be either an absolute value (e.g., 1) or a percentage (e.g., 10%). - - - If a percentage is specified, Fleet will calculate the corresponding absolutate values - as follows: - * if the linked ClusterResourcePlacement object is of the PickFixed placement type, - the percentage is against the number of clusters specified in the placement (i.e., the - length of ClusterNames field in the placement policy); - * if the linked ClusterResourcePlacement object is of the PickAll placement type, - the percentage is against the total number of clusters being selected by the scheduler - at the time of the evaluation of the disruption budget; - * if the linked ClusterResourcePlacement object is of the PickN placement type, - the percentage is against the number of clusters specified in the placement (i.e., the - value of the NumberOfClusters fields in the placement policy). - The end result will be rounded up to the nearest integer if applicable. - - - One may use a value of 0 for this field; in this case, no voluntary disruption would be - allowed. - - - This field is mutually exclusive with the MinAvailable field in the spec; exactly one - of them can be set at a time. - - - Defaults to 25%. - pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ - x-kubernetes-int-or-string: true - minAvailable: - anyOf: - - type: integer - - type: string - description: |- - MinAvailable is the minimum number of placements that must be available at any time - despite voluntary disruptions. For example, a setting of 10 would imply that - a voluntary disruption (e.g., an eviction) can only happen if there are at least 11 - placements from the linked ClusterResourcePlacement object are applied and available. - - - This can be either an absolute value (e.g., 1) or a percentage (e.g., 10%). - - - If a percentage is specified, Fleet will calculate the corresponding absolutate values - as follows: - * if the linked ClusterResourcePlacement object is of the PickFixed placement type, - the percentage is against the number of clusters specified in the placement (i.e., the - length of ClusterNames field in the placement policy); - * if the linked ClusterResourcePlacement object is of the PickAll placement type, - the percentage is against the total number of clusters being selected by the scheduler - at the time of the evaluation of the disruption budget; - * if the linked ClusterResourcePlacement object is of the PickN placement type, - the percentage is against the number of clusters specified in the placement (i.e., the - value of the NumberOfClusters fields in the placement policy). - The end result will be rounded up to the nearest integer if applicable. - - - One may use a value of 0 for this field; in this case, voluntary disruption would be - allowed at any time. - - - This field is mutually exclusive with the MaxUnavailable field in the spec; exactly one - of them can be set at a time. - pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ - x-kubernetes-int-or-string: true - type: object - status: - description: Status is the observed state of the ClusterResourcePlacementDisruptionBudget. - properties: - conditions: - description: |- - Conditions is the list of currently observed conditions for the - ClusterResourcePlacementDisruptionBudget object. - - - Available condition types include: - * Applied: whether the disruption budget has been successfully applied to the linked - ClusterResourcePlacement object. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - 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: {} diff --git a/config/crd/bases/placement.kubernetes-fleet.io_clusterresourceplacementevictions.yaml b/config/crd/bases/placement.kubernetes-fleet.io_clusterresourceplacementevictions.yaml deleted file mode 100644 index ae705484f..000000000 --- a/config/crd/bases/placement.kubernetes-fleet.io_clusterresourceplacementevictions.yaml +++ /dev/null @@ -1,186 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - name: clusterresourceplacementevictions.placement.kubernetes-fleet.io -spec: - group: placement.kubernetes-fleet.io - names: - categories: - - fleet - - fleet-placement - kind: ClusterResourcePlacementEviction - listKind: ClusterResourcePlacementEvictionList - plural: clusterresourceplacementevictions - singular: clusterresourceplacementeviction - scope: Cluster - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - ClusterResourcePlacementEviction is an eviction attempt on a specific placement from - a ClusterResourcePlacement object; one may use this API to force the removal of specific - resources from a cluster. - - - An eviction is a **voluntary** disruption; its execution is subject to the disruption budget - linked with the target ClusterResourcePlacement object (if present). - - - Beware that an eviction alone does not guarantee that a placement will not re-appear; i.e., - after an eviction, the Fleet scheduler might still pick the previous target cluster for - placement. To prevent this, considering adding proper taints to the target cluster before running - an eviction that will exclude it from future placements; this is especially true in scenarios - where one would like to perform a cluster replacement. - - - For safety reasons, Fleet will only execute an eviction once; the spec in this object is immutable, - and once executed, the object will be ignored afterwards. To trigger another eviction attempt on the - same placement from the same ClusterResourcePlacement object, one must re-create (delete and - create) the same Eviction object. Note also that an Eviction object will be - ignored once it is deemed invalid (e.g., such an object might be targeting a CRP object or - a placement that does not exist yet), even if it does become valid later - (e.g., the CRP object or the placement appears later). To fix the situation, re-create the - Eviction object. - - - Executed evictions might be kept around for a while for auditing purposes; the Fleet controllers might - have a TTL set up for such objects and will garbage collect them automatically. For further - information, see the Fleet documentation. - 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 is the desired state of the ClusterResourcePlacementEviction. - - - Note that all fields in the spec are immutable. - properties: - clusterName: - description: ClusterName is the name of the cluster that the Eviction - object targets at. - maxLength: 255 - type: string - x-kubernetes-validations: - - message: The ClusterName field is immutable - rule: self == oldSelf - clusterResourcePlacementName: - description: |- - ClusterResourcePlacementName is the name of the ClusterResourcePlacement object which - the Eviction object targets at. - maxLength: 255 - type: string - x-kubernetes-validations: - - message: The ClusterResourcePlacementName field is immutable - rule: self == oldSelf - required: - - clusterName - - clusterResourcePlacementName - type: object - status: - description: Status is the observed state of the ClusterResourcePlacementEviction. - properties: - conditions: - description: |- - Conditions is the list of currently observed conditions for the - ClusterResourcePlacementEviction object. - - - Available condition types include: - * Valid: whether the Eviction object is valid, i.e., it targets at a valid placement. - * Executed: whether the Eviction object has been executed. - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - 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: {}