BuildKit rootless は EKS Auto Mode で動かない
Kaniko がアーカイブされたので BuildKit に移行しようとしたら、EKS Auto Mode のノードで rootless モードが動かなかった。
[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 deviceBuildKit 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 が必要になるのはセキュリティ面でのトレードオフだ。詳細は番外編の記事にまとめた。
