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

标签 kubernetes amazon-iam amazon-eks

我想使用 kubernetes 在 AWS EKS 中部署应用程序。我的应用程序需要访问 SQS 和 AWS S3。我不确定如何允许 kubernetes 应用程序访问 SQS 和 S3。我查看了 RBAC,但我猜 RBAC 只提供管理集群、 namespace 或 pod 的访问权限。

我正在尝试将访问 key 和 secret key 作为 secret 传递给环境变量并允许权限。但我认为这不是一个好主意。

有没有其他方法可以创建 IAM 角色并将角色传递给运行应用程序的 pod? 如果我尝试在工作节点角色中提供权限,那么共享该节点的所有 pod 都将获得该权限。我需要像特定 pod 或容器这样的东西将获得许可

我还尝试创建 RBAC,其中将角色分配给组并将组绑定(bind)到命名空间。

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

最佳答案

关于kubernetes - 允许 kubernetes 应用程序访问其他 AWS 资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57668633/

相关文章:

kubernetes - Portworx 到 ETCD 的连接不起作用(http 与 https)

go - 如何使用 go-client 在 kubernetes 中获取 pod 的状态

amazon-web-services - 使用 CloudFormation 模板基于 IAM 的 ssh 到 EC2 实例

kubernetes - 如何找到 kubectl 支持的给定资源类型的字段选择器列表?

kubernetes - Istio Ingress Controller 不保留客户端原始 IP

python - 如何从另一个 AWS 角色代入 AWS 角色?

amazon-web-services - 即使假定的角色具有访问权限,S3 存储桶策略也会出现 PutBucketPolicy 访问被拒绝的问题

amazon-web-services - 无法通过 SSH EKS 工作节点

amazon-web-services - AWS EKS 添加受限于命名空间的用户

kubernetes - 如何配置本地 kubectl 连接到 kubernetes EKS 集群