Skip to main content

Краткое руководство по контроллеру запуска действий

Попробуйте использовать Actions Runner Controller за 5 минут.

Юридическое уведомление

Введение

Actions Runner Controller (ARC) — это оператор Kubernetes, который управляет и масштабирует локальные средства выполнения для GitHub Actions. Дополнительные сведения см . в разделе "Шаблон оператора" в документации по Kubernetes.

С помощью ARC можно создавать масштабируемые наборы runner, которые автоматически масштабируются на основе количества рабочих процессов, выполняемых в репозитории, организации или организации. Так как управляемые средства выполнения могут быть временными и основаны на контейнерах, новые экземпляры бегунов могут быстро увеличивать или уменьшать масштаб. Дополнительные сведения об автомасштабировании см. в разделе "Автомасштабирование с помощью локальных средств выполнения".

Вы можете настроить ARC в Kubernetes с помощью Helm, а затем создать и запустить рабочий процесс, использующий масштабируемые наборы runner. Дополнительные сведения о масштабируемых наборах runner см. в разделе "Развертывание масштабируемых наборов runner с помощью контроллера runner Actions".

Необходимые компоненты

Чтобы использовать ARC, убедитесь, что у вас есть следующее.

  • Кластер Kubernetes.

    • Для управляемой облачной среды можно использовать AKS. Дополнительные сведения см. в Служба Azure Kubernetes документации по Azure.

    • Для локальной настройки можно использовать миникуб или тип. Дополнительные сведения см. в документации minikube по миникубе и в документации по типу.

      Note

      Кластеры OpenShift в настоящее время не поддерживаются.

  • Helm 3

  • Хотя развертывание ARC не требуется, рекомендуется реализовать способ сбора и хранения журналов с контроллера, прослушивателей и временных запусков перед развертыванием ARC в рабочих рабочих процессах.

Установка контроллера запуска действий

  1. Чтобы установить оператор и пользовательские определения ресурсов (CRD) в кластере, выполните указанные ниже действия.

    1. В диаграмме Helm обновите NAMESPACE значение до нужного расположения модулей pod оператора. Это пространство имен должно разрешить доступ к серверу API Kubernetes.
    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 см values.yaml . в документации по ARC.

  2. Чтобы включить проверку подлинности ARC в GitHub, создайте personal access token (classic). Дополнительные сведения см. в разделе Проверка подлинности в API GitHub.

Настройка масштабируемого набора runner

  1. Чтобы настроить масштабируемый набор runner, выполните следующую команду в терминале, используя значения из конфигурации ARC.

    При выполнении команды помните следующее.

    • INSTALLATION_NAME Тщательно обновите значение. Имя установки будет использоваться в качестве значения runs-on в рабочих процессах. Дополнительные сведения см. в разделе «Синтаксис рабочего процесса для GitHub Actions».

    • NAMESPACE Обновите значение до расположения, в которое нужно создать модули pod runner.

    • Задайте GITHUB_CONFIG_URL URL-адрес репозитория, организации или предприятия. Это сущность, к которой будут принадлежать средства выполнения.

    • В этом примере команда устанавливает последнюю версию диаграммы Helm. Чтобы установить определенную версию, можно передать --version аргумент с версией диаграммы, которую вы хотите установить. Список выпусков можно найти в реестре контейнеров GitHub.

      Note

      • Рекомендуется создать модули pod runner в другом пространстве имен, отличном от пространства имен, содержащего модули pod оператора.
      • В качестве рекомендации по обеспечению безопасности создайте секреты Kubernetes и передайте ссылки на секреты. Передача секретов в виде обычного текста через CLI может представлять угрозу безопасности. Дополнительные сведения см. в разделе "Развертывание масштабируемых наборов runner с помощью контроллера runner Actions".
      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 см values.yaml . в документации по ARC.

  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
    

Если установка не прошла успешно, см. раздел "Устранение неполадок с ошибками контроллера запуска действий" для устранения неполадок.

Использование масштабируемых наборов runner

Теперь вы создадите и запустите простой тестовый рабочий процесс, использующий средство выполнения масштабируемого набора runner.

  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 runner во время выполнения рабочего процесса, выполните следующую команду из терминала.

    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.