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