Ошибка создания pod из-за ошибки конфигурации при использовании пользовательских образов в Tekton
Содержание
Описание проблемыПроявление ошибкиАнализ причиныУстранение неполадокРешениеВариант 1: Настроить сборку образа, чтобы установить пользователя по умолчанию не rootТребованияШагиВариант 2: Изменить конфигурацию выполнения TaskRun или PipelineRunТребованияШагиВариант 3: Изменить глобальную конфигурацию TektonТребованияШагиВариант 4: Изменить определение TaskТребованияШагиПредотвращение ошибокСвязанный контентОписание проблемы
В pipeline Tekton использование образов, предоставляемых продуктом, работает корректно, но при использовании пользовательских образов может возникать ошибка выполнения TaskRun.
Проявление ошибки
-
Выполнение TaskRun завершается с состоянием
False, а причиной являетсяCreateContainerConfigError: -
В событии TaskRun отображается сообщение об ошибке:
-
В соответствующих событиях pod появляется сообщение об ошибке:
Анализ причины
Подобные проблемы обычно вызваны двумя причинами:
- Сам образ содержит ошибки.
- Образ несовместим с конфигурацией Task.
Устранение неполадок
Если проблема возникает только при использовании пользовательских образов, рекомендуется выполнить следующие шаги для диагностики:
-
Проверить, есть ли проблемы с самим образом:
-
Проверить совместимость конфигурации Task с образом:
- Проверить, настроен ли Task с
runAsNonRoot: true. - Проверить, является ли пользователь по умолчанию в образе root или нечисловым пользователем.
- Проверить, настроен ли Task с
Пример конфигурации Task:
Пример конфигурации Containerfile:
Решение
Вариант 1: Настроить сборку образа, чтобы установить пользователя по умолчанию не root
Требования
- Среда и права для пересборки образа.
Шаги
Обратитесь к Adjust Containerfile for Task-Compatible Custom Images для изменения конфигурации Containerfile.
Вариант 2: Изменить конфигурацию выполнения TaskRun или PipelineRun
Требования
- Права на изменение TaskRun или PipelineRun.
Шаги
-
Добавить конфигурацию при отдельном выполнении TaskRun:
-
Добавить конфигурацию при выполнении PipelineRun:
Вариант 3: Изменить глобальную конфигурацию Tekton
Требования
- Права на управление кластером.
- Права на изменение ресурса TektonConfig.
- Внимание: эта конфигурация повлияет на все Tasks.
Шаги
-
Изменить ресурс TektonConfig: Увеличить конфигурацию
spec.pipeline.default-pod-templateследующим образом: -
Проверить, применена ли конфигурация:
Вариант 4: Изменить определение Task
Требования
- Права на изменение Task.
- Внимание: эта конфигурация повлияет на все TaskRun или PipelineRun, использующие этот Task.
Шаги
-
Способ 1: Удалить конфигурацию runAsNonRoot:
-
Способ 2: Добавить конфигурацию runAsUser:
Предотвращение ошибок
-
Сборка образов
- Предпочтительно использовать не root-пользователей при сборке образов.
- Последовательно использовать UID 65532 в качестве не root-пользователя.
- Убедиться, что приложение может нормально работать под не root-пользователем.
-
Конфигурация Task
- Решать, включать ли
runAsNonRootв зависимости от требований безопасности. - При необходимости настраивать
runAsUserсоответствующим образом.
- Решать, включать ли
-
Управление правами
- Следовать принципу наименьших привилегий.
- Планировать права доступа к каталогам заранее.
- Регулярно пересматривать конфигурацию прав.