如何解决无法使用 Kubernetes Pod 中的 IAM 角色通过直接命令挂载 s3fs
我正在尝试在 EKS 上运行的 Kubernetes 容器内挂载一个 S3 存储桶(使用 IAM 角色而不是密码文件)。
这就是我想要做的,但不起作用:
lifecycle:
postStart:
exec:
command: ["s3fs","-o","use_path_request_style","iam_role=\"<iam-role-name>\"","endpoint=us-west-1",'url="https://s3-us-west-1.amazonaws.com"',"<bucket-name>:<prefix>","<path-to-mount>"]
在容器内运行相同的命令有效,并且我能够看到文件:
s3fs -o use_path_request_style -o iam_role="<iam-role-name>" -o endpoint=us-west-1 -o url="https://s3-us-west-1.amazonaws.com" <bucket-name>:<prefix> <mount-path>
为了克服这个问题,我在容器内用 configMap 创建了一个脚本文件:
apiVersion: v1
kind: ConfigMap
metadata:
name: mount-s3-configmap
data:
mount-s3.sh: |
s3fs -o use_path_request_style -o iam_role="<iam-role-name>" -o endpoint=us-west-1 -o url="https://s3-us-west-1.amazonaws.com" <bucket-name>:<prefix> <mount-path>
并用 postStart
钩子运行这个脚本文件,它完美地挂载了 S3 存储桶
lifecycle:
postStart:
exec:
command: ["/bin/sh","/app/mount-s3.sh"]
我知道这是一个黑客,我不习惯使用它。我不确定,我在第一部分做错了什么,我直接在 s3fs
挂钩中调用 postStart
实用程序命令。
如何直接从 s3fs
挂钩使用 postStart
挂载 S3 存储桶,而不使用此 hack。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。