问题描述
我设置了一个完全使用Fargate上的Pod的EKS集群。我想以非root用户身份在需要访问S3的容器中运行某些程序。为此,我创建了ServiceAccount
并添加了具有适当S3策略的IAM角色。
我启动了一个准系统吊舱,该吊舱无限期地等待,并使用kubectl exec
作为根下降到容器中的bash。我在那里安装了AWS CLI,并在命令行上尝试了一些s3操作,效果很好,因此pod可以与S3对话并获取数据。
现在,我的实际工作负载以非root用户身份运行,并且必须访问S3上的内容,但是当它尝试访问它时,它失败了,因为令牌的权限设置为600,并且属于root用户。容器中的非root用户也无法sudo
,这是有意的。这意味着我“权限被拒绝”。
是否可以授予非root用户访问Fargate窗格中的serviceaccount令牌的权限,还是必须让我的用户在启动脚本中将sudo
和chmod
令牌授予644 ?
解决方法
通过权限600挂载令牌的事实实际上是a known issue。一种解决方法是指定一个fsGroup
。
类似的事情对我有用:
---
apiVersion: v1
kind: Pod
metadata:
name: foo
labels:
name: foo
spec:
containers:
- name: foo
image: foo:bar
resources:
limits:
memory: "128Mi"
cpu: "500m"
command:
- "/do-something.sh"
securityContext:
fsGroup: 65534
serviceAccountName: serviceAccountWithAccessToS3