docker buildkit не поддерживается демоном в кластере AWS EKS kubernetes
Я использую Build Toolkit для создания образа докера для каждого микросервиса.
./build.sh
export DOCKER_BUILDKIT=1
# ....
docker build -t ....
# ...
Это работает на моей машине с докером (18.09.2).
Однако это не работает с Jenkins, я настроил его следующим образом:
EKS снабжен модулем Terraform
module "eks" { source = "terraform-aws-modules/eks/aws" version = "5.0.0" # .... }
Jenkins развернут на EKS (
v1.12.10-eks-ffbd9
,docker://18.6.1
) через эту диаграмму Helm.Плагины Jenkins, определенные в разделе Значения выпуска helm:
- кубернетес:1.18.1
- рабочий процесс:2.33
- рабочий процесс-агрегатор:2.6
- привязка учетных данных:1.19
- git:3.11.0
- синий океан:1.19.0
- bitbucket-oauth: 0,9
Jenkins Pipeline является декларативным и использует шаблон Pod, в котором находится изображение контейнера.
docker:18-dind
и имя контейнераdind
.Это мой Jenkinsfile
pipeline { agent { kubernetes { defaultContainer 'jnlp' yamlFile 'jenkins-pod.yaml' } } stages { stage('Build Backends') { steps { container('dind') { sh 'chmod +x *sh' sh './build.sh -t=dev' } containerLog 'dind' } } }
}
Когда Jenkins выполняет этот конвейер, он показывает эту ошибку:
buildkit not supported by daemon
Я не уверен, какое программное обеспечение мне следует обновить, чтобы docker-buildkit работал? а к какой версии?
- Модуль Terraform eks теперь 5.0.0?
Или
- docker:18-dind образ, который ведет себя как окружение эфемерных рабов Дженкинса?
Или
- плагин Jenkins
kubernetes:1.18.1
?
2 ответа
Согласно источникам docker-ce для запускаbuildkit
сеанс, есть два требования для успешной проверки isSessionSupported
:
dockerCli.ServerInfo().HasExperimental
versions.GreaterThanOrEqualTo(dockerCli.Client().ClientVersion(), "1.31"
Так:
- проверьте версию вашего
docker-cli
библиотека - и является
HasExperimental
опция включена.
Чтобы проверить, поддерживает ли он Experimantal, вы можете запустить из оболочки:
docker version -f '{{.Server.Experimental}}'
Поддержка Docker buildkit вышла из экспериментальной версии 18.09, поэтому вам может потребоваться обновить Docker внутри EKS:
ЭКС (v1.12.10-eks-ffbd9, докер://18.6.1
Или, возможно, у вас есть старый образ (18-dind
должен быть достаточно новым, но более старая версия этого тега, указывающая на 18.06 или 18.03, не будет). Ты можешь попробовать18.09-dind
а также 19-dind
которые должны работать, если сборка действительно происходит внутри dind.