325 lines
15 KiB
YAML
325 lines
15 KiB
YAML
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.19.0
|
|
name: horizontalrunnerautoscalers.actions.summerwind.dev
|
|
spec:
|
|
group: actions.summerwind.dev
|
|
names:
|
|
kind: HorizontalRunnerAutoscaler
|
|
listKind: HorizontalRunnerAutoscalerList
|
|
plural: horizontalrunnerautoscalers
|
|
shortNames:
|
|
- hra
|
|
singular: horizontalrunnerautoscaler
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- jsonPath: .spec.minReplicas
|
|
name: Min
|
|
type: number
|
|
- jsonPath: .spec.maxReplicas
|
|
name: Max
|
|
type: number
|
|
- jsonPath: .status.desiredReplicas
|
|
name: Desired
|
|
type: number
|
|
- jsonPath: .status.scheduledOverridesSummary
|
|
name: Schedule
|
|
type: string
|
|
name: v1alpha1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: HorizontalRunnerAutoscaler is the Schema for the horizontalrunnerautoscaler
|
|
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: HorizontalRunnerAutoscalerSpec defines the desired state
|
|
of HorizontalRunnerAutoscaler
|
|
properties:
|
|
capacityReservations:
|
|
items:
|
|
description: |-
|
|
CapacityReservation specifies the number of replicas temporarily added
|
|
to the scale target until ExpirationTime.
|
|
properties:
|
|
effectiveTime:
|
|
format: date-time
|
|
type: string
|
|
expirationTime:
|
|
format: date-time
|
|
type: string
|
|
name:
|
|
type: string
|
|
replicas:
|
|
type: integer
|
|
type: object
|
|
type: array
|
|
githubAPICredentialsFrom:
|
|
properties:
|
|
secretRef:
|
|
properties:
|
|
name:
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
type: object
|
|
maxReplicas:
|
|
description: MaxReplicas is the maximum number of replicas the deployment
|
|
is allowed to scale
|
|
type: integer
|
|
metrics:
|
|
description: Metrics is the collection of various metric targets to
|
|
calculate desired number of runners
|
|
items:
|
|
properties:
|
|
repositoryNames:
|
|
description: |-
|
|
RepositoryNames is the list of repository names to be used for calculating the metric.
|
|
For example, a repository name is the REPO part of `github.com/USER/REPO`.
|
|
items:
|
|
type: string
|
|
type: array
|
|
scaleDownAdjustment:
|
|
description: |-
|
|
ScaleDownAdjustment is the number of runners removed on scale-down.
|
|
You can only specify either ScaleDownFactor or ScaleDownAdjustment.
|
|
type: integer
|
|
scaleDownFactor:
|
|
description: |-
|
|
ScaleDownFactor is the multiplicative factor applied to the current number of runners used
|
|
to determine how many pods should be removed.
|
|
type: string
|
|
scaleDownThreshold:
|
|
description: |-
|
|
ScaleDownThreshold is the percentage of busy runners less than which will
|
|
trigger the hpa to scale the runners down.
|
|
type: string
|
|
scaleUpAdjustment:
|
|
description: |-
|
|
ScaleUpAdjustment is the number of runners added on scale-up.
|
|
You can only specify either ScaleUpFactor or ScaleUpAdjustment.
|
|
type: integer
|
|
scaleUpFactor:
|
|
description: |-
|
|
ScaleUpFactor is the multiplicative factor applied to the current number of runners used
|
|
to determine how many pods should be added.
|
|
type: string
|
|
scaleUpThreshold:
|
|
description: |-
|
|
ScaleUpThreshold is the percentage of busy runners greater than which will
|
|
trigger the hpa to scale runners up.
|
|
type: string
|
|
type:
|
|
description: |-
|
|
Type is the type of metric to be used for autoscaling.
|
|
It can be TotalNumberOfQueuedAndInProgressWorkflowRuns or PercentageRunnersBusy.
|
|
type: string
|
|
type: object
|
|
type: array
|
|
minReplicas:
|
|
description: MinReplicas is the minimum number of replicas the deployment
|
|
is allowed to scale
|
|
type: integer
|
|
scaleDownDelaySecondsAfterScaleOut:
|
|
description: |-
|
|
ScaleDownDelaySecondsAfterScaleUp is the approximate delay for a scale down followed by a scale up
|
|
Used to prevent flapping (down->up->down->... loop)
|
|
type: integer
|
|
scaleTargetRef:
|
|
description: ScaleTargetRef is the reference to scaled resource like
|
|
RunnerDeployment
|
|
properties:
|
|
kind:
|
|
description: Kind is the type of resource being referenced
|
|
enum:
|
|
- RunnerDeployment
|
|
- RunnerSet
|
|
type: string
|
|
name:
|
|
description: Name is the name of resource being referenced
|
|
type: string
|
|
type: object
|
|
scaleUpTriggers:
|
|
description: |-
|
|
ScaleUpTriggers is an experimental feature to increase the desired replicas by 1
|
|
on each webhook requested received by the webhookBasedAutoscaler.
|
|
|
|
This feature requires you to also enable and deploy the webhookBasedAutoscaler onto your cluster.
|
|
|
|
Note that the added runners remain until the next sync period at least,
|
|
and they may or may not be used by GitHub Actions depending on the timing.
|
|
They are intended to be used to gain "resource slack" immediately after you
|
|
receive a webhook from GitHub, so that you can loosely expect MinReplicas runners to be always available.
|
|
items:
|
|
properties:
|
|
amount:
|
|
type: integer
|
|
duration:
|
|
type: string
|
|
githubEvent:
|
|
properties:
|
|
checkRun:
|
|
description: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#check_run
|
|
properties:
|
|
names:
|
|
description: |-
|
|
Names is a list of GitHub Actions glob patterns.
|
|
Any check_run event whose name matches one of patterns in the list can trigger autoscaling.
|
|
Note that check_run name seem to equal to the job name you've defined in your actions workflow yaml file.
|
|
So it is very likely that you can utilize this to trigger depending on the job.
|
|
items:
|
|
type: string
|
|
type: array
|
|
repositories:
|
|
description: |-
|
|
Repositories is a list of GitHub repositories.
|
|
Any check_run event whose repository matches one of repositories in the list can trigger autoscaling.
|
|
items:
|
|
type: string
|
|
type: array
|
|
status:
|
|
type: string
|
|
types:
|
|
description: 'One of: created, rerequested, or completed'
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
pullRequest:
|
|
description: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request
|
|
properties:
|
|
branches:
|
|
items:
|
|
type: string
|
|
type: array
|
|
types:
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
push:
|
|
description: |-
|
|
PushSpec is the condition for triggering scale-up on push event
|
|
Also see https://docs.github.com/en/actions/reference/events-that-trigger-workflows#push
|
|
type: object
|
|
workflowJob:
|
|
description: https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#workflow_job
|
|
type: object
|
|
type: object
|
|
type: object
|
|
type: array
|
|
scheduledOverrides:
|
|
description: |-
|
|
ScheduledOverrides is the list of ScheduledOverride.
|
|
It can be used to override a few fields of HorizontalRunnerAutoscalerSpec on schedule.
|
|
The earlier a scheduled override is, the higher it is prioritized.
|
|
items:
|
|
description: |-
|
|
ScheduledOverride can be used to override a few fields of HorizontalRunnerAutoscalerSpec on schedule.
|
|
A schedule can optionally be recurring, so that the corresponding override happens every day, week, month, or year.
|
|
properties:
|
|
endTime:
|
|
description: EndTime is the time at which the first override
|
|
ends.
|
|
format: date-time
|
|
type: string
|
|
minReplicas:
|
|
description: |-
|
|
MinReplicas is the number of runners while overriding.
|
|
If omitted, it doesn't override minReplicas.
|
|
minimum: 0
|
|
nullable: true
|
|
type: integer
|
|
recurrenceRule:
|
|
properties:
|
|
frequency:
|
|
description: |-
|
|
Frequency is the name of a predefined interval of each recurrence.
|
|
The valid values are "Daily", "Weekly", "Monthly", and "Yearly".
|
|
If empty, the corresponding override happens only once.
|
|
enum:
|
|
- Daily
|
|
- Weekly
|
|
- Monthly
|
|
- Yearly
|
|
type: string
|
|
untilTime:
|
|
description: |-
|
|
UntilTime is the time of the final recurrence.
|
|
If empty, the schedule recurs forever.
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
startTime:
|
|
description: StartTime is the time at which the first override
|
|
starts.
|
|
format: date-time
|
|
type: string
|
|
required:
|
|
- endTime
|
|
- startTime
|
|
type: object
|
|
type: array
|
|
type: object
|
|
status:
|
|
properties:
|
|
cacheEntries:
|
|
items:
|
|
properties:
|
|
expirationTime:
|
|
format: date-time
|
|
type: string
|
|
key:
|
|
type: string
|
|
value:
|
|
type: integer
|
|
type: object
|
|
type: array
|
|
desiredReplicas:
|
|
description: |-
|
|
DesiredReplicas is the total number of desired, non-terminated and latest pods to be set for the primary RunnerSet
|
|
This doesn't include outdated pods while upgrading the deployment and replacing the runnerset.
|
|
type: integer
|
|
lastSuccessfulScaleOutTime:
|
|
format: date-time
|
|
nullable: true
|
|
type: string
|
|
observedGeneration:
|
|
description: |-
|
|
ObservedGeneration is the most recent generation observed for the target. It corresponds to e.g.
|
|
RunnerDeployment's generation, which is updated on mutation by the API Server.
|
|
format: int64
|
|
type: integer
|
|
scheduledOverridesSummary:
|
|
description: |-
|
|
ScheduledOverridesSummary is the summary of active and upcoming scheduled overrides to be shown in e.g. a column of a `kubectl get hra` output
|
|
for observability.
|
|
type: string
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|