--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 operatorframework.io/installed-alongside-3abf7f8c199573bc: openshift-keda/custom-metrics-autoscaler.v2.19.0-2 creationTimestamp: "2026-07-13T18:55:25Z" generation: 1 labels: app.kubernetes.io/name: http-add-on app.kubernetes.io/part-of: keda olm.managed: "true" operators.coreos.com/openshift-custom-metrics-autoscaler-operator.openshift-keda: "" managedFields: - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:controller-gen.kubebuilder.io/version: {} f:operatorframework.io/installed-alongside-3abf7f8c199573bc: {} f:labels: .: {} f:app.kubernetes.io/name: {} f:app.kubernetes.io/part-of: {} f:olm.managed: {} f:spec: f:conversion: .: {} f:strategy: {} f:group: {} f:names: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:scope: {} f:versions: {} manager: catalog operation: Update time: "2026-07-13T18:55:25Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:acceptedNames: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:conditions: k:{"type":"Established"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"NamesAccepted"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} manager: kube-apiserver operation: Update subresource: status time: "2026-07-13T18:55:25Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:operators.coreos.com/openshift-custom-metrics-autoscaler-operator.openshift-keda: {} manager: olm operation: Update time: "2026-07-13T18:55:31Z" name: httpscaledobjects.http.keda.sh resourceVersion: "11710" uid: 174bebeb-d060-4bd1-8fba-1e297f541fa4 spec: conversion: strategy: None group: http.keda.sh names: kind: HTTPScaledObject listKind: HTTPScaledObjectList plural: httpscaledobjects shortNames: - httpso singular: httpscaledobject scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.targetWorkload name: TargetWorkload type: string - jsonPath: .status.targetService name: TargetService type: string - jsonPath: .spec.replicas.min name: MinReplicas type: integer - jsonPath: .spec.replicas.max name: MaxReplicas type: integer - jsonPath: .metadata.creationTimestamp name: Age type: date - jsonPath: .status.conditions[?(@.type=="Ready")].status name: Ready type: string name: v1alpha1 schema: openAPIV3Schema: description: HTTPScaledObject is the Schema for the httpscaledobjects API 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: HTTPScaledObjectSpec defines the desired state of HTTPScaledObject properties: coldStartTimeoutFailoverRef: description: (optional) The name of the failover service to route HTTP requests to when the target is not available properties: port: description: The port to route to format: int32 type: integer portName: description: The port to route to referenced by name type: string service: description: The name of the service to route to type: string timeoutSeconds: default: 30 description: The timeout in seconds to wait before routing to the failover service (Default 30) format: int32 type: integer required: - service type: object x-kubernetes-validations: - message: must define either the 'portName' or the 'port' rule: has(self.portName) != has(self.port) headers: description: |- The custom headers used to route. Once Hosts and PathPrefixes have been matched, it will look for requests which have headers that match all the headers defined in .spec.headers, it will be routed to the Service and Port specified in the scaleTargetRef. Interceptor will take precedence for most specific header match. If the headers can't be matched, then use first one without .spec.headers supplied If that doesn't exist then routing will fail. items: description: Header contains the definition for matching on header name and/or value properties: name: minLength: 1 type: string value: type: string required: - name type: object type: array x-kubernetes-list-map-keys: - name x-kubernetes-list-type: map hosts: description: |- The hosts to route. All requests which the "Host" header matches any .spec.hosts (and the Request Target matches any .spec.pathPrefixes) will be routed to the Service and Port specified in the scaleTargetRef. items: type: string type: array initialCooldownPeriod: description: (optional) Initial period before scaling format: int32 type: integer pathPrefixes: description: |- The paths to route. All requests which the Request Target matches any .spec.pathPrefixes (and the "Host" header matches any .spec.hosts) will be routed to the Service and Port specified in the scaleTargetRef. items: type: string type: array replicas: description: (optional) Replica information properties: max: description: Maximum amount of replicas to have in the deployment (Default 100) format: int32 type: integer min: description: Minimum amount of replicas to have in the deployment (Default 0) format: int32 type: integer type: object scaleTargetRef: description: |- The name of the deployment to route HTTP requests to (and to autoscale). Including validation as a requirement to define either the PortName or the Port properties: apiVersion: type: string kind: type: string name: type: string port: description: The port to route to format: int32 type: integer portName: description: The port to route to referenced by name type: string service: description: The name of the service to route to type: string required: - service type: object x-kubernetes-validations: - message: must define either the 'portName' or the 'port' rule: has(self.portName) != has(self.port) scaledownPeriod: description: (optional) Cooldown period value format: int32 type: integer scalingMetric: description: (optional) Configuration for the metric used for scaling properties: concurrency: description: Scaling based on concurrent requests for a given target properties: targetValue: default: 100 description: Target value for rate scaling type: integer type: object requestRate: description: Scaling based the average rate during an specific time window for a given target properties: granularity: default: 1s description: Time granularity for rate calculation type: string targetValue: default: 100 description: Target value for rate scaling type: integer window: default: 1m description: Time window for rate calculation type: string type: object type: object targetPendingRequests: description: (optional) DEPRECATED (use ScalingMetric instead) Target metric value format: int32 type: integer timeouts: description: (optional) Timeouts that override the global ones properties: conditionWait: description: How long to wait for the backing workload to have 1 or more replicas before connecting and sending the HTTP request (Default is set by the KEDA_CONDITION_WAIT_TIMEOUT environment variable) type: string responseHeader: description: How long to wait between when the HTTP request is sent to the backing app and when response headers need to arrive (Default is set by the KEDA_RESPONSE_HEADER_TIMEOUT environment variable) type: string type: object required: - scaleTargetRef type: object status: description: HTTPScaledObjectStatus defines the observed state of HTTPScaledObject properties: conditions: description: Conditions of the HTTPScaledObject. items: description: Condition contains details for one aspect of the current state of this API Resource. 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. 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 x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map targetService: description: TargetService reflects details about the scaled service. type: string targetWorkload: description: TargetWorkload reflects details about the scaled workload. type: string type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: HTTPScaledObject listKind: HTTPScaledObjectList plural: httpscaledobjects shortNames: - httpso singular: httpscaledobject conditions: - lastTransitionTime: "2026-07-13T18:55:25Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2026-07-13T18:55:25Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1alpha1