how to login eks

這邊記錄一下,假設你已經有AWS的EKS叢集,若你想要在不同的地方進行登入時,所需要進行的步驟:

  • 確認當前的開發機器上,AWS CLI與eksctl 均已安裝,並且是最新的,而AWS CLI與kubectl的版本有點關係,可以看看這issue , 主要解法就是更新一下CLI並重新 set config

  • 如果你是叢集的建立者
  1. 若要查看你的 AWS CLI 使用者或角色的組態,請執行以下命令:
    1
    2
    3
    4
    5
    6
    $ aws sts get-caller-identity
    {
    "UserId": "XXXXXXXXXXXXXXXXXXXXX",
    "Account": "XXXXXXXXXXXX",
    "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser"
    }

  1. 確認你的arn相符

  1. 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

  1. 確認kubeconfig是否已經更新
    1
    $ kubectl config view --minify

  1. 若要確認你的 IAM 使用者或角色是否經驗證
    1
    $ kubectl get svc



  • 如果你不是叢集建立者
  1. 查看你的角色,取得你的arn
    1
    $ aws sts get-caller-identity

  1. 交給你的管理員,透過管理員編輯 aws-auth ConfigMap

    1
    $ kubectl edit configmap aws-auth -n kube-system

  2. 管理員將新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 群組允許進階使用者存取對任何資源執行任何動作。

打完收工~應該就可以登入了~

參考連結

aws login