@shinyaz

BuildKit rootless は EKS Auto Mode で動かない

約1分

Kaniko がアーカイブされたので BuildKit に移行しようとしたら、EKS Auto Mode のノードで rootless モードが動かなかった。

Output
[rootlesskit:parent] /proc/sys/user/max_user_namespaces needs to be set to non-zero.
[rootlesskit:parent] error: failed to start the child: fork/exec /proc/self/exe: no space left on device

BuildKit rootless は内部で RootlessKit を使い、Linux の user namespaces を必要とする。EKS Auto Mode のノードは AWS 管理の EC2 インスタンスで max_user_namespaces=0 が設定されており、カーネルパラメータの変更もできない。

--oci-worker-no-process-sandbox + seccompProfile: Unconfined の組み合わせも試したが、privileged モードでは --oci-worker-no-process-sandbox が rootless 専用のため can't enable NoProcessSandbox without Rootless エラーになり、rootless モードでは user namespaces が作れないため RootlessKit が起動しない。どちらのパスも通らなかった。

結局 securityContext.privileged: true で動かした。Kaniko が非特権で動作するのに対し、BuildKit は EKS Auto Mode では privileged が必要になるのはセキュリティ面でのトレードオフだ。詳細は番外編の記事にまとめた。

共有する

田原 慎也

田原 慎也

ソリューションアーキテクト @ AWS

AWS ソリューションアーキテクトとして金融業界のお客様を中心に技術支援を行っています。クラウドアーキテクチャや AI/ML に関する学びをこのサイトで発信しています。このサイトの内容は個人の見解であり、所属企業の公式な意見や見解を代表するものではありません。