Kuectl与Gitlab EKS群集错误:您必须登录到服务器(未经授权)



我正试图在从第三方(Gitlab(创建的EKS集群中运行kubectl,我需要使用kubectl访问该集群以安装度量服务器。

但是我不能用kubectl访问这个集群。我做了所有的文件。我已经在集群的IAM角色中设置了信任关系,如上所述:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "eks.amazonaws.com",
"AWS": [
"arn:aws:sts::123456789012:assumed-role/AzureAD_AWS_Admin/me@mycompany.com",
"arn:aws:iam::123456789012:root"
]
},
"Action": "sts:AssumeRole"
}
]
}

我已经像上面的命令一样用外部id测试了假设角色,一切都无缝运行!

aws sts assume-role --role-arn arn:aws:iam::123456789012:role/eksServiceRole --external-id 2ffd8b2c3d8edaf02104a081af4b78d82f6e770f --role-session-name my_test

因此,我按照以下步骤来承担角色并向我的用户授予使用kubectl的权限(对于步骤:如果cluster_creator是IAM角色,则向ConfigMap添加指定用户(。

但当我运行kubectl get pods时,我再次收到以下消息:

error: You must be logged in to the server (Unauthorized)

我在遵循Gitlab指令时遇到了同样的问题。本指南有助于:

在aws服务中->IAM->角色->选择您为gitlab定义的角色。

现在,您可以(1(简单地将用户添加到受信任的实体中,或者(2(仅临时更新它们并编辑aws-auth-config。


(1(在没有外部ID条件的情况下,添加另一个具有帐户ID的对账单:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[account]:user/username"
},
"Action": "sts:AssumeRole"
},
{
// Leave untouched
}
]
}

(2(通过删除externalId条件来编辑受信任实体,并将其更改为您的用户帐户id(您使用该id配置aws-cli(:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[gitlabsaccount]:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "[externalId]"
}
}
}
]
}

->

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[account]:user/username"
},
"Action": "sts:AssumeRole"
}
]
}

然后运行cli命令以使用以下角色重新配置您的kubectl集群访问:

aws --region [region] eks update-kubeconfig --name [cluster-name] --role-arn arn:aws:iam::[account]:role/[role-name]

最后,使用权限将自己添加到aws-auth-config-map:

kubectl edit -n kube-system configmap/aws-auth

然后添加您的帐户:

apiVersion: v1
data:
mapRoles: |
...
mapUsers: |
---
- userarn: arn:aws:iam::[account]:user/[username]
username: [username]
groups:
- system:masters
...

不要忘记更改回角色和外部条件的gitlab用户。

最新更新