這邊記錄一下,假設你已經有AWS的EKS叢集,若你想要在不同的地方進行登入時,所需要進行的步驟:
- 確認當前的開發機器上,AWS CLI與eksctl 均已安裝,並且是最新的,而AWS CLI與kubectl的版本有點關係,可以看看這issue , 主要解法就是更新一下CLI並重新 set config
- 如果你是叢集的建立者
- 若要查看你的 AWS CLI 使用者或角色的組態,請執行以下命令:
1
2
3
4
5
6aws sts get-caller-identity
{
"UserId": "XXXXXXXXXXXXXXXXXXXXX",
"Account": "XXXXXXXXXXXX",
"Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser"
}
- 確認你的arn相符
- set你的kubeconfig,注意,需要用正確的IAM身份執行
1
2
3
4
5將 eks-cluster-name 取代為你的叢集名稱。將 aws-region 取代為你的 AWS 區域
aws eks update-kubeconfig --name eks-cluster-name --region aws-region
或者連同ARN一起設定
aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole
- 確認kubeconfig是否已經更新
1
kubectl config view --minify
- 若要確認你的 IAM 使用者或角色是否經驗證
1
kubectl get svc
- 如果你不是叢集建立者
- 查看你的角色,取得你的arn
1
aws sts get-caller-identity
交給你的管理員,透過管理員編輯 aws-auth ConfigMap
1
kubectl edit configmap aws-auth -n kube-system
管理員將新arn填入,格式如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19將 testuser 取代為你的使用者名稱
arn 取代為拿到的arn
mapUsers: |
- userarn: arn:aws:iam::XXXXXXXXXXXX:user/testuser
username: testuser
groups:
- system:masters
將 IAM 角色新增到 mapRoles
將 testrole 取代為你的角色
arn 取代為拿到的arn
mapRoles: |
- rolearn: arn:aws:iam::XXXXXXXXXXXX:role/testrole
username: testrole
groups:
- system:masters
mapRoles 部分中 username 的值僅接受小寫字元。 映射該 IAM 角色時應該略去路徑,因為 rolearn 不支援路徑。
system:masters 群組允許進階使用者存取對任何資源執行任何動作。
打完收工~應該就可以登入了~