允许kubernetes应用程序访问其他AWS资源吗?

时间:2019-08-27 06:16:58

标签: kubernetes amazon-iam aws-eks

我想使用kubernetes在AWS EKS中部署应用程序。我的应用程序需要访问SQS和AWS S3。我不确定如何允许kubernetes应用程序访问SQS和S3。我研究了RBAC,但我猜RBAC仅提供访问权限来管理集群,名称空间或Pod。

我试图将访问密钥和秘密密钥作为秘密传递给环境变量并允许权限。但是我认为这不是一个好主意。

是否还有其他方法,例如创建IAM角色并将角色传递给运行应用程序的Pod? 如果我尝试在worker节点角色中提供许可,则共享该节点的所有pod都将获得该许可。我需要像特定的容器或容器这样的东西才能获得许可

我还尝试创建RBAC,在该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