kubernetes - 允许 Kubernetes 应用程序访问其他 AWS 资源?
问题描述
我想使用 kubernetes 在 AWS EKS 中部署应用程序。我的应用程序需要访问 SQS 和 AWS S3。我不确定如何允许 kubernetes 应用程序访问 SQS 和 S3。我研究了 RBAC,但我猜 RBAC 只提供管理集群、命名空间或 Pod 的访问权限。
我正在尝试将访问密钥和密钥作为秘密传递给环境变量并允许权限。但我认为这不是一个好主意。
有没有其他方法可以创建 IAM 角色并将角色传递给运行应用程序的 pod?如果我尝试在工作节点角色中提供权限,那么共享该节点的所有 pod 都将获得该权限。我需要特定 pod 或容器之类的东西才能获得许可
我还尝试创建 RBAC,其中将角色分配给组,并将组绑定到命名空间。
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: default
data:
mapRoles: |
- rolearn: arn:aws:iam::xxxxxxxxx:role/EksWorkers-NodeInstanceRole-xxxxx
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
- rolearn: arn:aws:iam::xxxxxxxxx:role/iam-role-for-application
groups:
- app-group
和
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: admins
namespace: default
subjects:
- kind: Group
name: app-group
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: admin
apiGroup: rbac.authorization.k8s.io
解决方案
aws-auth
configMap 用于将用户/角色映射到集群。
更新:这是您可以在本地执行此操作的方法
https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/ https://docs.aws.amazon.com/en_pv/eks/latest/userguide/iam-角色换服务accounts.html
要为 pod 赋予 IAM 角色,您可以使用以下工具之一
https://github.com/jtblin/kube2iam
https://github.com/uswitch/kiam
亚马逊团队正在努力将其本地化
https://github.com/aws/containers-roadmap/projects/1?card_filter_query=iam
https://github.com/aws/containers-roadmap/issues/23
推荐阅读
- c# - 实体框架缓存结果
- jquery - 如何在 django 中做一个嵌套的多选树
- node.js - Selenium WebDriver:Chrome 在我的 Mac 上部署后无法工作
- laravel-5 - Vue.js如何在单文件组件vue中使用localstorage
- wpf - 在哪里更新 WPF 可观察对象?
- java - 测试接口还是类?
- r - 如何在 ddply 函数中使用字符串?
- hyperledger-fabric - 如何开发 Web 服务/应用程序来访问超级账本结构链码
- kubernetes - 将 POD 自己的 IP 设置为 hostaliases
- abap - BAPI_ALM_ORDER_MAINTAIN 不间歇工作