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