Ошибка создания 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соответствующим образом.
- Решать, включать ли
-
Управление правами
- Следовать принципу наименьших привилегий.
- Планировать права доступа к каталогам заранее.
- Регулярно проверять конфигурации прав.