Kubernetes serviceAccounts 和 SELinux
Kubernetes serviceAccounts and SELinux
我们是 运行 启用了 SELinux 的 Kubernetes。我们想使用 serviceAccounts。当我禁用 SELinux 时,容器可以按预期读取机密。
但是,当我启用 SELinux 时,我们无法读取容器内的秘密。例如:
localhost$ kubectl exec -it my-pod bash
my-pod$ ls /var/run/secrets/kubernetes.io/serviceaccount/
token
my-pod$ cat /var/run/secrets/kubernetes.io/serviceaccount/token
Permission denied
在 SELinux 中使用 serviceAccounts 的推荐方法是什么?
谢谢,
安德烈
您可能需要运行以下命令在卷目录中正确设置 SELinux 上下文。我有一个未解决的问题可以在将来自动发生:
sudo chcon -Rt svirt_sandbox_file_t /var/lib/kubelet
希望对您有所帮助。
它有一个 selinux 策略规则(至少在 Fedora 23 中)但不幸的是它有一个错字。
semanage fcontext -l | grep /var/lib/kub
/var/lib/kublet(/.*)? all files system_u:object_r:docker_var_lib_t:s0
应该是"kubelet"。我开了个bug here.
我们是 运行 启用了 SELinux 的 Kubernetes。我们想使用 serviceAccounts。当我禁用 SELinux 时,容器可以按预期读取机密。
但是,当我启用 SELinux 时,我们无法读取容器内的秘密。例如:
localhost$ kubectl exec -it my-pod bash
my-pod$ ls /var/run/secrets/kubernetes.io/serviceaccount/
token
my-pod$ cat /var/run/secrets/kubernetes.io/serviceaccount/token
Permission denied
在 SELinux 中使用 serviceAccounts 的推荐方法是什么?
谢谢, 安德烈
您可能需要运行以下命令在卷目录中正确设置 SELinux 上下文。我有一个未解决的问题可以在将来自动发生:
sudo chcon -Rt svirt_sandbox_file_t /var/lib/kubelet
希望对您有所帮助。
它有一个 selinux 策略规则(至少在 Fedora 23 中)但不幸的是它有一个错字。
semanage fcontext -l | grep /var/lib/kub
/var/lib/kublet(/.*)? all files system_u:object_r:docker_var_lib_t:s0
应该是"kubelet"。我开了个bug here.