amazon-web-services - 如何允许代入角色从 EC2 连接到 AWS 上的 EKS?
问题描述
我在同一个 AWS 账户中创建了一个 EC2 实例和一个 EKS 集群。为了从 EC2 使用 EKS 集群,我必须授予它必要的权限。
我添加了一个具有一些 EKS 操作权限的实例配置文件角色。它的角色 arn 是arn:aws:iam::11111111:role/ec2-instance-profile-role
仪表板上的 (A)。但在 EC2 实例中,可以找到arn:aws:sts::11111111:assumed-role/ec2-instance-profile-role/i-00000000
(B)。
$ aws sts get-caller-identity
{
"Account": "11111111",
"UserId": "AAAAAAAAAAAAAAA:i-000000000000",
"Arn": "arn:aws:sts::11111111:assumed-role/ec2-instance-profile-role/i-00000000"
}
我还创建了一个aws-auth
配置映射以设置到 EKS 中的 Kubernetes 系统配置中,以允许注册和访问 EC2 实例配置文件角色。我尝试将 A 和 B 都设置到 mapRoles 中,他们都遇到了同样的问题。当我kubectl
在 EC2 上运行命令时:
$ aws eks --region aws-region update-kubeconfig --name eks-cluster-name
$ kubectl config view --minify
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://xxxxxxxxxxxxxxxxxxxxxxxxxxxx.aw1.aws-region.eks.amazonaws.com
name: arn:aws:eks:aws-region:11111111:cluster/eks-cluster-name
contexts:
- context:
cluster: arn:aws:eks:aws-region:11111111:cluster/eks-cluster-name
user: arn:aws:eks:aws-region:11111111:cluster/eks-cluster-name
name: arn:aws:eks:aws-region:11111111:cluster/eks-cluster-name
current-context: arn:aws:eks:aws-region:11111111:cluster/eks-cluster-name
kind: Config
preferences: {}
users:
- name: arn:aws:eks:aws-region:11111111:cluster/eks-cluster-name
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args:
- --region
- aws-region
- eks
- get-token
- --cluster-name
- eks-cluster-name
- --role
- arn:aws:sts::11111111:assumed-role/ec2-instance-profile-role/i-00000000
command: aws
env: null
provideClusterInfo: false
$kubectl get svc
error: You must be logged in to the server (Unauthorized)
我还检查了假定角色的类型。是Service
但不是AWS
。
看来这种类型是必要的。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam:: 333333333333:root" },
"Action": "sts:AssumeRole"
}
}
但是我尝试使用AWS
类型创建一个新的假设角色并将其设置为 Kubernetes 的aws-auth
配置映射,仍然是同样的问题。
如何使用它?我是否需要创建一个新的 IAM 用户才能使用?
解决方案
- name: external-staging
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args:
- exec
- test-dev
- --
- aws
- eks
- get-token
- --cluster-name
- eksCluster-1234
- --role-arn
- arn:aws:iam::3456789002:role/eks-cluster-admin-role-e65f32f
command: aws-vault
env: null
这个配置文件为我工作。它应该是role-arn
&command: aws-vault
推荐阅读
- php - 基于 JSON 对象中的值的 Laravel 关系
- azure - 托管在 Azure 应用服务上的 ASP.NET Core 应用的可重新加载自定义配置
- java - javax.naming.NoInitialContextException:无法实例化类:com.sun.enterprise.naming.SerialInitContextFactory
- swift - Swift蓝牙文件,写入消息并等待响应
- react-native - 了解 React native 中的 padding left 和 position absolute ,布局问题
- r - R / ggplot2 / geom_density:如何在单元格中使用值而不是条目数
- python - 无法在 Robot 框架中使用 ibm_db api 连接到 DB2
- javascript - 如何在 vue-jekyll 中为单个文件组件添加样式标签?
- python - Python - 如何通过路径删除字典中的深层嵌套节点?
- javascript - 计算 JSON 中的值并将其转换为数字形式