Создайте Git Secret для PAC
Когда вы интегрируете репозиторий с PAC через Webhook (не через GitHub App), ресурс Repository ссылается на Kubernetes Secret, который хранит две группы учетных данных:
- Git access token — PAC использует его для вызова API Git-провайдера (чтение метаданных репозитория, публикация проверок commit/status, управление webhook).
- Webhook secret — Git-провайдер включает его при доставке события, чтобы PAC мог проверить, что запрос пришел из ожидаемого источника.
Это руководство создает этот Secret для режима GitHub Webhook и режима GitLab Webhook. Режиму GitHub App не нужен отдельный Secret для каждого репозитория, поскольку контроллер использует учетные данные App на уровне кластера.
Содержание
Как PAC читает SecretПредварительные требованияШаг 1: Создайте Git access tokenШаг 2: Выберите webhook secretШаг 3: Создайте Kubernetes SecretШаг 4: Ссылайтесь на Secret из RepositoryПроверкаОбновление учетных данныхСледующие шагиКак PAC читает Secret
PAC ищет Secret через поля Repository.spec.git_provider:
- Если в
secretполеkeyопущено, PAC читаетprovider.token. - Если в
webhook_secretполеkeyопущено, PAC читаетwebhook.secret. secret.nameиwebhook_secret.nameмогут указывать на один и тот жеSecretили на два разных.
Secret должен находиться в том же namespace, что и ресурс Repository.
Предварительные требования
- Учетная запись Git-провайдера с правом создавать Personal Access Token (PAT) для репозитория.
- Целевой namespace для ресурса Repository.
- Доступ
kubectlк этому namespace.
Шаг 1: Создайте Git access token
Создайте PAT у вашего Git-провайдера:
Скопируйте токен сразу. Большинство провайдеров показывают его только один раз.
Шаг 2: Выберите webhook secret
Webhook secret — это общая строка между PAC и Git-провайдером. PAC проверяет входящие события по этому значению.
Можно использовать любую достаточно случайную строку, например сгенерированный пароль из менеджера паролей. Одно и то же значение должно храниться в Kubernetes Secret и быть настроено в webhook Git-провайдера.
Если хотите сгенерировать его из командной строки, один из вариантов — openssl:
Пример вывода:
Webhook secret необязателен, но настоятельно рекомендуется. Без него любой, кто узнает webhook URL, сможет подделывать события.
Шаг 3: Создайте Kubernetes Secret
Создайте один Secret, который хранит оба значения под ключами по умолчанию. Замените:
-
<git-access-token>на токен Git-провайдера из шага 1. -
<webhook-secret>на общую строку webhook secret из шага 2.
Пример вывода:
Либо создайте его из манифеста:
Шаг 4: Ссылайтесь на Secret из Repository
В ресурсе Repository укажите и git_provider.secret, и git_provider.webhook_secret на только что созданный Secret. Поскольку используются ключи по умолчанию, поле key можно опустить:
Если вы сохранили учетные данные под нестандартными ключами, явно задайте key в обоих полях.
Проверка
Убедитесь, что Secret существует и содержит оба ключа:
Пример вывода:
После создания ресурса Repository PAC записывает успешный поиск в логах. Просмотрите последние записи логов контроллера в namespace PAC:
Ошибка аутентификации ("401 Unauthorized", "invalid token") в логах контроллера указывает на неверный токен или токен с недостаточными scopes; см. Common Issues для полного контрольного списка по устранению неполадок.
Обновление учетных данных
Выполните ротацию токена, обновив Secret на месте:
PAC читает Secret при каждом входящем событии, поэтому перезапуск контроллера не требуется.