Question: What is the correct way to integrate k8s self-hosted runners using ARC and share runners between organizations? #175452
-
Why are you starting this discussion?Question What GitHub Actions topic or product is this about?ARC (Actions Runner Controller) Discussion DetailsWe have integrated k8s self-hosted runners using this approach: https://docs.github.com/en/actions/tutorials/use-actions-runner-controller/authenticate-to-the-api#authenticating-arc-with-a-github-app We're struggling to understand the correct approach if we want to share runners between multiple organizations.
Anyone familiar enough to know if this is or is not possible? If it is possible any documentation on it? More context in case it helps: We would prefer to share all runner scale sets across all organizations. However, we would also be okay if there was some way to deploy per organization granted we could ensure the runners have the necessary labels for the different feature sets (Dependabot, Dependency Submission, CodeQL, etc). We would rather not deploy multiple ARCs or multiple namespaces in k8s to try and work around this problem but could consider it. |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments 2 replies
-
|
You can’t fully “share” one ARC runner pool across multiple orgs today. ARC ties runners to a GitHub App, and that App must be installed in each org where you want the runners. An enterprise-scoped App can sometimes work, but it’s not officially documented/supported and you may run into permission or naming issues (e.g. Dependabot scale set conflicts). The practical options are:
Right now, the second approach is the most reliable until GitHub/ARC adds first-class multi-org support. |
Beta Was this translation helpful? Give feedback.
-
Solving the Dependabot Name CollisionSince Dependabot requires the runner scale set name to be exactly Each namespace can have a runner scale set named Architecture
|
Beta Was this translation helpful? Give feedback.
-
|
To actually share runners across multiple orgs, register your runner scale sets at the enterprise scope and gate access with enterprise runner groups. ARC must authenticate with a PAT (classic) for enterprise-level runners—GitHub App auth won’t work at enterprise scope. How to set it up (one controller, shared runners):
Then, in workflows, target the scale set by its installation name using runs-on. Dependabot wrinkle: Dependabot requires the scale set installation name to be exactly dependabot and needs Docker-in-Docker. You can deploy one enterprise-level dependabot scale set and expose it to multiple orgs through the runner group. Alternatively, if you prefer per-org isolation, deploy separate namespaces and runner groups—names only need to be unique within a runner group, so you can reuse dependabot across groups. |
Beta Was this translation helpful? Give feedback.
This comment was marked as off-topic.
This comment was marked as off-topic.
-
|
🕒 Discussion Activity Reminder 🕒 This Discussion has been labeled as dormant by an automated system for having no activity in the last 60 days. Please consider one the following actions: 1️⃣ Close as Out of Date: If the topic is no longer relevant, close the Discussion as 2️⃣ Provide More Information: Share additional details or context — or let the community know if you've found a solution on your own. 3️⃣ Mark a Reply as Answer: If your question has been answered by a reply, mark the most helpful reply as the solution. Note: This dormant notification will only apply to Discussions with the Thank you for helping bring this Discussion to a resolution! 💬 |
Beta Was this translation helpful? Give feedback.

To actually share runners across multiple orgs, register your runner scale sets at the enterprise scope and gate access with enterprise runner groups. ARC must authenticate with a PAT (classic) for enterprise-level runners—GitHub App auth won’t work at enterprise scope.
How to set it up (one controller, shared runners):