GitHub Actions の actions-runner-controller の Autoscaling Runner Scale Sets mode を試す
これ
のこれ
GitHub Docs の方にもドキュメントあった。
まとめ(随時更新)
- セットアップに従い、Mac に立てた minikube 上で Runner Scale Set を動かした
- とりあえずリポジトリ単位でやった
- めちゃ簡単に設定、動かすことができた
- 専用の仕組みが GitHub Actions 側に実装されたことにより、Webhook でやる従来の方式より効率よくスケールできてる感ある
README.md を読んでいく
- 新しいオートスケーリングモードは顧客体験をより信頼性の高い安全なものにするために多くの機能強化をもたらす
仕組み
- Helm チャートを使用して ARC[1]がインストールされる。
指定した namespace[2]にcontroller-manager
Pod がデプロイされる。
AutoScalingRunnerSet
コントローラーは GitHub の API を呼び出して、ランナースケールセットが所属するランナーグループ ID を取得する。 -
AutoScalingRunnerSet
コントローラーは、Runner ScaleSet Listener
Pod(後述)を作成する前に、API をもう1回呼び出してActions
Service 上でランナースケールセットを作成する。 -
Runner ScaleSet Listener
Pod は、AutoScaling Listener
コントローラーによってデプロイされる。
Runner ScaleSet Listener
Pod はActions
Service に接続し、ロングポーリングでHTTPS接続を確立する。
Runner ScaleSet Listener
Pod はActions
Service からJob Available
メッセージを受信するまでアイドル状態を維持する。 - ワークフローがトリガーされると、
Actions
Service はrun-on
プロパティがランナースケールセットの名前またはセルフホストランナーのラベルと一致するランナーまたはランナースケールセットに個々のジョブ実行をディスパッチする。 -
Runner ScaleSet Listener
Pod は、Job Available
メッセージを受信すると、希望するカウントまでスケールアップできるかどうかをチェックする。
可能であれば、Runner ScaleSet Listener
Pod はメッセージを承認する。 -
Runner ScaleSet Listener
は、Service Account とそのアカウントにバインドされた Role を使用して、Kubernetes API を通じて HTTPS コールを行い、EphemeralRunner Set
コントローラーに希望のレプリカカウント数を要求する。 -
EphemeralRunner Set
は新しいランナーの作成を試み、EphemeralRunner Controller
はこれらのランナーを登録するために JIT 構成トークンを要求する。
コントローラは、ランナーポッドの作成を試みる。
ポッドのステータスが失敗した場合、コントローラーは最大5回まで再試行する。
24時間後、ランナーがジョブを受け入れない場合、Actions Serviceはジョブの割り当てを解除する。 - ランナーポッドが作成されると、ポッド内のランナーアプリケーションは、JIT 構成トークンを使用して
Actions
Service に自分自身を登録する。
その後、実行に必要なジョブの詳細を受け取るために、別のHTTPSロングポール接続を確立する。 -
Actions
Service はランナー登録を確認し、ジョブ実行の詳細をディスパッチする。 - ジョブ実行中、ランナーはログとジョブ実行のステータスを
Actions
Serviceに継続的に通信して返す。 - ランナーが正常にジョブを完了すると、
EphemeralRunner Controller
はActions
Serviceと連携して、ランナーが削除可能かどうかを確認する。
削除できる場合、Ephemeral RunnerSet
カスタムリソースはランナーを削除する。
用語考察(予想)
-
Actions
Service: GitHub が持つ Actions に関するサービスのこと -
actions-runner-system
Namespace:-
controller-manager
Pod: 各コントローラーを内包する Pod-
AutoScalingRunnerSet
コントローラー:- GitHub API を呼び出し、ランナーグループ IDを取得する
- GitHub API を呼び出し、
Actions
Service で runner scale set を作成する
-
AutoScalingListener
コントローラー:-
Runner ScaleSet Listener
Pod を作成する
-
-
EphemeralRunnerSet
コントローラー:-
Ephemeral RunnerSet
カスタムリソースを操作する - 要求された数まで新しいランナーの作成を試みる
- ジョブが正常に完了したランナーを削除する
-
-
EphemeralRunner
コントローラー:- ランナー用の Pod を作成する
- 新しく作成されたランナーを登録するために、
Actions
Service に登録トークンを要求する - Pod のステータスが失敗した場合、最大 5 回まで再施行する
- 24 時間ランナーがジョブを受け入れなかった場合、登録解除し Pod を削除する
- ジョブが正常に完了したランナーを削除可能かどうか確認する
-
-
Runner ScaleSet Listener
Pod:-
Actions
Service に接続し、ロングポーリングでHTTPS接続を確立する -
Actions
Service からJob Available
メッセージを受信するまでアイドル状態を維持する -
Job Available
メッセージを受信すると、希望するレプリカカウントまでスケールアップできるかどうかをチェックする - スケールアップを承認する場合、
EphemeralRunner Set
コントローラーにレプリカカウントまでスケールアップする要求を出す
-
-
-
actions-runners
Namespace:-
Ephemeral RunnerSet
カスタムリソース:- ランナー Pod を増減させるものっぽい
- 多分
EphemeralRunnerSet
コントローラー、EphemeralRunner
コントローラーに指示されると思われる - 正直コントローラーとの関係がよくわかんない
-
-
Job Available
メッセージ: - JIT 構成トークン:
利点
- actions-runner-controller をインストールする際の前提条件として、cert-manager が不要になった
- ジョブの需要に応じた信頼性の高いスケールアップと、ランナー Pod 数ゼロまでのスケールダウンが可能になった
- api.github.com への API リクエストを削減し、API のレート制限の問題を解決した
- ランナー登録時に GitHub Personal Access Token(PAT)または GitHub App インストールトークンをランナー Pod に渡さないようにした
- ランナー Pod テンプレートをカスタマイズするための柔軟性が向上
セットアップ
minikube でやってみる。
k8s クラスタの用意
minikube 入ってなかった。インスコ。
❯ brew install minikube
必要スペックがわからん。とりあえず初期設定でクラスタ起動する。
てか Apple Silicon Mac で動くのか??
Ubuntu の VM でやった方がいい説もあるな。
❯ minikube start
😄 Darwin 13.3.1 (arm64) 上の minikube v1.30.1
✨ docker ドライバーが自動的に選択されました。他の選択肢: parallels, qemu2, ssh
📌 root 権限を持つ Docker Desktop ドライバーを使用
👍 minikube クラスター中のコントロールプレーンの minikube ノードを起動しています
🚜 ベースイメージを取得しています...
💾 ロード済み Kubernetes v1.26.3 をダウンロードしています...
> preloaded-images-k8s-v18-v1...: 330.52 MiB / 330.52 MiB 100.00% 7.21 Mi
> gcr.io/k8s-minikube/kicbase...: 336.39 MiB / 336.39 MiB 100.00% 6.74 Mi
🔥 docker container (CPUs=2, Memory=5876MB) を作成しています...
🐳 Docker 23.0.2 で Kubernetes v1.26.3 を準備しています...
▪ 証明書と鍵を作成しています...
▪ コントロールプレーンを起動しています...
▪ RBAC のルールを設定中です...
🔗 bridge CNI (コンテナーネットワークインターフェース) を設定中です...
▪ gcr.io/k8s-minikube/storage-provisioner:v5 イメージを使用しています
🔎 Kubernetes コンポーネントを検証しています...
🌟 有効なアドオン: default-storageclass, storage-provisioner
❗ /Users/korosuke613/.asdf/shims/kubectl のバージョンは 1.23.17 で、Kubernetes 1.26.3 と互換性がないかもしれません。
▪ kubectl v1.26.3 が必要ですか? 'minikube kubectl -- get pods -A' を試してみてください
🏄 終了しました!kubectl がデフォルトで「minikube」クラスターと「default」ネームスペースを使用するよう設定されました
gha-runner-scale-set-controller をインストール
これ、上の図のどれに当たるんだ...?
❯ kubectl config current-context
minikube
❯ NAMESPACE="arc-systems"
❯ helm install arc \
--namespace "${NAMESPACE}" \
--create-namespace \
oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
Pulled: ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller:0.4.0
Digest: sha256:e3fc797b2c0603245ea971ece556862810646df6a046a735dd0db6aeae074b09
NAME: arc
LAST DEPLOYED: Tue May 23 13:25:30 2023
NAMESPACE: arc-systems
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing gha-runner-scale-set-controller.
Your release is named arc.
❯ kubectl get pods -n arc-systems
NAME READY STATUS RESTARTS AGE
arc-gha-runner-scale-set-controller-755f574df6-nqqj6 1/1 Running 0 81s
PAT の作成
今回は実験なので PAT でリポジトリ対象にやってみる。
https://github.com/actions/actions-runner-controller/blob/master/docs/authenticating-to-the-github-api.md#deploying-using-pat-authentication を参考にする。
Required Scopes for Repository Runners
- repo (Full control)
のPATを作成。
gha-runner-scale-set をインストール
self-hosted runnerを使うので、private repo である korosuke613/playground-private を使う。
Choose your installation name carefully, you will use it as the value of runs-on in your workflow.
とある。INSTALLATION_NAME
は runs-on
で指定する文字になるらしい。
# Using a Personal Access Token (PAT)
INSTALLATION_NAME="arc-runner-set"
NAMESPACE="arc-runners"
GITHUB_CONFIG_URL="https://github.com/korosuke613/playground-private"
GITHUB_PAT="<PAT>"
helm install "${INSTALLATION_NAME}" \
--namespace "${NAMESPACE}" \
--create-namespace \
--set githubConfigUrl="${GITHUB_CONFIG_URL}" \
--set githubConfigSecret.github_token="${GITHUB_PAT}" \
oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
結果
Pulled: ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set:0.4.0
Digest: sha256:594b49b2f45c81c9d1db1937f3a255eccddb386f60ced72dcc5cff7633361657
NAME: arc-runner-set
LAST DEPLOYED: Tue May 23 20:03:29 2023
NAMESPACE: arc-runners
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing gha-runner-scale-set.
Your release is named arc-runner-set.
❯ helm list -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
arc arc-systems 1 2023-05-23 13:25:30.730628 +0900 JST deployed gha-runner-scale-set-controller-0.4.0 0.4.0
arc-runner-set arc-runners 1 2023-05-23 20:03:29.099945 +0900 JST deployed gha-runner-scale-set-0.4.0 0.4.0
❯ kubectl get pods -n arc-systems
NAME READY STATUS RESTARTS AGE
arc-gha-runner-scale-set-controller-755f574df6-nqqj6 1/1 Running 0 6h39m
arc-runner-set-754b578d-listener 1/1 Running 0 96s
なーんかドキュメントだと同じnamespaceにhelm installしてることになってるけど、そんなことはない。謎。
# ドキュメントの記述
$ helm list -n "${NAMESPACE}"
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
arc arc-systems 1 2023-01-18 10:03:36.610534934 +0000 UTC deployed gha-runner-scale-set-controller-0.4.0 preview
arc-runner-set arc-systems 1 2023-01-18 10:20:14.795285645 +0000 UTC deployed gha-runner-scale-set-0.4.0 0.4.0
korosuke613/playground-private を見に行った。
Runner Scale Set が生えてるぞ!
ワークフローを書いてみる
次のワークフローを追加してみる。
(ドキュメントの yaml、インデントおかしいわ...)
name: Test workflow
on:
workflow_dispatch:
jobs:
test:
runs-on: arc-runner-set
steps:
- name: Hello world
run: echo "Hello world"
修正して実行。
kubectl get pods -A -w
NAMESPACE NAME READY STATUS RESTARTS AGE
arc-runners arc-runner-set-6ddbj-runner-fbx8f 0/1 ContainerCreating 0 0s
arc-systems arc-gha-runner-scale-set-controller-755f574df6-nqqj6 1/1 Running 0 6h50m
arc-systems arc-runner-set-754b578d-listener 1/1 Running 0 12m
おお!arc-runner-set-6ddbj-runner-fbx8f というランナーの pod が立ち上がってる!
無事ジョブも動いた。
❯ kubectl get pods -A -w
...
arc-runners arc-runner-set-6ddbj-runner-fbx8f 1/1 Running 0 22s
arc-runners arc-runner-set-6ddbj-runner-fbx8f 0/1 Completed 0 53s
arc-runners arc-runner-set-6ddbj-runner-fbx8f 0/1 Terminating 0 53s
arc-runners arc-runner-set-6ddbj-runner-fbx8f 1/1 Terminating 1 (2s ago) 54s
arc-runners arc-runner-set-6ddbj-runner-vz5l2 0/1 Pending 0 0s
arc-runners arc-runner-set-6ddbj-runner-vz5l2 0/1 Pending 0 0s
arc-runners arc-runner-set-6ddbj-runner-vz5l2 0/1 ContainerCreating 0 0s
arc-runners arc-runner-set-6ddbj-runner-vz5l2 1/1 Running 0 2s
arc-runners arc-runner-set-6ddbj-runner-vz5l2 1/1 Terminating 0 4s
arc-runners arc-runner-set-6ddbj-runner-vz5l2 0/1 Terminating 0 5s
arc-runners arc-runner-set-6ddbj-runner-vz5l2 0/1 Terminating 0 5s
arc-runners arc-runner-set-6ddbj-runner-vz5l2 0/1 Terminating 0 5s
arc-runners arc-runner-set-6ddbj-runner-fbx8f 0/1 Terminating 1 (32s ago) 84s
arc-runners arc-runner-set-6ddbj-runner-fbx8f 0/1 Terminating 1 (32s ago) 84s
arc-runners arc-runner-set-6ddbj-runner-fbx8f 0/1 Terminating 1 (32s ago) 84s
オートスケールしようとしたのか、arc-runners arc-runner-set-6ddbj-runner-vz5l2
と言う Pod も立ち上がったが、すぐにターミネートされた。
たくさん立ち上がらせてみる
4 並列のワークフローをキックしてみた。
管理?画面の推移
Total assigned jobs が 4 になった
Pod が 3 台立ち上がった時点で、Total running jobs, Total busy runners が 3 になった
Pod が 4 台立ち上がった時点で、Total running jobs, Total busy runners が 4 になった
3 つのジョブが終了し、Total assigned jobs, Total running jobs, Total busy runners が 1 になった
Pod の遷移
5 台の Pod が起動した。1 台は割り当てる job が無くすぐターミネートされた。
kubectl get pods -n arc-runners -w
NAME READY STATUS RESTARTS AGE
arc-runner-set-6ddbj-runner-fl97m 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-fl97m 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-ftm2x 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-fl97m 0/1 ContainerCreating 0 0s
arc-runner-set-6ddbj-runner-ftm2x 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-f8ghd 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-ftm2x 0/1 ContainerCreating 0 0s
arc-runner-set-6ddbj-runner-f8ghd 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-f8ghd 0/1 ContainerCreating 0 0s
arc-runner-set-6ddbj-runner-wphjq 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-wphjq 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-wphjq 0/1 ContainerCreating 0 1s
arc-runner-set-6ddbj-runner-fl97m 1/1 Running 0 3s
arc-runner-set-6ddbj-runner-wphjq 1/1 Running 0 3s
arc-runner-set-6ddbj-runner-f8ghd 1/1 Running 0 4s
arc-runner-set-6ddbj-runner-ftm2x 1/1 Running 0 5s
arc-runner-set-6ddbj-runner-ftm2x 0/1 Completed 0 2m11s
arc-runner-set-6ddbj-runner-ftm2x 0/1 Terminating 0 2m12s
arc-runner-set-6ddbj-runner-6889b 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-6889b 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-6889b 0/1 ContainerCreating 0 0s
arc-runner-set-6ddbj-runner-ftm2x 1/1 Terminating 1 (2s ago) 2m13s
arc-runner-set-6ddbj-runner-ftm2x 0/1 Terminating 1 (4s ago) 2m15s
arc-runner-set-6ddbj-runner-ftm2x 0/1 Terminating 1 (4s ago) 2m15s
arc-runner-set-6ddbj-runner-ftm2x 0/1 Terminating 1 (4s ago) 2m15s
arc-runner-set-6ddbj-runner-6889b 1/1 Running 0 3s
arc-runner-set-6ddbj-runner-6889b 1/1 Terminating 0 3s
arc-runner-set-6ddbj-runner-6889b 0/1 Terminating 0 6s
arc-runner-set-6ddbj-runner-6889b 0/1 Terminating 0 6s
arc-runner-set-6ddbj-runner-6889b 0/1 Terminating 0 6s
arc-runner-set-6ddbj-runner-wphjq 0/1 Completed 0 2m24s
arc-runner-set-6ddbj-runner-wphjq 0/1 Terminating 0 2m24s
arc-runner-set-6ddbj-runner-j75q7 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-j75q7 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-j75q7 0/1 ContainerCreating 0 0s
arc-runner-set-6ddbj-runner-fl97m 0/1 Completed 0 2m25s
arc-runner-set-6ddbj-runner-fl97m 0/1 Terminating 0 2m25s
arc-runner-set-6ddbj-runner-q72ts 0/1 Pending 0 0s
arc-runner-set-6ddbj-runner-q72ts 0/1 Pending 0 1s
arc-runner-set-6ddbj-runner-q72ts 0/1 ContainerCreating 0 1s
arc-runner-set-6ddbj-runner-wphjq 1/1 Terminating 1 (3s ago) 2m26s
arc-runner-set-6ddbj-runner-wphjq 0/1 Terminating 1 (4s ago) 2m27s
arc-runner-set-6ddbj-runner-wphjq 0/1 Terminating 1 (4s ago) 2m27s
arc-runner-set-6ddbj-runner-wphjq 0/1 Terminating 1 (4s ago) 2m27s
arc-runner-set-6ddbj-runner-j75q7 1/1 Running 0 3s
arc-runner-set-6ddbj-runner-fl97m 1/1 Terminating 1 (3s ago) 2m27s
arc-runner-set-6ddbj-runner-q72ts 1/1 Running 0 3s
arc-runner-set-6ddbj-runner-fl97m 0/1 Terminating 1 (4s ago) 2m28s
arc-runner-set-6ddbj-runner-fl97m 0/1 Terminating 1 (4s ago) 2m28s
arc-runner-set-6ddbj-runner-fl97m 0/1 Terminating 1 (4s ago) 2m28s
arc-runner-set-6ddbj-runner-f8ghd 0/1 Completed 0 2m28s
arc-runner-set-6ddbj-runner-j75q7 1/1 Terminating 0 5s
arc-runner-set-6ddbj-runner-q72ts 1/1 Terminating 0 4s
arc-runner-set-6ddbj-runner-f8ghd 0/1 Terminating 0 2m29s
arc-runner-set-6ddbj-runner-f8ghd 1/1 Terminating 1 (3s ago) 2m30s
arc-runner-set-6ddbj-runner-f8ghd 0/1 Terminating 1 (4s ago) 2m31s
arc-runner-set-6ddbj-runner-f8ghd 0/1 Terminating 1 (4s ago) 2m31s
arc-runner-set-6ddbj-runner-f8ghd 0/1 Terminating 1 (4s ago) 2m31s
arc-runner-set-6ddbj-runner-j75q7 0/1 Terminating 0 8s
arc-runner-set-6ddbj-runner-j75q7 0/1 Terminating 0 8s
arc-runner-set-6ddbj-runner-j75q7 0/1 Terminating 0 8s
arc-runner-set-6ddbj-runner-q72ts 0/1 Terminating 0 7s
arc-runner-set-6ddbj-runner-q72ts 0/1 Terminating 0 8s
arc-runner-set-6ddbj-runner-q72ts 0/1 Terminating 0 8s
後片付け
❯ helm list -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
arc arc-systems 1 2023-05-23 13:25:30.730628 +0900 JST deployed gha-runner-scale-set-controller-0.4.0 0.4.0
arc-runner-set arc-runners 1 2023-05-23 20:03:29.099945 +0900 JST deployed gha-runner-scale-set-0.4.0 0.4.0
❯ helm uninstall arc-runner-set -n arc-runners
release "arc-runner-set" uninstalled
❯ helm uninstall arc -n arc-systems
release "arc" uninstalled
❯ minikube stop
✋ 「minikube」ノードを停止しています...
🛑 SSH 経由で「minikube」の電源をオフにしています...
🛑 1 台のノードが停止しました。
ログを見てみる
Contoller logs
❯ kubectl logs -n "arc-systems" -l app.kubernetes.io/name=gha-runner-scale-set-controller
2023-05-23T11:17:44Z INFO EphemeralRunner Cleaning up the runner jitconfig secret {"ephemeralrunner": "arc-runners/arc-runner-set-6ddbj-runner-fbx8f"}
2023-05-23T11:17:44Z INFO EphemeralRunner Secret is deleted {"ephemeralrunner": "arc-runners/arc-runner-set-6ddbj-runner-fbx8f"}
2023-05-23T11:17:44Z INFO EphemeralRunner Cleaning up runner linked pods {"ephemeralrunner": "arc-runners/arc-runner-set-6ddbj-runner-fbx8f"}
2023-05-23T11:17:44Z INFO EphemeralRunner Runner-linked pods are deleted {"ephemeralrunner": "arc-runners/arc-runner-set-6ddbj-runner-fbx8f"}
2023-05-23T11:17:44Z INFO EphemeralRunner Cleaning up runner linked secrets {"ephemeralrunner": "arc-runners/arc-runner-set-6ddbj-runner-fbx8f"}
2023-05-23T11:17:44Z INFO EphemeralRunner Runner-linked secrets are deleted {"ephemeralrunner": "arc-runners/arc-runner-set-6ddbj-runner-fbx8f"}
2023-05-23T11:17:44Z INFO EphemeralRunner Removing finalizer {"ephemeralrunner": "arc-runners/arc-runner-set-6ddbj-runner-fbx8f"}
2023-05-23T11:17:44Z INFO EphemeralRunnerSet Ephemeral runner counts {"ephemeralrunnerset": "arc-runners/arc-runner-set-6ddbj", "pending": 0, "running": 0, "finished": 0, "failed": 0, "deleting": 0}
2023-05-23T11:17:44Z INFO EphemeralRunnerSet Scaling comparison {"ephemeralrunnerset": "arc-runners/arc-runner-set-6ddbj", "current": 0, "desired": 0}
2023-05-23T11:17:44Z INFO EphemeralRunner Successfully removed finalizer after cleanup {"ephemeralrunner": "arc-runners/arc-runner-set-6ddbj-runner-fbx8f"}
フルのログ
Runner set listener logs
❯ kubectl logs -n "arc-systems" -l actions.github.com/scale-set-namespace=arc-systems -l actions.github.com/scale-set-name=arc-runner-set
2023-05-23T11:17:06Z INFO service process message. {"messageId": 4, "messageType": "RunnerScaleSetJobMessages"}
2023-05-23T11:17:06Z INFO service current runner scale set statistics. {"available jobs": 0, "acquired jobs": 0, "assigned jobs": 0, "running jobs": 0, "registered runners": 1, "busy runners": 0, "idle runners": 0}
2023-05-23T11:17:06Z INFO service process batched runner scale set job messages. {"messageId": 4, "batchSize": 1}
2023-05-23T11:17:06Z INFO service job completed message received. {"RequestId": 16, "Result": "succeeded", "RunnerId": 27, "RunnerName": "arc-runner-set-6ddbj-runner-fbx8f"}
2023-05-23T11:17:06Z INFO auto_scaler acquiring jobs. {"request count": 0, "requestIds": "[]"}
2023-05-23T11:17:06Z INFO service try scale runner request up/down base on assigned job count {"assigned job": 0, "decision": 0, "min": 0, "max": 2147483647, "currentRunnerCount": 1}
2023-05-23T11:17:06Z INFO KubernetesManager Created merge patch json for EphemeralRunnerSet update {"json": "{\"spec\":{\"replicas\":null}}"}
2023-05-23T11:17:06Z INFO KubernetesManager Ephemeral runner set scaled. {"namespace": "arc-runners", "name": "arc-runner-set-6ddbj", "replicas": 0}
2023-05-23T11:17:07Z INFO auto_scaler deleted message. {"messageId": 4}
2023-05-23T11:17:07Z INFO service waiting for message...
フルのログ
設定等
オートスケール
charts/gha-runner-scale-set/values.yaml で調整可能っぽい。
デフォは 0 ~ 5 台。