shardingsphere-operator/config/crd/bases/shardingsphere.apache.org_autoscalers.yaml (917 lines of code) (raw):
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.9.0
creationTimestamp: null
name: autoscalers.shardingsphere.apache.org
spec:
group: shardingsphere.apache.org
names:
kind: AutoScaler
listKind: AutoScalerList
plural: autoscalers
singular: autoscaler
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: AutoScaler defines a autoscaler for ShardingSphere given
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: AutoScalerSpec defines a list of scaling policies
properties:
policyGroup:
description: PolicyGroup declares a set of scaling policies, including
horizontal and vertical scaling Allow ComputeNode to enable HPA
and VPA at the same time, without guaranteeing the result Haven't
verified the configuration of HPA and VPA of StorageNode yet
items:
description: ScalingPolicy defines a policy for scaling
properties:
horizontal:
description: HorizontalScaling contains the necessary parameters
for HPA scaling Does not contain StorageNode related configuration
properties:
maxReplicas:
description: maxReplicas is the upper limit for the number
of replicas to which the autoscaler can scale up. It cannot
be less that minReplicas.
format: int32
type: integer
metrics:
description: metrics contains the specifications for which
to use to calculate the desired replica count (the maximum
replica count across all metrics will be used). The desired
replica count is calculated multiplying the ratio between
the target value and the current value by the current
number of pods. Ergo, metrics used must decrease as the
pod count is increased, and vice-versa. See the individual
metric source types for more information about how each
type of metric must respond. If not set, the default metric
will be set to 80% average CPU utilization.
items:
description: MetricSpec specifies how to scale based on
a single metric (only `type` and one other matching
field should be set at once).
properties:
containerResource:
description: containerResource refers to a resource
metric (such as those specified in requests and
limits) known to Kubernetes describing a single
container in each pod of the current scale target
(e.g. CPU or memory). Such metrics are built in
to Kubernetes, and have special scaling options
on top of those available to normal per-pod metrics
using the "pods" source. This is an alpha feature
and can be enabled by the HPAContainerMetrics feature
flag.
properties:
container:
description: container is the name of the container
in the pods of the scaling target
type: string
name:
description: name is the name of the resource
in question.
type: string
target:
description: target specifies the target value
for the given metric
properties:
averageUtilization:
description: averageUtilization is the target
value of the average of the resource metric
across all relevant pods, represented as
a percentage of the requested value of the
resource for the pods. Currently only valid
for Resource metric source type
format: int32
type: integer
averageValue:
anyOf:
- type: integer
- type: string
description: averageValue is the target value
of the average of the metric across all
relevant pods (as a quantity)
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
type:
description: type represents whether the metric
type is Utilization, Value, or AverageValue
type: string
value:
anyOf:
- type: integer
- type: string
description: value is the target value of
the metric (as a quantity).
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
required:
- type
type: object
required:
- container
- name
- target
type: object
external:
description: external refers to a global metric that
is not associated with any Kubernetes object. It
allows autoscaling based on information coming from
components running outside of cluster (for example
length of queue in cloud messaging service, or QPS
from loadbalancer running outside of cluster).
properties:
metric:
description: metric identifies the target metric
by name and selector
properties:
name:
description: name is the name of the given
metric
type: string
selector:
description: selector is the string-encoded
form of a standard kubernetes label selector
for the given metric When set, it is passed
as an additional parameter to the metrics
server for more specific metrics scoping.
When unset, just the metricName will be
used to gather metrics.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
description: operator represents
a key's relationship to a set
of values. Valid operators are
In, NotIn, Exists and DoesNotExist.
type: string
values:
description: values is 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. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
required:
- name
type: object
target:
description: target specifies the target value
for the given metric
properties:
averageUtilization:
description: averageUtilization is the target
value of the average of the resource metric
across all relevant pods, represented as
a percentage of the requested value of the
resource for the pods. Currently only valid
for Resource metric source type
format: int32
type: integer
averageValue:
anyOf:
- type: integer
- type: string
description: averageValue is the target value
of the average of the metric across all
relevant pods (as a quantity)
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
type:
description: type represents whether the metric
type is Utilization, Value, or AverageValue
type: string
value:
anyOf:
- type: integer
- type: string
description: value is the target value of
the metric (as a quantity).
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
required:
- type
type: object
required:
- metric
- target
type: object
object:
description: object refers to a metric describing
a single kubernetes object (for example, hits-per-second
on an Ingress object).
properties:
describedObject:
description: describedObject specifies the descriptions
of a object,such as kind,name apiVersion
properties:
apiVersion:
description: API version of the referent
type: string
kind:
description: 'Kind of the referent; More info:
https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent; More info:
http://kubernetes.io/docs/user-guide/identifiers#names'
type: string
required:
- kind
- name
type: object
metric:
description: metric identifies the target metric
by name and selector
properties:
name:
description: name is the name of the given
metric
type: string
selector:
description: selector is the string-encoded
form of a standard kubernetes label selector
for the given metric When set, it is passed
as an additional parameter to the metrics
server for more specific metrics scoping.
When unset, just the metricName will be
used to gather metrics.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
description: operator represents
a key's relationship to a set
of values. Valid operators are
In, NotIn, Exists and DoesNotExist.
type: string
values:
description: values is 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. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
required:
- name
type: object
target:
description: target specifies the target value
for the given metric
properties:
averageUtilization:
description: averageUtilization is the target
value of the average of the resource metric
across all relevant pods, represented as
a percentage of the requested value of the
resource for the pods. Currently only valid
for Resource metric source type
format: int32
type: integer
averageValue:
anyOf:
- type: integer
- type: string
description: averageValue is the target value
of the average of the metric across all
relevant pods (as a quantity)
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
type:
description: type represents whether the metric
type is Utilization, Value, or AverageValue
type: string
value:
anyOf:
- type: integer
- type: string
description: value is the target value of
the metric (as a quantity).
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
required:
- type
type: object
required:
- describedObject
- metric
- target
type: object
pods:
description: pods refers to a metric describing each
pod in the current scale target (for example, transactions-processed-per-second). The
values will be averaged together before being compared
to the target value.
properties:
metric:
description: metric identifies the target metric
by name and selector
properties:
name:
description: name is the name of the given
metric
type: string
selector:
description: selector is the string-encoded
form of a standard kubernetes label selector
for the given metric When set, it is passed
as an additional parameter to the metrics
server for more specific metrics scoping.
When unset, just the metricName will be
used to gather metrics.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
description: A label selector requirement
is a selector that contains values,
a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
description: operator represents
a key's relationship to a set
of values. Valid operators are
In, NotIn, Exists and DoesNotExist.
type: string
values:
description: values is 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. This
array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value}
pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions,
whose key field is "key", the operator
is "In", and the values array contains
only "value". The requirements are ANDed.
type: object
type: object
required:
- name
type: object
target:
description: target specifies the target value
for the given metric
properties:
averageUtilization:
description: averageUtilization is the target
value of the average of the resource metric
across all relevant pods, represented as
a percentage of the requested value of the
resource for the pods. Currently only valid
for Resource metric source type
format: int32
type: integer
averageValue:
anyOf:
- type: integer
- type: string
description: averageValue is the target value
of the average of the metric across all
relevant pods (as a quantity)
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
type:
description: type represents whether the metric
type is Utilization, Value, or AverageValue
type: string
value:
anyOf:
- type: integer
- type: string
description: value is the target value of
the metric (as a quantity).
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
required:
- type
type: object
required:
- metric
- target
type: object
resource:
description: resource refers to a resource metric
(such as those specified in requests and limits)
known to Kubernetes describing each pod in the current
scale target (e.g. CPU or memory). Such metrics
are built in to Kubernetes, and have special scaling
options on top of those available to normal per-pod
metrics using the "pods" source.
properties:
name:
description: name is the name of the resource
in question.
type: string
target:
description: target specifies the target value
for the given metric
properties:
averageUtilization:
description: averageUtilization is the target
value of the average of the resource metric
across all relevant pods, represented as
a percentage of the requested value of the
resource for the pods. Currently only valid
for Resource metric source type
format: int32
type: integer
averageValue:
anyOf:
- type: integer
- type: string
description: averageValue is the target value
of the average of the metric across all
relevant pods (as a quantity)
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
type:
description: type represents whether the metric
type is Utilization, Value, or AverageValue
type: string
value:
anyOf:
- type: integer
- type: string
description: value is the target value of
the metric (as a quantity).
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
required:
- type
type: object
required:
- name
- target
type: object
type:
description: 'type is the type of metric source. It
should be one of "ContainerResource", "External",
"Object", "Pods" or "Resource", each mapping to
a matching field in the object. Note: "ContainerResource"
type is available on when the feature-gate HPAContainerMetrics
is enabled'
type: string
required:
- type
type: object
type: array
minReplicas:
description: minReplicas is the lower limit for the number
of replicas to which the autoscaler can scale down. It
defaults to 1 pod. minReplicas is allowed to be 0 if
the alpha feature gate HPAScaleToZero is enabled and at
least one Object or External metric is configured. Scaling
is active as long as at least one metric value is available.
format: int32
type: integer
scaleDownRules:
description: scaleDown is scaling policy for scaling Down.
If not set, the default value is to allow to scale down
to minReplicas pods, with a 300 second stabilization window
(i.e., the highest recommendation for the last 300sec
is used).
properties:
policies:
description: policies is a list of potential scaling
polices which can be used during scaling. At least
one policy must be specified, otherwise the HPAScalingRules
will be discarded as invalid
items:
description: HPAScalingPolicy is a single policy which
must hold true for a specified past interval.
properties:
periodSeconds:
description: PeriodSeconds specifies the window
of time for which the policy should hold true.
PeriodSeconds must be greater than zero and
less than or equal to 1800 (30 min).
format: int32
type: integer
type:
description: Type is used to specify the scaling
policy.
type: string
value:
description: Value contains the amount of change
which is permitted by the policy. It must be
greater than zero
format: int32
type: integer
required:
- periodSeconds
- type
- value
type: object
type: array
x-kubernetes-list-type: atomic
selectPolicy:
description: selectPolicy is used to specify which policy
should be used. If not set, the default value Max
is used.
type: string
stabilizationWindowSeconds:
description: 'StabilizationWindowSeconds is the number
of seconds for which past recommendations should be
considered while scaling up or scaling down. StabilizationWindowSeconds
must be greater than or equal to zero and less than
or equal to 3600 (one hour). If not set, use the default
values: - For scale up: 0 (i.e. no stabilization is
done). - For scale down: 300 (i.e. the stabilization
window is 300 seconds long).'
format: int32
type: integer
type: object
scaleUpRules:
description: 'scaleUp is scaling policy for scaling Up.
If not set, the default value is the higher of: * increase
no more than 4 pods per 60 seconds * double the number
of pods per 60 seconds No stabilization is used.'
properties:
policies:
description: policies is a list of potential scaling
polices which can be used during scaling. At least
one policy must be specified, otherwise the HPAScalingRules
will be discarded as invalid
items:
description: HPAScalingPolicy is a single policy which
must hold true for a specified past interval.
properties:
periodSeconds:
description: PeriodSeconds specifies the window
of time for which the policy should hold true.
PeriodSeconds must be greater than zero and
less than or equal to 1800 (30 min).
format: int32
type: integer
type:
description: Type is used to specify the scaling
policy.
type: string
value:
description: Value contains the amount of change
which is permitted by the policy. It must be
greater than zero
format: int32
type: integer
required:
- periodSeconds
- type
- value
type: object
type: array
x-kubernetes-list-type: atomic
selectPolicy:
description: selectPolicy is used to specify which policy
should be used. If not set, the default value Max
is used.
type: string
stabilizationWindowSeconds:
description: 'StabilizationWindowSeconds is the number
of seconds for which past recommendations should be
considered while scaling up or scaling down. StabilizationWindowSeconds
must be greater than or equal to zero and less than
or equal to 3600 (one hour). If not set, use the default
values: - For scale up: 0 (i.e. no stabilization is
done). - For scale down: 300 (i.e. the stabilization
window is 300 seconds long).'
format: int32
type: integer
type: object
type: object
provider:
description: 'Provider is the provider of the scaling mechanism,
and the optional values are: - Empty: default value, which
means provided by ShardingSphere Operator - KubernetesHPA:
Indicates the use of Kubernetes native HPA - KubernetesVPA:
Indicates the use of Kubernetes community VPA - Other: Indicates
a controller using a third-party controller'
type: string
targetSelector:
description: TargetSelector is used to select the auto-scaling
target Support native CrossVersionObjectReference and Selector
The first version plans to support CrossVersionObjectReference
first
properties:
objectRef:
description: CrossVersionObjectReference contains enough
information to let you identify the referred resource.
properties:
apiVersion:
description: API version of the referent
type: string
kind:
description: 'Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
name:
description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names'
type: string
required:
- kind
- name
type: object
selector:
description: A label selector is a label query over a set
of resources. The result of matchLabels and matchExpressions
are ANDed. An empty label selector matches all objects.
A null label selector matches no objects.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: A label selector requirement is a selector
that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: operator represents a key's relationship
to a set of values. Valid operators are In,
NotIn, Exists and DoesNotExist.
type: string
values:
description: values is 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.
This array is replaced during a strategic merge
patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value} pairs.
A single {key,value} in the matchLabels map is equivalent
to an element of matchExpressions, whose key field
is "key", the operator is "In", and the values array
contains only "value". The requirements are ANDed.
type: object
type: object
type: object
vertical:
description: VerticalScaling contains the necessary parameters
for VPA scaling Does not contain StorageNode related configuration
properties:
recommenders:
description: Recommender responsible for generating recommendation
for this object. List should be empty (then the default
recommender will generate the recommendation) or contain
exactly one recommender.
items:
description: VerticalPodAutoscalerRecommenderSelector
points to a specific Vertical Pod Autoscaler recommender.
In the future it might pass parameters to the recommender.
properties:
name:
description: Name of the recommender responsible for
generating recommendation for this object.
type: string
required:
- name
type: object
type: array
resourcePolicy:
description: Controls how the autoscaler computes recommended
resources. The resource policy may be used to set constraints
on the recommendations for individual containers. If not
specified, the autoscaler computes recommended resources
for all containers in the pod, without additional constraints.
properties:
containerPolicies:
description: Per-container resource policies.
items:
description: ContainerResourcePolicy controls how
autoscaler computes the recommended resources for
a specific container.
properties:
containerName:
description: Name of the container or DefaultContainerResourcePolicy,
in which case the policy is used by the containers
that don't have their own policy specified.
type: string
controlledResources:
description: Specifies the type of recommendations
that will be computed (and possibly applied)
by VPA. If not specified, the default of [ResourceCPU,
ResourceMemory] will be used.
items:
description: ResourceName is the name identifying
various resources in a ResourceList.
type: string
type: array
controlledValues:
description: Specifies which resource values should
be controlled. The default is "RequestsAndLimits".
enum:
- RequestsAndLimits
- RequestsOnly
type: string
maxAllowed:
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: Specifies the maximum amount of resources
that will be recommended for the container.
The default is no maximum.
type: object
minAllowed:
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: Specifies the minimal amount of resources
that will be recommended for the container.
The default is no minimum.
type: object
mode:
description: Whether autoscaler is enabled for
the container. The default is "Auto".
enum:
- Auto
- "Off"
type: string
type: object
type: array
type: object
updatePolicy:
description: Describes the rules on how changes are applied
to the pods. If not specified, all fields in the `PodUpdatePolicy`
are set to their default values.
properties:
minReplicas:
description: Minimal number of replicas which need to
be alive for Updater to attempt pod eviction (pending
other checks like PDB). Only positive values are allowed.
Overrides global '--min-replicas' flag.
format: int32
type: integer
updateMode:
description: Controls when autoscaler applies changes
to the pod resources. The default is 'Auto'.
enum:
- "Off"
- Initial
- Recreate
- Auto
type: string
type: object
type: object
type: object
type: array
type: object
status:
description: AutoScalerStatus defines the status of a autoscaler
properties:
conditions:
items:
description: AutoScalerCondition defiens the condition of a autoscaler
properties:
lastTransitionTime:
format: date-time
type: string
message:
type: string
reason:
type: string
status:
type: string
type:
type: string
required:
- status
- type
type: object
type: array
type: object
type: object
served: true
storage: true
subresources:
status: {}