mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-11 03:57:01 +00:00
* feat: HorizontalRunnerAutoscaler Webhook server This introduces a Webhook server that responds GitHub `check_run`, `pull_request`, and `push` events by scaling up matched HorizontalRunnerAutoscaler by 1 replica. This allows you to immediately add "resource slack" for future GitHub Actions job runs, without waiting next sync period to add insufficient runners. This feature is highly inspired by https://github.com/philips-labs/terraform-aws-github-runner. terraform-aws-github-runner can manage one set of runners per deployment, where actions-runner-controller with this feature can manage as many sets of runners as you declare with HorizontalRunnerAutoscaler and RunnerDeployment pairs. On each GitHub event received, the webhook server queries repository-wide and organizational runners from the cluster and searches for the single target to scale up. The webhook server tries to match HorizontalRunnerAutoscaler.Spec.ScaleUpTriggers[].GitHubEvent.[CheckRun|Push|PullRequest] against the event and if it finds only one HRA, it is the scale target. If none or two or more targets are found for repository-wide runners, it does the same on organizational runners. Changes: * Fix integration test * Update manifests * chart: Add support for github webhook server * dockerfile: Include github-webhook-server binary * Do not import unversioned go-github * Update README
154 lines
3.7 KiB
YAML
154 lines
3.7 KiB
YAML
# Default values for actions-runner-controller.
|
|
# This is a YAML-formatted file.
|
|
# Declare variables to be passed into your templates.
|
|
|
|
labels: {}
|
|
|
|
replicaCount: 1
|
|
|
|
syncPeriod: 10m
|
|
|
|
# Only 1 authentication method can be deployed at a time
|
|
# Uncomment the configuration you are applying and fill in the details
|
|
authSecret:
|
|
enabled: false
|
|
### GitHub Apps Configuration
|
|
#github_app_id: ""
|
|
#github_app_installation_id: ""
|
|
#github_app_private_key: |
|
|
### GitHub PAT Configuration
|
|
#github_token: ""
|
|
|
|
image:
|
|
repository: summerwind/actions-runner-controller
|
|
# Overrides the manager image tag whose default is the chart appVersion if the tag key is commented out
|
|
tag: "latest"
|
|
dindSidecarRepositoryAndTag: "docker:dind"
|
|
pullPolicy: IfNotPresent
|
|
|
|
kube_rbac_proxy:
|
|
image:
|
|
repository: gcr.io/kubebuilder/kube-rbac-proxy
|
|
tag: v0.4.1
|
|
|
|
imagePullSecrets: []
|
|
nameOverride: ""
|
|
fullnameOverride: ""
|
|
|
|
serviceAccount:
|
|
# Specifies whether a service account should be created
|
|
create: true
|
|
# Annotations to add to the service account
|
|
annotations: {}
|
|
# The name of the service account to use.
|
|
# If not set and create is true, a name is generated using the fullname template
|
|
name: ""
|
|
|
|
podAnnotations: {}
|
|
|
|
podSecurityContext: {}
|
|
# fsGroup: 2000
|
|
|
|
securityContext: {}
|
|
# capabilities:
|
|
# drop:
|
|
# - ALL
|
|
# readOnlyRootFilesystem: true
|
|
# runAsNonRoot: true
|
|
# runAsUser: 1000
|
|
|
|
service:
|
|
type: ClusterIP
|
|
port: 443
|
|
|
|
ingress:
|
|
enabled: false
|
|
annotations: {}
|
|
# kubernetes.io/ingress.class: nginx
|
|
# kubernetes.io/tls-acme: "true"
|
|
hosts:
|
|
- host: chart-example.local
|
|
paths: []
|
|
tls: []
|
|
# - secretName: chart-example-tls
|
|
# hosts:
|
|
# - chart-example.local
|
|
|
|
resources: {}
|
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
|
# choice for the user. This also increases chances charts run on environments with little
|
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
|
# limits:
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
# requests:
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
|
|
autoscaling:
|
|
enabled: false
|
|
minReplicas: 1
|
|
maxReplicas: 100
|
|
targetCPUUtilizationPercentage: 80
|
|
# targetMemoryUtilizationPercentage: 80
|
|
|
|
nodeSelector: {}
|
|
|
|
tolerations: []
|
|
|
|
affinity: {}
|
|
|
|
# Leverage a PriorityClass to ensure your pods survive resource shortages
|
|
# ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
|
|
# PriorityClass: system-cluster-critical
|
|
priorityClassName: ""
|
|
|
|
env: {}
|
|
# http_proxy: "proxy.com:8080"
|
|
# https_proxy: "proxy.com:8080"
|
|
# no_proxy: ""
|
|
|
|
githubWebhookServer:
|
|
enabled: false
|
|
labels: {}
|
|
replicaCount: 1
|
|
syncPeriod: 10m
|
|
secret:
|
|
enabled: false
|
|
### GitHub Webhook Configuration
|
|
#github_webhook_secret_token: ""
|
|
image:
|
|
repository: summerwind/actions-runner-controller
|
|
# Overrides the manager image tag whose default is the chart appVersion if the tag key is commented out
|
|
tag: "latest"
|
|
pullPolicy: IfNotPresent
|
|
imagePullSecrets: []
|
|
nameOverride: ""
|
|
fullnameOverride: ""
|
|
serviceAccount:
|
|
# Specifies whether a service account should be created
|
|
create: true
|
|
# Annotations to add to the service account
|
|
annotations: {}
|
|
# The name of the service account to use.
|
|
# If not set and create is true, a name is generated using the fullname template
|
|
name: ""
|
|
podAnnotations: {}
|
|
podSecurityContext: {}
|
|
# fsGroup: 2000
|
|
securityContext: {}
|
|
resources: {}
|
|
nodeSelector: {}
|
|
tolerations: []
|
|
affinity: {}
|
|
priorityClassName: ""
|
|
service:
|
|
type: NodePort
|
|
ports:
|
|
- port: 80
|
|
targetPort: 8000
|
|
protocol: TCP
|
|
name: http
|
|
#nodePort: someFixedPortForUseWithTerraformCdkCfnEtc
|