{"meta":{"title":"Аутентификация ARC в API GitHub","intro":"Проверка подлинности Actions Runner Controller в GitHub API.","product":"GitHub Actions","breadcrumbs":[{"href":"/ru/actions","title":"GitHub Actions"},{"href":"/ru/actions/how-tos","title":"Инструкции"},{"href":"/ru/actions/how-tos/manage-runners","title":"Управление средствами выполнения"},{"href":"/ru/actions/how-tos/manage-runners/use-actions-runner-controller","title":"Контроллер runner действий"},{"href":"/ru/actions/how-tos/manage-runners/use-actions-runner-controller/authenticate-to-the-api","title":"Проверка подлинности в API"}],"documentType":"article"},"body":"# Аутентификация ARC в API GitHub\n\nПроверка подлинности Actions Runner Controller в GitHub API.\n\nВы можете аутентифицироваться Actions Runner Controller (ARC) в GitHub API, используя или GitHub App с personal access token (classic)помощью .\n\n> \\[!NOTE]\n> Вы не можете аутентифицироваться с помощью GitHub App A для пользователей на корпоративном уровне. Дополнительные сведения см. в разделе [Управление доступом к самостоятельно размещенным средствам выполнения с помощью групп](/ru/actions/how-tos/manage-runners/self-hosted-runners/manage-access).\n\n## Аутентификация ARC с помощью GitHub App\n\n1. Создайте компанию GitHub App , принадлежащую организации. Дополнительные сведения см. в разделе [Регистрация приложения GitHub](/ru/apps/creating-github-apps/registering-a-github-app/registering-a-github-app). Настройте GitHub App их следующим образом.\n\n   1. Введите `https://github.com/actions/actions-runner-controller`url-адрес домашней страницы.\n\n   2. В разделе \"Разрешения\" щелкните **разрешения** репозитория. Затем используйте раскрывающееся меню, чтобы выбрать следующие разрешения доступа.\n      * **Администрирование:** чтение и запись\n\n        > \\[!NOTE]\n\n`Administration: Read and write` требуется только при настройке Actions Runner Controller регистрации в области репозитория. Не требуется регистрироваться в области организации.\n\n```\n  * **Метаданные:** только для чтения\n```\n\n1. В разделе \"Разрешения\" щелкните **разрешения** организации. Затем используйте раскрывающееся меню, чтобы выбрать следующие разрешения доступа.\n   * **Локальные средства выполнения:** чтение и запись\n\n2. После создания GitHub Appна странице GitHub Appобратите внимание на значение \"Идентификатор приложения\". Это значение будет использоваться позже.\n\n3. В разделе \"Закрытые ключи\" щелкните **\"Создать закрытый ключ**\" и сохраните `.pem` файл. Этот ключ будет использоваться позже.\n\n4. В меню в левом верхнем углу страницы нажмите кнопку **\"Установить приложение**\" и рядом с организацией нажмите кнопку **\"Установить** \", чтобы установить приложение в вашей организации.\n\n5. После подтверждения разрешений на установку в организации обратите внимание на идентификатор установки приложения. Оно понадобится вам позже. Идентификатор установки приложения можно найти на странице установки приложения, который имеет следующий формат URL-адреса:\n\n   `https://github.com/organizations/ORGANIZATION/settings/installations/INSTALLATION_ID`\n\n6. Зарегистрируйте идентификатор приложения, идентификатор установки и скачанный `.pem` файл закрытого ключа из предыдущих шагов в Kubernetes в качестве секрета.\n\n   Чтобы создать секрет Kubernetes со значениями данных GitHub App, выполните следующую команду.\n\n   > \\[!NOTE]\n   > Создайте секрет в том же пространстве имен, где установлена диаграмма `gha-runner-scale-set` . В этом примере пространство имен соответствует `arc-runners` документации по краткому руководству. Дополнительные сведения см. в разделе [Начните с Actions Runner Controller](/ru/actions/tutorials/use-actions-runner-controller/get-started#configuring-a-runner-scale-set).\n\n   ```bash copy\n   kubectl create secret generic pre-defined-secret \\\n      --namespace=arc-runners \\\n      --from-literal=github_app_id=123456 \\\n      --from-literal=github_app_installation_id=654321 \\\n      --from-literal=github_app_private_key='-----BEGIN RSA PRIVATE KEY-----********'\n   ```\n\n   Затем с помощью `githubConfigSecret` свойства в копии файла передайте имя секрета [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) в качестве ссылки.\n\n   ```yaml\n   githubConfigSecret: pre-defined-secret\n   ```\n\nДополнительные параметры конфигурации Helm см [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) . в репозитории ARC.\n\n## Аутентификация ARC с помощью personal access token (classic)\n\nARC может регистрировать personal access tokens (classic) самостоятельных бегущих.\n\n1. Создайте personal access token (classic) с необходимыми масштабами. Требуемые сферы деятельности различаются в зависимости от того, регистрируете ли вы участников на уровне репозитория или организации . Для получения дополнительной информации о том, как создать personal access token (classic), см. [Управление личными маркерами доступа](/ru/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).\n\n   Ниже приведён список обязательных personal access token телескопов для ARC-бегунов.\n\n   * Средства выполнения репозитория: `repo`\n   * Бегуны по организации: `admin:org`\n\n2. Чтобы создать секрет Kubernetes с значением вашего personal access token (classic), используйте следующую команду.\n\n   > \\[!NOTE]\n   > Создайте секрет в том же пространстве имен, где установлена диаграмма `gha-runner-scale-set` . В этом примере пространство имен соответствует `arc-runners` документации по краткому руководству. Дополнительные сведения см. в разделе [Начните с Actions Runner Controller](/ru/actions/tutorials/use-actions-runner-controller/get-started#configuring-a-runner-scale-set).\n\n   ```bash copy\n   kubectl create secret generic pre-defined-secret \\\n      --namespace=arc-runners \\\n      --from-literal=github_token='YOUR-PAT'\n   ```\n\n3. В копии файла передайте имя секрета [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) в качестве ссылки.\n\n   ```yaml\n   githubConfigSecret: pre-defined-secret\n   ```\n\n   Дополнительные параметры конфигурации Helm см [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) . в репозитории ARC.\n\n## Аутентификация ARC с помощью fine-grained personal access token\n\nARC может регистрировать fine-grained personal access tokens самостоятельных бегущих.\n\n1. Создайте fine-grained personal access token с необходимыми масштабами. Требуемые области различаются в зависимости от того, регистрируются ли модули выполнения на уровне репозитория или организации. Для получения дополнительной информации о том, как создать fine-grained personal access token, см. [Управление личными маркерами доступа](/ru/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token).\n\n   Ниже приведён список обязательных personal access token телескопов для ARC-бегунов.\n\n   * Средства выполнения репозитория:\n     * **Администрирование:** чтение и запись\n\n   * Запуски организации:\n     * **Администрирование:** чтение\n     * **Локальные средства выполнения:** чтение и запись\n\n2. Чтобы создать секрет Kubernetes с значением вашего fine-grained personal access token, используйте следующую команду.\n\n   > \\[!NOTE]\n   > Создайте секрет в том же пространстве имен, где установлена диаграмма `gha-runner-scale-set` . В этом примере пространство имен соответствует `arc-runners` документации по краткому руководству. Дополнительные сведения см. в разделе [Начните с Actions Runner Controller](/ru/actions/tutorials/use-actions-runner-controller/get-started#configuring-a-runner-scale-set).\n\n   ```bash copy\n   kubectl create secret generic pre-defined-secret \\\n      --namespace=arc-runners \\\n      --from-literal=github_token='YOUR-PAT'\n   ```\n\n3. В копии файла передайте имя секрета [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) в качестве ссылки.\n\n   ```yaml\n   githubConfigSecret: pre-defined-secret\n   ```\n\n   Дополнительные параметры конфигурации Helm см [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) . в репозитории ARC.\n\n## Проверка подлинности ARC с помощью секретов хранилища\n\n> \\[!NOTE]\n> Интеграция с хранилищем в настоящее время доступна в публичном предварительном просмотре с поддержкой Azure Key Vault.\n\nНачиная с gha-runner-scal-set версии 0.12.0, ARC поддерживает получение учетных данных GitHub из внешнего хранилища. Интеграция хранилища настраивается на масштабируемый набор runner. Это означает, что некоторые масштабируемые наборы можно запускать с помощью секретов Kubernetes, а другие используют секреты на основе хранилища в зависимости от требований к безопасности и эксплуатации.\n\n### Включение интеграции Хранилища\n\nЧтобы включить интеграцию хранилища для масштабируемого набора runner, выполните следующую команду:\n\n1. \\*\\*\n   `githubConfigSecret` Задайте для поля\\*\\* в `values.yaml` файле имя секретного ключа, хранящегося в хранилище. Это значение должно быть строкой.\n2. **Раскомментируйте и настройте `keyVault` раздел** в `values.yaml` файле с соответствующим поставщиком и сведениями о доступе.\n3. **Предоставьте требуемый сертификат** (`.pfx`) контроллеру и прослушивателю. Это можно сделать: \\*Перестроение образа контроллера с включенным сертификатом или \\*Подключение сертификата в качестве тома в контроллере и прослушивателе с помощью `listenerTemplate` полей и `controllerManager` полей.\n\n### Формат секрета\n\nСекрет, хранящийся в Azure Key Vault, должен быть в формате JSON. Структура зависит от типа используемой проверки подлинности:\n\n#### Пример: токен GitHub\n\n```json\n{\n  \"github_token\": \"TOKEN\"\n}\n```\n\n#### Пример: приложение GitHub\n\n```json\n{\n  \"github_app_id\": \"APP_ID_OR_CLIENT_ID\",\n  \"github_app_installation_id\": \"INSTALLATION_ID\",\n  \"github_app_private_key\": \"PRIVATE_KEY\"\n}\n```\n\n### Настройка интеграции с Хранилищем `values.yaml`\n\nСертификат хранится в виде PFX-файла и подключен к контейнеру по адресу /akv/cert.pfx. Ниже приведен пример настройки раздела keyVault для использования этого сертификата для проверки подлинности:\n\n```yaml\nkeyVault:\n  type: \"azure_key_vault\"\n  proxy:\n    https:\n      url: \"PROXY_URL\"\n      credentialSecretRef: \"PROXY_CREDENTIALS_SECRET_NAME\"\n    http: {}\n    noProxy: []\n  azureKeyVault:\n    clientId: <AZURE_CLIENT_ID>\n    tenantId: <AZURE_TENANT_ID>\n    url: <AZURE_VAULT_URL>\n    certificatePath: \"/akv/cert.pfx\"\n```\n\n### Предоставление сертификата контроллеру и прослушивателю\n\nДля проверки подлинности в хранилище требуется `.pfx` сертификат. Этот сертификат должен быть доступен как контроллеру, так и компонентам прослушивателя во время установки контроллера.\nДля этого можно подключить сертификат в качестве тома с помощью `controllerManager``listenerTemplate` полей в `values.yaml` файле:\n\n```yaml\nvolumes:\n  - name: cert-volume\n    secret:\n      secretName: my-cert-secret\nvolumeMounts:\n  - mountPath: /akv\n    name: cert-volume\n    readOnly: true\n\nlistenerTemplate:\n  volumeMounts:\n    - name: cert-volume\n      mountPath: /akv/certs\n      readOnly: true\n  volumes:\n    - name: cert-volume\n      secret:\n        secretName: my-cert-secret\n```\n\nПриведенный ниже код является примером файла масштабируемого набора `values.yml` .\n\n```yaml\nlistenerTemplate:\n  spec:\n    containers:\n      - name: listener\n        volumeMounts:\n          - name: cert-volume\n            mountPath: /akv\n            readOnly: true\n    volumes:\n      - name: cert-volume\n        secret:\n          secretName: my-cert-secret\n```\n\n## Юридическая информация\n\nЧасти были адаптированы в соответствии с <https://github.com/actions/actions-runner-controller/> лицензией Apache-2.0:\n\n```text\nCopyright 2019 Moto Ishizawa\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```"}