Jam*_*zba 8 amazon-ec2 amazon-web-services amazon-iam kubernetes amazon-eks
我们的系统有 EKS kubernetes 集群。我们通过 ssh 登录的 EC2 实例“堡垒主机”来管理它们,配置我们的凭证,并使用 kubectl 来管理集群。
我们不想继续在 EC2 主机上手动配置我们的凭证。
因此,我尝试将 EC2 实例配置文件与具有适当权限的 EC2 主机关联起来以管理集群。然而,它不起作用。
EC2 实例具有与包含此策略的角色关联的 IAM 实例配置文件(完整 EKS 权限)
{
"Sid": "2",
"Effect": "Allow",
"Action": [
"eks:*"
],
"Resource": "*"
}
Run Code Online (Sandbox Code Playgroud)
因此,当我运行以下命令时,我希望能够列出 EKS 上的活动服务:
[ec2-user@ip-10-0-0-72 ~]$ aws eks update-kubeconfig --name my_eks_cluster_name
[ec2-user@ip-10-0-0-72 ~]$ kubectl get svc
error: the server doesn't have a resource type "svc"
Run Code Online (Sandbox Code Playgroud)
该错误表明我没有权限。我通过在主机上配置一些 AWS 凭证证明了这一点:
[ec2-user@ip-10-0-0-72 ~]$ export AWS_ACCESS_KEY_ID=...
[ec2-user@ip-10-0-0-72 ~]$ export AWS_SECRET_ACCESS_KEY=...
[ec2-user@ip-10-0-0-72 ~]$ export AWS_SESSION_TOKEN=...
Run Code Online (Sandbox Code Playgroud)
现在,我尝试列出 svc:
[ec2-user@ip-10-0-0-72 ~]$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 172.20.0.1 <none> 443/TCP 85d
Run Code Online (Sandbox Code Playgroud)
有用
为什么 IAM 实例角色不足以让我通过 kubectl 管理我的 EKS 集群?
感谢 @jordanm 指出 EKS 使用 configmap 来处理授权。
我能够编辑 configmap,添加一个条目以将 EC2 实例配置文件的 IAM 角色映射arn:aws:iam::111111111111:role/eks_management_host_jw_jw到 kubernetessystem:masters组(管理员)
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
mapRoles: |
- groups:
- system:bootstrappers
- system:nodes
rolearn: arn:aws:iam::111111111111:role/eks_node_jw_jw
username: system:node:{{EC2PrivateDNSName}}
- groups: # <-- I added this
- system:masters
rolearn: arn:aws:iam::111111111111:role/eks_management_host_jw_jw
username: system:admin
kind: ConfigMap
metadata:
# ...
Run Code Online (Sandbox Code Playgroud)
小智 5
默认情况下,只有集群创建者有权访问集群内的资源,任何其他用户或角色都没有权限。为了向任何其他用户/角色授予集群权限,EKS 有一个aws-auth在kube-system命名空间中命名的配置映射。您必须mapRoles在其中定义以向其他角色授予权限。mapUsers类似地,应该定义向其他用户授予权限。
例子
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- rolearn: <ARN of instance role (not instance profile)>
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
- system:masters
Run Code Online (Sandbox Code Playgroud)
参考 - https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
| 归档时间: |
|
| 查看次数: |
3113 次 |
| 最近记录: |