跳至主要内容

Actions 运行器控制器的快速入门

在 5 分钟内试用 Actions 运行器控制器。

法律声明

简介

Actions Runner Controller (ARC) 是一个 Kubernetes 运算符,用于编排和扩展 GitHub Actions 的自托管运行器。有关更多信息,请参阅 Kubernetes 文档中的运算符模式

使用 ARC,您可以创建运行器规模集,这些规模集可以根据存储库、组织或企业中运行的工作流数量自动扩展。由于受控运行器可以是短暂的并且基于容器,因此新的运行器实例可以快速、干净地扩展或缩减。有关自动缩放的更多信息,请参阅“使用自托管运行器进行自动缩放”。

您可以使用 Helm 在 Kubernetes 上设置 ARC,然后创建和运行使用运行器规模集的工作流。有关运行器规模集的更多信息,请参阅“使用 Actions Runner Controller 部署运行器规模集”。

先决条件

为了使用 ARC,请确保您拥有以下内容。

  • Kubernetes 集群

    • 对于托管云环境,您可以使用 AKS。有关更多信息,请参阅 Azure 文档中的Azure Kubernetes Service

    • 对于本地设置,您可以使用 minikube 或 kind。有关更多信息,请参阅 minikube 文档中的minikube start和 kind 文档中的kind

      注意

      目前不支持 OpenShift 集群。

  • Helm 3

    • 有关更多信息,请参阅 Helm 文档中的安装 Helm
  • 虽然部署 ARC 不需要,但我们建议您在生产工作流中部署 ARC 之前,确保已实施一种方法来收集和保留来自控制器、侦听器和临时运行器的日志。

安装 Actions Runner Controller

  1. 要安装运算符和自定义资源定义 (CRD) 到您的集群中,请执行以下操作。

    1. 在您的 Helm 图表中,将NAMESPACE值更新为要创建运算符 Pod 的位置。此命名空间必须允许访问 Kubernetes API 服务器。
    2. 安装 Helm 图表。

    以下示例安装了最新版本的图表。要安装特定版本,您可以传递--version参数以及您希望安装的图表的版本。您可以在GitHub 容器注册表中找到版本列表。

    Bash
    NAMESPACE="arc-systems"
    helm install arc \
        --namespace "${NAMESPACE}" \
        --create-namespace \
        oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
    

    有关其他 Helm 配置选项,请参阅 ARC 文档中的values.yaml

  2. 要启用 ARC 对 GitHub 进行身份验证,请生成一个个人访问令牌(经典)。有关更多信息,请参阅对 GitHub API 进行身份验证

配置运行器规模集

  1. 要配置您的运行器规模集,请在您的终端中运行以下命令,使用来自您的 ARC 配置的值。

    运行命令时,请记住以下事项。

    • 仔细更新INSTALLATION_NAME值。您将在工作流中使用安装名称作为runs-on的值。有关更多信息,请参阅“GitHub Actions 的工作流语法”。

    • NAMESPACE值更新为您希望创建运行器 Pod 的位置。

    • GITHUB_CONFIG_URL设置为您的存储库、组织或企业的 URL。这是运行器将所属的实体。

    • 此示例命令安装了最新版本的 Helm 图表。要安装特定版本,您可以使用--version参数传递您希望安装的图表的版本。您可以在GitHub 容器注册表中找到版本列表。

      注意

      • 作为安全最佳实践,请在与包含运算符 Pod 的命名空间不同的命名空间中创建运行器 Pod。
      • 作为安全最佳实践,请创建 Kubernetes 密钥并传递密钥引用。通过 CLI 以纯文本形式传递您的密钥可能会带来安全风险。有关更多信息,请参阅“使用 Actions Runner Controller 部署运行器规模集”。
      Bash
      INSTALLATION_NAME="arc-runner-set"
      NAMESPACE="arc-runners"
      GITHUB_CONFIG_URL="https://github.com/<your_enterprise/org/repo>"
      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
      

      有关其他 Helm 配置选项,请参阅 ARC 文档中的values.yaml

  2. 在您的终端中,运行以下命令以检查您的安装。

    Bash
    helm list -A
    

    您应该会看到类似于以下内容的输出。

    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                                       APP VERSION
    arc             arc-systems     1               2023-04-12 11:45:59.152090536 +0000 UTC deployed        gha-runner-scale-set-controller-0.4.0       0.4.0
    arc-runner-set  arc-runners     1               2023-04-12 11:46:13.451041354 +0000 UTC deployed        gha-runner-scale-set-0.4.0                  0.4.0
    
  3. 要检查管理器 Pod,请在您的终端中运行以下命令。

    Bash
    kubectl get pods -n arc-systems
    

    如果一切安装成功,则 Pod 的状态将显示为**正在运行**。

    NAME                                                   READY   STATUS    RESTARTS   AGE
    arc-gha-runner-scale-set-controller-594cdc976f-m7cjs   1/1     Running   0          64s
    arc-runner-set-754b578d-listener                       1/1     Running   0          12s
    

如果您的安装未成功,请参阅“排查 Actions Runner Controller 错误”以获取故障排除信息。

使用运行器规模集

现在,您将创建并运行一个使用运行器规模集运行器进行简单测试的工作流。

  1. 在一个存储库中,创建一个类似于以下示例的工作流。runs-on值应与安装自动缩放运行器集时使用的 Helm 安装名称匹配。

    有关将工作流添加到存储库的更多信息,请参阅“GitHub Actions 快速入门”。

    YAML
    name: Actions Runner Controller Demo
    on:
      workflow_dispatch:
    
    jobs:
      Explore-GitHub-Actions:
        # You need to use the INSTALLATION_NAME from the previous step
        runs-on: arc-runner-set
        steps:
        - run: echo "🎉 This job uses runner scale set runners!"
    
  2. 将工作流添加到存储库后,手动触发工作流。有关更多信息,请参阅“手动运行工作流”。

  3. 要查看工作流运行时创建的运行器 Pod,请在您的终端中运行以下命令。

    Bash
    kubectl get pods -n arc-runners
    

    成功的输出将类似于以下内容。

    NAMESPACE     NAME                                                  READY   STATUS    RESTARTS      AGE
    arc-runners   arc-runner-set-rmrgw-runner-p9p5n                     1/1     Running   0             21s
    

后续步骤

Actions Runner Controller 可以帮助您有效地管理您的 GitHub Actions 运行器。准备好开始了吗?以下是一些有关使用 ARC 迈出下一步的有用资源

部分内容已从https://github.com/actions/actions-runner-controller/根据 Apache-2.0 许可证改编

Copyright 2019 Moto Ishizawa

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.