Введение
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
- Дополнительные сведения см. в разделе "Установка Helm" в документации Helm .
-
Хотя развертывание ARC не требуется, рекомендуется реализовать способ сбора и хранения журналов с контроллера, прослушивателей и временных запусков перед развертыванием ARC в рабочих рабочих процессах.
Установка контроллера запуска действий
-
Чтобы установить оператор и пользовательские определения ресурсов (CRD) в кластере, выполните указанные ниже действия.
- В диаграмме Helm обновите
NAMESPACE
значение до нужного расположения модулей pod оператора. Это пространство имен должно разрешить доступ к серверу API Kubernetes. - Установите диаграмму 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
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. - В диаграмме Helm обновите
-
Чтобы включить проверку подлинности ARC в GitHub, создайте personal access token (classic). Дополнительные сведения см. в разделе Проверка подлинности в API GitHub.
Настройка масштабируемого набора runner
-
Чтобы настроить масштабируемый набор 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
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.
-
-
В терминале выполните следующую команду, чтобы проверить установку.
Bash helm list -A
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
-
Чтобы проверить модуль pod диспетчера, выполните следующую команду в терминале.
Bash kubectl get pods -n arc-systems
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.
-
В репозитории создайте рабочий процесс, аналогичный следующему примеру. Значение
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!"
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!"
-
После добавления рабочего процесса в репозиторий вручную активируйте рабочий процесс. Дополнительные сведения см. в разделе «Запуск рабочего процесса вручную».
-
Чтобы просмотреть созданные модули pod runner во время выполнения рабочего процесса, выполните следующую команду из терминала.
Bash kubectl get pods -n arc-runners
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:
- Подробные сведения о проверке подлинности см. в разделе "Проверка подлинности в API GitHub".
- Сведения об использовании средств выполнения ARC в рабочих процессах см. в разделе "Использование модулей runner контроллера runner в рабочем процессе".
- Сведения о развертывании см. в разделе "Развертывание масштабируемых наборов runner с помощью контроллера runner Actions".
Юридическая информация
Части были адаптированы в соответствии с 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.